Re: Memory Loss

From: Tomasz Grzegurzko
Date: Thu Mar 25 2010 - 05:42:19 EST


Hi,

On Sat, Mar 20, 2010 at 7:01 AM, Yinghai Lu <yinghai@xxxxxxxxxx> wrote:
> On Thu, Mar 18, 2010 at 9:06 AM, Tomasz Grzegurzko <tomasz89@xxxxxxxxx> wrote:
>> Hi,
>>
>> I have a Dell PowerEdge 2900 reporting the loss of some memory at boot
>> time. It runs Ubuntu Karmic kernel 2.6.31-19-server (internal name).
>> The server is loaded with 42 GB of RAM but I get a little over 40GB,
>> and the following message from dmesg after bootup accounting for the
>> loss of RAM.
>>
>> [    0.000000] WARNING: BIOS bug: CPU MTRRs don't cover all of memory,
>> losing 1275MB of RAM.
>> [    0.000000] ------------[ cut here ]------------
>> [    0.000000] WARNING: at
>> /build/buildd/linux-2.6.31/arch/x86/kernel/cpu/mtrr/cleanup.c:1091
>> mtrr_trim_uncached_memory+0x2a6/0x2d1()
>> [    0.000000] Hardware name: PowerEdge 2900
>> [    0.000000] Modules linked in:
>> [    0.000000] Pid: 0, comm: swapper Not tainted 2.6.31-19-server #56-Ubuntu
>> [    0.000000] Call Trace:
>> [    0.000000]  [<ffffffff8105e508>] warn_slowpath_common+0x78/0xb0
>> [    0.000000]  [<ffffffff8105e54f>] warn_slowpath_null+0xf/0x20
>> [    0.000000]  [<ffffffff8184150e>] mtrr_trim_uncached_memory+0x2a6/0x2d1
>> [    0.000000]  [<ffffffff8183ccfa>] setup_arch+0x3d0/0x647
>> [    0.000000]  [<ffffffff81524b0d>] ? printk+0x3c/0x3f
>> [    0.000000]  [<ffffffff81837db3>] start_kernel+0xbe/0x35b
>> [    0.000000]  [<ffffffff8183759a>] x86_64_start_reservations+0x125/0x129
>> [    0.000000]  [<ffffffff81837698>] x86_64_start_kernel+0xfa/0x109
>> [    0.000000] ---[ end trace a7919e7f17c0a725 ]---
>
> because your BIOS doesn't set var mtrr correctly to cover all memory.
> so kernel trim those memory.
> otherwise system could be very slow when use those range.
> [0x8000000, 0xd0000000)
>
> you can specify "disable_mtrr_trim" in your boot command line of
> /boot/grub/menu.lst.
>
> then after boot, you could input that in command line after log on
>
> echo "base=0x80000000 size=0x40000000 type=write-back" > /proc/mtrr
> echo "base=0xc0000000 size=0x10000000 type=write-back" > /proc/mtrr
>


I've given this a go, it seems to run fine (no slowness issues
reported yet..). Memory available has gone up. I'll let it run for a
few days and see how it goes..

# free -m
total used free shared buffers cached
Mem: 42337 11397 30940 0 36 5520
-/+ buffers/cache: 5840 36497

# cat /proc/mtrr
reg00: base=0x000000000 ( 0MB), size= 2048MB, count=1: write-back
reg01: base=0x100000000 ( 4096MB), size= 4096MB, count=1: write-back
reg02: base=0x200000000 ( 8192MB), size= 8192MB, count=1: write-back
reg03: base=0x400000000 (16384MB), size=16384MB, count=1: write-back
reg04: base=0x800000000 (32768MB), size=16384MB, count=1: write-back
reg05: base=0x080000000 ( 2048MB), size= 1024MB, count=1: write-back
reg06: base=0x0c0000000 ( 3072MB), size= 256MB, count=1: write-back

Regards,
Tomasz
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/