What hardware device eats up 1.4GB of my 4GB RAM?

5

2

I'm using Windows 7 64-bits on a Lenovo 530 notebook with 4GB of RAM.

However, my task manager shows that the amount of RAM is only 2.6GB, and resource monitor shows that 1.4 GB is "used by hardware":

Resource Monitor Screenhot

Obviously, I'd like to use a bit more of my RAM (at the moment it is not possible to start up a VirtualBox VM using 2GB of Ram, for example).

So I went on a quest to find which device may be the reason that I have only so little RAM available and whether I can update its drivers or disable it...

First I tried a 64-bit Linux Live ISO (grml64) to rule out any driver problems, and the memory situation is the same there (also only 2.6GB usable in /proc/meminfo). Others suggest msconfig may have set a memory limit, but there is none set (and if I set one to for example 3.5GB, the available memory decreases by 0.5GB).

Next, I tried meminfo -r which outputs this:

MemInfo v2.10 - Show PFN database information
C:\Users\Michi\Desktop>meminfo -r
Copyright (C) 2007-2009 Alex Ionescu
www.alex-ionescu.com

Physical Memory Range: 0000000000001000 to 000000000009D000 (156 pages, 624 KB)
Physical Memory Range: 0000000000100000 to 0000000020000000 (130816 pages, 523264 KB)
Physical Memory Range: 0000000020200000 to 0000000040004000 (130564 pages, 522256 KB)
Physical Memory Range: 0000000040005000 to 00000000871F2000 (291309 pages, 1165236 KB)
Physical Memory Range: 0000000100000000 to 000000011F600000 (128512 pages, 514048 KB)
MmHighestPhysicalPage: 1177088

Therefore, the memory from 0x871F2000 to 0x100000000 is unusable, which is about 1.8 GB, but the usable memory range above 4G is only about 500 MB, the difference being about the 1.4 GB I'm "hunting".

Usually, my expectation (from old computers also from DOS times) is that when hardware "maps" some memory range, it will map it with its own (virtual or real) memory, and the amount of memory will "appear" at the end of the memory range (as it happens with the about 500MB above 4GB).

The memory map in device manager looks like this, nothing at 0x871F... either:

            [00000000000A0000 - 00000000000BFFFF]  Intel(R) HD Graphics 4000
            [00000000000A0000 - 00000000000BFFFF]  PCI bus
            [00000000DFA00000 - 00000000FEAFFFFF]  PCI bus
            [00000000E0000000 - 00000000EFFFFFFF]  Intel(R) HD Graphics 4000
            [00000000F0000000 - 00000000F03FFFFF]  Intel(R) HD Graphics 4000
            [00000000F0400000 - 00000000F0BFFFFF]  Intel(R) 7 Series/C216 Chipset Family PCI Express Root Port 1 - 1E10
            [00000000F0C00000 - 00000000F13FFFFF]  Intel(R) 7 Series/C216 Chipset Family PCI Express Root Port 3 - 1E14
            [00000000F1400000 - 00000000F1403FFF]  Realtek PCIe GBE Family Controller
            [00000000F1400000 - 00000000F14FFFFF]  Intel(R) 7 Series/C216 Chipset Family PCI Express Root Port 4 - 1E16
            [00000000F1404000 - 00000000F1404FFF]  Realtek PCIe GBE Family Controller
            [00000000F1500000 - 00000000F1CFFFFF]  Intel(R) 7 Series/C216 Chipset Family PCI Express Root Port 3 - 1E14
            [00000000F1D00000 - 00000000F1D03FFF]  1x1 11b/g/n Wireless LAN PCI Express Half Mini Card Adapter
            [00000000F1D00000 - 00000000F1DFFFFF]  Intel(R) 7 Series/C216 Chipset Family PCI Express Root Port 2 - 1E12
            [00000000F1E00000 - 00000000F25FFFFF]  Intel(R) 7 Series/C216 Chipset Family PCI Express Root Port 1 - 1E10
            [00000000F2600000 - 00000000F260FFFF]  Intel(R) USB 3.0 eXtensible-Hostcontroller
            [00000000F2610000 - 00000000F2613FFF]  High Definition Audio-Controller
            [00000000F2614000 - 00000000F26140FF]  Intel(R) 7 Series/C216 Chipset Family SMBus Host Controller - 1E22
            [00000000F2615000 - 00000000F261500F]  Intel(R) Management Engine Interface 
            [00000000F2618000 - 00000000F26187FF]  Intel(R) 7 Series Chipset Family SATA AHCI Controller
            [00000000F2619000 - 00000000F26193FF]  Intel(R) 7 Series/C216 Chipset Family USB Enhanced Host Controller - 1E26
            [00000000F261A000 - 00000000F261A3FF]  Intel(R) 7 Series/C216 Chipset Family USB Enhanced Host Controller - 1E2D
            [00000000F8000000 - 00000000FBFFFFFF]  Hauptplatinenressourcen
            [00000000FE800000 - 00000000FE80FFFF]  Hauptplatinenressourcen
            [00000000FED00000 - 00000000FED003FF]  Hochpräzisionsereigniszeitgeber
            [00000000FED10000 - 00000000FED17FFF]  Hauptplatinenressourcen
            [00000000FED18000 - 00000000FED18FFF]  Hauptplatinenressourcen
            [00000000FED19000 - 00000000FED19FFF]  Hauptplatinenressourcen
            [00000000FED1C000 - 00000000FED1FFFF]  Hauptplatinenressourcen
            [00000000FED20000 - 00000000FED3FFFF]  Hauptplatinenressourcen
            [00000000FED40000 - 00000000FED44FFF]  Trusted Platform Module 1.2
            [00000000FED45000 - 00000000FED8FFFF]  Hauptplatinenressourcen
            [00000000FED90000 - 00000000FED93FFF]  Hauptplatinenressourcen
            [00000000FEE00000 - 00000000FEEFFFFF]  Hauptplatinenressourcen
            [00000000FF000000 - 00000000FFFFFFFF]  Hauptplatinenressourcen
            [00000000FF000000 - 00000000FFFFFFFF]  Intel(R) 82802 Firmwarehub
            [00000000FFFFF000 - 00000000FFFFFFFF]  Hauptplatinenressourcen

