Monday, 7 October 2019

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


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?



Answer



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.


No comments:

Post a Comment

How can I VLOOKUP in multiple Excel documents?

I am trying to VLOOKUP reference data with around 400 seperate Excel files. Is it possible to do this in a quick way rather than doing it m...