Weird performance behaviour in 7.0

bruce at zuhause.mn.org bruce at zuhause.mn.org
Thu Jan 24 19:26:23 PST 2008


Richard Todd writes:
 > Bruce Albrecht <bruce at zuhause.org> writes:
 > 
 > > This is my first Q6600 based system, and my first 7.0 system, and my
 > > first AMD-64 system and my first ZFS base system, and I'm seeing
 > > something really strange.  Every now and then, processes run really
 > > slowly, like at 1/600th (or worse) than it ought to, but it racks up
 > > the CPU time as though it's running full tilt.
 > >
 > > For example, I have this little test program that just does a tight
 > > loop, and most times, it takes about 3 seconds to complete, but right
 > > now, it's taking about 2000 seconds to complete. Right now, it's
 > > consistently running slow, but sometimes it will run slow, but I can
 > > terminate it and start another one which will run at normal speed.
 > 
 > This wouldn't by any chance be an Intel 965-chipset-based motherboard
 > with 4G or more of memory, would it?  Because there's an interesting
 > little bug in the BIOS on some of those boards which causes the
 > cache-control registers to incorrectly declare a chunk of main memory
 > as uncacheable.  This results in random slowdowns depending on whether
 > your process lands in the "bad" zone of memory or not.  See 
 > http://article.gmane.org/gmane.os.freebsd.stable/50135/ for more details. 

Bingo!  This is a Intel DG965WH with 4 GB of memory.  I don't think I
can downgrade to the 1669 firmware because of the processor I'm
using.  The Fedora thread says that there's a hack to do the following
in linux to fix the "bad" zone

echo "base=0x1a8000000 size=0x4000000 type=write-back" >| /proc/mtrr

What would be the FreeBSD equivalent?  The output of memcontrol list is


0x0/0x10000 BIOS write-back fixed-base fixed-length set-by-firmware active
0x10000/0x10000 BIOS write-back fixed-base fixed-length set-by-firmware active
0x20000/0x10000 BIOS write-back fixed-base fixed-length set-by-firmware active
0x30000/0x10000 BIOS write-back fixed-base fixed-length set-by-firmware active
0x40000/0x10000 BIOS write-back fixed-base fixed-length set-by-firmware active
0x50000/0x10000 BIOS write-back fixed-base fixed-length set-by-firmware active
0x60000/0x10000 BIOS write-back fixed-base fixed-length set-by-firmware active
0x70000/0x10000 BIOS write-back fixed-base fixed-length set-by-firmware active
0x80000/0x4000 BIOS write-back fixed-base fixed-length set-by-firmware active
0x84000/0x4000 BIOS write-back fixed-base fixed-length set-by-firmware active
0x88000/0x4000 BIOS write-back fixed-base fixed-length set-by-firmware active
0x8c000/0x4000 BIOS write-back fixed-base fixed-length set-by-firmware active
0x90000/0x4000 BIOS write-back fixed-base fixed-length set-by-firmware active
0x94000/0x4000 BIOS write-back fixed-base fixed-length set-by-firmware active
0x98000/0x4000 BIOS write-back fixed-base fixed-length set-by-firmware active
0x9c000/0x4000 BIOS write-back fixed-base fixed-length set-by-firmware active
0xa0000/0x4000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xa4000/0x4000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xa8000/0x4000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xac000/0x4000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xb0000/0x4000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xb4000/0x4000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xb8000/0x4000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xbc000/0x4000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xc0000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xc1000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xc2000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xc3000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xc4000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xc5000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xc6000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xc7000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xc8000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xc9000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xca000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xcb000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xcc000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xcd000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xce000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xcf000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xd0000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xd1000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xd2000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xd3000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xd4000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xd5000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xd6000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xd7000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xd8000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xd9000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xda000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xdb000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xdc000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xdd000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xde000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xdf000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xe0000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xe1000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xe2000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xe3000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xe4000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xe5000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xe6000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xe7000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xe8000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xe9000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xea000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xeb000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xec000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xed000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xee000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xef000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xf0000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xf1000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xf2000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xf3000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xf4000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xf5000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xf6000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xf7000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xf8000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xf9000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xfa000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xfb000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xfc000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xfd000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xfe000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0xff000/0x1000 BIOS uncacheable fixed-base fixed-length set-by-firmware active
0x0/0xf080000000 BIOS write-back set-by-firmware active bogus
0x80000000/0xf040000000 BIOS write-back set-by-firmware active bogus
0xc0000000/0xf010000000 BIOS write-back set-by-firmware active bogus
0xcf800000/0xf000800000 BIOS uncacheable set-by-firmware active bogus
0xcf700000/0xf000100000 BIOS uncacheable set-by-firmware active bogus


More information about the freebsd-current mailing list