RE: [suse-amd64] System memory missing - AGP card taking it?
Sorry if this is not specifically an X86-64 question.
I have a Dual Opteron 250 with 4 GB of RAM with an NVIDIA QuadroFX 1100 card, with Suse 9.1 X86-64 installed with updates (kernel version 2.5.5-7.111.19-smp). The BIOS recognizes all 4 GB of RAM, but the OS only sees 3.26GB. I've been told this is because the video card is taking up system memory. But could it really be taking up this much?
Changing the AGP aperture size in the BIOS does affect how much RAM is occupied by the video card. Currently it is set to 32 MB. If I set it to the maximum of 512 MB, a measly 2.4GB are available.
I also thought this was strange - if I set the AGP aperture to 32 MB, and then try 1, 2, 3, and 4 GB, I see different percentages of system memory being unavailable. Here's what I see:
1 GB -> 91.8% 2 GB -> 95.2% 3 GB -> 96.4% 4 GB -> 81.5%
Is their anything I can do in Suse to give me back more of my system RAM? Seems like that last GB was a waste of money...
Thanks for any help you can offer.
The OS needs to allocate memory addresses for the framebuffer, AGP, and memory-mapped PCI accesses. These address regions must be below 4GB. Because the same physical address cannot be used to address a memory cell and a non-memory device at the same time, you lose access to the underlying memory cells. There is nothing the OS can do about this limitation. All machines with more than 3.5 GB of RAM will see some of the RAM missing to these various memory regions. There are some things that the BIOS can do to hoist one or more of the memory sticks above 4 GB, thus creating a hole in the memory map that can be filled by the framebuffer, PCI space, etc. Writing a BIOS to support memory hoisting is tricky and I don't expect that most BIOS vendors will support it until a larger part of the market buys machines with 4 or more GB of memory. -Mark Langsdorf Linux Drivers Team Lead AMD, Inc.
There are some things that the BIOS can do to hoist one or more of the memory sticks above 4 GB, thus creating a hole in the memory map that can be filled by the framebuffer, PCI space, etc. Writing a BIOS to support memory hoisting is tricky and I don't expect that most BIOS vendors will support it until a larger part of the market buys machines with 4 or more GB of memory.
Thanks for the excellent summary, Mark. I must also add that some of the BIOS who implement hoisting cause mysterious memory corruption when it is enabled in the BIOS setup. So I cannot really recommend it at this time. -Andi
Langsdorf, Mark wrote:
Sorry if this is not specifically an X86-64 question.
I have a Dual Opteron 250 with 4 GB of RAM with an NVIDIA QuadroFX 1100 card, with Suse 9.1 X86-64 installed with updates (kernel version 2.5.5-7.111.19-smp). The BIOS recognizes all 4 GB of RAM, but the OS only sees 3.26GB. I've been told this is because the video card is taking up system memory. But could it really be taking up this much?
Changing the AGP aperture size in the BIOS does affect how much RAM is occupied by the video card. Currently it is set to 32 MB. If I set it to the maximum of 512 MB, a measly 2.4GB are available.
I also thought this was strange - if I set the AGP aperture to 32 MB, and then try 1, 2, 3, and 4 GB, I see different percentages of system memory being unavailable. Here's what I see:
1 GB -> 91.8% 2 GB -> 95.2% 3 GB -> 96.4% 4 GB -> 81.5%
Is their anything I can do in Suse to give me back more of my system RAM? Seems like that last GB was a waste of money...
Thanks for any help you can offer.
The OS needs to allocate memory addresses for the framebuffer, AGP, and memory-mapped PCI accesses. These address regions must be below 4GB. Because the same physical address cannot be used to address a memory cell and a non-memory device at the same time, you lose access to the underlying memory cells. There is nothing the OS can do about this limitation. All machines with more than 3.5 GB of RAM will see some of the RAM missing to these various memory regions.
There are some things that the BIOS can do to hoist one or more of the memory sticks above 4 GB, thus creating a hole in the memory map that can be filled by the framebuffer, PCI space, etc. Writing a BIOS to support memory hoisting is tricky and I don't expect that most BIOS vendors will support it until a larger part of the market buys machines with 4 or more GB of memory.
-Mark Langsdorf Linux Drivers Team Lead AMD, Inc.
Mark, Thanks for your reply. I have two Xeons with 4 GB on Intel E7505 motherboards that do not have this problem. I guess their BIOS does support memory hoisting. Ken
participants (3)
-
Andi Kleen
-
Ken Siersma
-
Langsdorf, Mark