Slow performance on Serverworks LE boards with 4GB of RAM seem to be related
to mtrr misconfiguration. Here is the /proc/mtrr for a Tyan 2510 ( 2.4.7-ac2):
reg00: base=0x00000000 ( 0MB), size=2048MB: write-back, count=1
reg01: base=0x80000000 (2048MB), size=1024MB: write-back, count=1
reg02: base=0xc0000000 (3072MB), size= 512MB: write-back, count=1
reg03: base=0xe0000000 (3584MB), size= 256MB: write-back, count=1
reg04: base=0xf0000000 (3840MB), size= 128MB: write-back, count=1
reg05: base=0xf8000000 (3968MB), size= 64MB: write-back, count=1
reg06: base=0xfc000000 (4032MB), size= 64MB: uncachable, count=1
Also, the framebuffer is 4MB starting at 0xfd000000 (4048MB) on this system.
The last entry seems to be the culprit. Why should there be 64MB uncachable
starting at 4032?
Back in April there was a thread concering the mtrr setup for the LE chipset.
A patch for mtrr.c was submitted (but never accepted, apparently) that allows
write-combining (which is currently disabled for all Serverworks LE) for
revisions >5. If I modify mtrr.c to allow write-combining the system works
normally with 4G. /proc/mtrr is unchanged but the following line shows up in
the syslog when the X-server is started:
mtrr: type mismatch for fd000000,400000 old: uncachable new: write-combining
The slowness of the system without write-combining is independent of whether
X is started.
Marvin Justice
Sorry, I checked again and enabling write-combining was not the solution.
Apparently, I forgot to remove an append="mem=0xf8000000" statement when
testing the mtrr.c modification. Limiting the memory to 4GB - 128 MB was the
real reason for the performance improvement. As far as we're concerned,
simply telling the kernel to ignore the last 128MB is an acceptable solution.
For what it's worth, enabling write-combining does make X noticeably faster,
however :)
Marvin Justice
> Slow performance on Serverworks LE boards with 4GB of RAM seem to be
> related to mtrr misconfiguration. Here is the /proc/mtrr for a Tyan 2510 (
> 2.4.7-ac2):
>
> reg00: base=0x00000000 ( 0MB), size=2048MB: write-back, count=1
> reg01: base=0x80000000 (2048MB), size=1024MB: write-back, count=1
> reg02: base=0xc0000000 (3072MB), size= 512MB: write-back, count=1
> reg03: base=0xe0000000 (3584MB), size= 256MB: write-back, count=1
> reg04: base=0xf0000000 (3840MB), size= 128MB: write-back, count=1
> reg05: base=0xf8000000 (3968MB), size= 64MB: write-back, count=1
> reg06: base=0xfc000000 (4032MB), size= 64MB: uncachable, count=1
>
> Also, the framebuffer is 4MB starting at 0xfd000000 (4048MB) on this
> system. The last entry seems to be the culprit. Why should there be 64MB
> uncachable starting at 4032?
>
> Back in April there was a thread concering the mtrr setup for the LE
> chipset. A patch for mtrr.c was submitted (but never accepted, apparently)
> that allows write-combining (which is currently disabled for all
> Serverworks LE) for revisions >5. If I modify mtrr.c to allow
> write-combining the system works normally with 4G. /proc/mtrr is unchanged
> but the following line shows up in the syslog when the X-server is started:
>
> mtrr: type mismatch for fd000000,400000 old: uncachable new:
> write-combining
>
> The slowness of the system without write-combining is independent of
> whether X is started.
>
> Marvin Justice
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/