[PATCH] Mantaining turnstile aligned to 128 bytes in i386 CPUs

Suleiman Souhlal ssouhlal at FreeBSD.org
Thu Jan 18 08:04:29 UTC 2007


Bruce Evans wrote:
> On Wed, 17 Jan 2007, Matthew Dillon wrote:
>>    * No extranious memory writes, no uncached extranious memory reads.
>>      If you do any writes to memory other then to the copy destination
>>      in your copy loop you screw up the cpu's write fifo and destroy
>>      performance.
>>
>>      Systems are so sensitive to this that it is even better to spend the
>>      time linearly mapping large copy spaces into KVM and do a single
>>      block copy then to have an inner per-PAGE loop.
> 
> 
> I haven't tried this, but have seen and partly worked sensitivity to
> linear KVA maps not being physically (non)linear enough.  Some CPUs
> and/or memory systems are remarkably sensitive to bank interleave.
> FreeBSD's page coloring doesn't know anything about banks, and
> accidentally starts up with perfect miscoloring for banks.  This can
> make a difference of 30% for bzero bandwidth in benchmarks (not so
> much for bcopy bandwidth, and an insignificant amount for normal use).
> After the system warms up, the coloring becomes random with respect
> to banks, and random coloring works much better than perfect miscoloring.

About page coloring: Don't amd64 CPUs have virtually indexed, physically
tagged caches? If so, wouldn't it make sense to turn off page coloring,
since it's useless for virtually indexed caches (and probably hurts things
a bit)?

-- Suleiman


More information about the freebsd-arch mailing list