The data shown in the above graph was taken on April 29, 2000:


The code used:

ENTRY(default_halt)
	sti
	hlt					/* XXX:	 until a wakeup IPI */
	ret

Note that I did NOT add the APIC line, as this is taken care of in:

idle_loop:

 ...

2:
	/* enable intrs for a halt */
	movl	$0, lapic_tpr			/* 1st candidate for an INT */
	call	*_hlt_vector			/* wait for interrupt */
	cli
	jmp	idle_loop


The hardware:

CPU: Pentium III Xeon (550.15-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0x673  Stepping = 3
  Features=0x383fbff
real memory  = 1073717248 (1048552K bytes)
avail memory = 1041149952 (1016748K bytes)

FreeBSD/SMP: Multiprocessor motherboard
 cpu0 (BSP): apic id:  3, version: 0x00040011, at 0xfee00000
 cpu1 (AP):  apic id:  0, version: 0x00040011, at 0xfee00000
 cpu2 (AP):  apic id:  1, version: 0x00040011, at 0xfee00000
 cpu3 (AP):  apic id:  2, version: 0x00040011, at 0xfee00000
 io0 (APIC): apic id:  4, version: 0x003f0013, at 0xfec00000

Notes on the 4 cpu / memory file system data:

 data taken at '-j8', '-j16', 'j32'.

 environment:
	running from shell inside emacs & X11R6.

 files systems:
	/dev/da0s1f on /usr (ufs, local, soft-updates)

	mfs:76803 on /usr/src (mfs, asynchronous, local)
	mfs:76805 on /usr/obj (mfs, asynchronous, local)