And since the Intel HD Graphics uses shared memory, I verified and it is only using 83 MB at the moment:

HD Graphics Control Center

Any ideas how to get my memory back?

EDIT:

The notebook came with this RAM configuration (1 bank of 4GB used), and it also came with Windows 7. I did reinstall the Windows 7 half a year ago (and installed all drivers using Lenovo Update Wizard), at which time I also installed a BIOS/firmware update, but never had a look at resource monitor since I just did not need the extra RAM at all, so I cannot tell if that effect was already there when I got it.

EDIT2:

Apparently, @A32167 is right. I found a small example how to load textures in WebGL, modified it to load a 8192x8192 texture (see http://jsfiddle.net/q4SAS/), opened it in Google Chrome, and while the "Graphics Memory in use" increased to 918MB, the hardware reserved memory did not change:

Resource Monitor and Control Center after running WebGL example

While this answers my question, the question that of course remains is why Lenovo advertises with dynamic graphics memory allocation and whether there is a way to decrease the allocated memory...

EDIT3:

Unfortunately, this is not the end of the story - see here: What hardware device used to eat up 1.4GB of my 4GB RAM, and now suddenly after no hardware changes eats up 2.2GB?

mihi

Posted 2013-12-11T16:13:32.867

Reputation: 3 217

At least in the olden days it was pretty much normal for a laptop display adapter to use the laptop RAM for "buffers". I would assume that's what's going on here. As to whether the "reserved" space is actually being used (or will ever be, under any circumstance), it's hard to say. – Daniel R Hicks – 2013-12-11T16:56:03.627

Of course, I've also heard of scenarios where a system might "take" 4GB, but, due to the particular chipset in use, the way the address bus is arranged, etc, only really support some smaller number. – Daniel R Hicks – 2013-12-11T16:58:24.330

What does verwendung and Geandert mean? – Jon – 2013-12-12T15:30:06.027

@chipperyman573: In Verwendung = "In use", Geändert = "Changed" - sorry cannot install English langpack on my edition on Win7 :( – mihi – 2013-12-12T15:31:27.163

Answers

0

Finally found the correct answer and regained my memory.

As detailed in https://superuser.com/a/762821/1724 (an answer to the followup question of this question), it is a feature of the UEFI implementation to update the memory map (stored persistently in UEFI variables) before every boot in case of any changes. It apparently does not take into account that before the boot, another UEFI boot entry may have failed and not cleaned up the memory used (depending on the boot loader), resulting in reduction of available memory after every UEFI boot failure.

Manually fixing the memory map (stored in UEFI variable MemoryTypeInformation) fixes the issue - while the TianoCore reference implementation suggests that deleting the variable should also work, I did not want to run the risk.

mihi

Posted 2013-12-11T16:13:32.867

Reputation: 3 217

5

Isn't it possible that on the above screen where you have your video card configuration, the 1138 "maximum" memory is reserved for the card although it is only using 83 at the moment?

A32167

Posted 2013-12-11T16:13:32.867

Reputation: 152

probably. but since it is nowhere possible to change the "maximum" memory (and Intel everywhere advertises that the amount of memory used can change dynamically), and it also does not appear as used in the resource manager, it would surprise me... – mihi – 2013-12-11T16:57:36.930

Does anyone know a tool/game that works on Intel HD Graphics that can use up more than a few MB of graphics memory, so that I can test it and check if the amount of memory reserved for hardware increases (as I would expect if the amount of memory changes dynamically)? – mihi – 2013-12-11T17:04:23.207

You were right. I updated the description accordingly. Thanks, answer accepted :) – mihi – 2013-12-12T15:28:54.543

0

Is it possible this is not a supported configuration? Suggested by this post, possibly duplicate:

Why is all my extra RAM marked as "hardware reserved" in Windows 7?

Joshua

Posted 2013-12-11T16:13:32.867

Reputation: 4 290

The notebook came with this RAM configuration (1 bank of 4GB used), and it also came with Windows 7. I did reinstall the Windows 7 half a year ago (and installed all drivers using Lenovo Update Wizard) , but never had a look at resource monitor since I just did not need the extra RAM at all, so I cannot tell if it was already there when I got it. – mihi – 2013-12-11T16:25:29.203

0

It is possible that the BIOS has a fix for this. Look for Memory Hoisting or Memory Hole settings.

What those do is modify the memory maps so that the actual RAM is mapped above 4 GB, leaving an empty hole in the RAM map for the devices to use.

The reason for this setting is that placing RAM above 4 GB makes it inaccessible to 32-bit operating systems.

Zan Lynx

Posted 2013-12-11T16:13:32.867

Reputation: 1 518

Checked all menus of my BIOS/UEFI setup (and even found a memory test tool that tested my 4GB and found no errors), but did not find any "Memory" or "RAM" settings. – mihi – 2013-12-11T22:34:46.393