How exactly is my 'missing' memory being used?

jerkstore

I notice on 64-bit Windows and Ubuntu, there is a small amount of memory that isn't even reported to the OS. For example: I have 16GiB (16384MiB) of memory in my box according to BIOS, but Ubuntu reports I have "16043MB" of total memory. I see this on multiple systems with AMD or Intel chipsets running Windows or Linux, the amount of 'missing' memory varying.

Neither number adds up to the actual amount of physical memory installed, so what is it being used for? Is some memory reserved for communication with a graphics card or other devices? If so, how? What else could be using the memory and in what way? Why is the real amount of memory not visible within the operating system? Where can I read more about this as hardware designer?

When I try to research this I only find people bewildered by their 32-bit OS not recognizing all of their 4GiB memory upgrade.

allquixotic

If you have some kind of Integrated Graphics chipset (iGPU), it very likely reserves some system memory as an alternative to using dedicated Video Memory (VRAM).

So the story goes like this: AMD Accelerated Processing Units (APUs) and Intel HD Graphics contain essentially cut-down versions of a graphics card, mounted onto the same package as the CPU. In recent years, both AMD and Intel have started pushing these iGPUs into almost every desktop processor sold. Historically, these chips were on the motherboard, but they started moving them into the CPU. You can still buy processors without them, but the vast majority now have them, even on systems with dedicated graphics cards that are much more powerful.

If you have drivers installed for your iGPU, chances are that the operating system is technically able to use it. In order to use it, though, it needs to reserve some of your system memory to use for storing graphics data (textures, framebuffer, etc). This is because iGPUs don't come with their own dedicated VRAM, because there isn't enough space on the processor die to fit it. Well, usually; the Intel "Iris Pro" graphics chip contains 128 MB of eMMC; but I digress...

On the other hand, if the only graphics chipset your system has is the iGPU, then of course you have no alternative than to accept that some of your system memory is going to be used by this iGPU, or else you will have no graphics display at all.

For some iGPUs, you can configure in the BIOS how much RAM is reserved for the iGPU, usually from a minimum of 64 MB up to a maximum amount of about 1 GB, though the exact figures vary.

In theory, the iGPU isn't the only possible system component that could reserve some system RAM for a special purpose, but it is certainly the most common. I have also heard of some dedicated graphics cards using a hybrid of both system RAM and VRAM, which means that there is a smaller amount of VRAM built into the graphics card itself, but the driver also asks for an amount of system RAM to set aside to supplement the VRAM as additional space for graphics data.

If you want the gory details, look up something like "Unified Memory Architecture" (not to be confused with a similar term such as NUMA, used to distinguish normal systems from distributed systems), or look for the open hardware specifications for Intel's GMA or HD Graphics chipsets. Since the Linux graphics drivers for these chipsets are open source, you can dive as deep as you want by grabbing the spec documents or reading the Mesa or Linux DRM (Direct Rendering Manager) source code. Here you go -- have fun.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

How can I tell if my <List> is being used by my program?

From Dev

How to workaround a memory leak in a vendor's DLL being used in Python?

From Dev

How to check if two memory modules are being used with dual channel?

From Dev

Why is my computer slow despite low percentage of CPU and memory being used?

From Dev

How to know what exactly is being written or which process is keeping my storage disk busy?

From Dev

what exactly is "Memory used" (versus "Memory cached") in ganglia?

From Dev

How and where exactly is htmlspecialchars() or {{}} to be used?

From Dev

Controlling the memory being used by a C++ programme

From Dev

Can't find where memory is being used

From Dev

Will this release my resources after being used?

From Dev

Is my server being used as a proxy or malicious requests?

From Dev

What exactly is txPower for Bluetooth LE and how is it used?

From Dev

How EXACTLY is Slick's SimpleLiteral used?

From Dev

How can I see which video card on my Optimus-enabled machine is being used?

From Dev

self is not a reserved word in javascript --so how it it is used w/o being defined in my script?

From Dev

How can I see which video card on my Optimus-enabled machine is being used?

From Dev

How can I view what percentage of my hard drive bandwidth is currently being used?

From Dev

How can I prevent my file from being used by another process?

From Dev

How can I find out which GPU is being used in my ubuntu16.04 LTS?

From Dev

Why is my memory used gradually increasing?

From Dev

How come my disk utility shows that more space is being used compared to my terminal/OmnidiskSweeper? What is the hidden space DaisyDisk shows?

From Dev

Google Cloud VM memory is being used up 100%

From Dev

Why an enum instance is not released from memory after being used

From Dev

How to calculate used memory at Ubuntu?

From Dev

How is "a" used in my program?

From Dev

How exactly does bitlocker protect my data?

From Dev

How would the OS Handle Swap being turned off if it is being used?

From Dev

How to find where function is being used

From Dev

How to check if a file is being used by another application?

Related Related

  1. 1

    How can I tell if my <List> is being used by my program?

  2. 2

    How to workaround a memory leak in a vendor's DLL being used in Python?

  3. 3

    How to check if two memory modules are being used with dual channel?

  4. 4

    Why is my computer slow despite low percentage of CPU and memory being used?

  5. 5

    How to know what exactly is being written or which process is keeping my storage disk busy?

  6. 6

    what exactly is "Memory used" (versus "Memory cached") in ganglia?

  7. 7

    How and where exactly is htmlspecialchars() or {{}} to be used?

  8. 8

    Controlling the memory being used by a C++ programme

  9. 9

    Can't find where memory is being used

  10. 10

    Will this release my resources after being used?

  11. 11

    Is my server being used as a proxy or malicious requests?

  12. 12

    What exactly is txPower for Bluetooth LE and how is it used?

  13. 13

    How EXACTLY is Slick's SimpleLiteral used?

  14. 14

    How can I see which video card on my Optimus-enabled machine is being used?

  15. 15

    self is not a reserved word in javascript --so how it it is used w/o being defined in my script?

  16. 16

    How can I see which video card on my Optimus-enabled machine is being used?

  17. 17

    How can I view what percentage of my hard drive bandwidth is currently being used?

  18. 18

    How can I prevent my file from being used by another process?

  19. 19

    How can I find out which GPU is being used in my ubuntu16.04 LTS?

  20. 20

    Why is my memory used gradually increasing?

  21. 21

    How come my disk utility shows that more space is being used compared to my terminal/OmnidiskSweeper? What is the hidden space DaisyDisk shows?

  22. 22

    Google Cloud VM memory is being used up 100%

  23. 23

    Why an enum instance is not released from memory after being used

  24. 24

    How to calculate used memory at Ubuntu?

  25. 25

    How is "a" used in my program?

  26. 26

    How exactly does bitlocker protect my data?

  27. 27

    How would the OS Handle Swap being turned off if it is being used?

  28. 28

    How to find where function is being used

  29. 29

    How to check if a file is being used by another application?

HotTag

Archive