Looking for information about total memory on my laptop, I've found the following but I have some doubt about the meaning.
From the dmidecode command I obtain:
Handle 0x0010, DMI type 16, 23 bytes
Physical Memory Array Location: System Board Or Motherboard Use: System Memory Error Correction Type: None Maximum Capacity: 8 GB Error Information Handle: Not Provided Number Of Devices: 2
Handle 0x0011, DMI type 17, 34 bytes
Memory Device Array Handle: 0x0010 Error Information Handle: Not Provided Total Width: 64 bits Data Width: 64 bits Size: 4096 MB Form Factor: SODIMM Set: None Locator: Bottom Bank Locator: CHANNEL A Type: DDR3 Type Detail: Synchronous Unbuffered (Unregistered) Speed: 800 MHz Manufacturer: Kingston Serial Number: 5A396D76 Asset Tag: Asset Tag: Part Number: KHX1600C9S3L/4G Rank: 1 Configured Clock Speed: 800 MHz
Handle 0x0013, DMI type 20, 35 bytes
Memory Device Mapped Address Starting Address: 0x00000000000 Ending Address: 0x000FFFFFFFF Range Size: 4 GB Physical Device Handle: 0x0011 Memory Array Mapped Address Handle: 0x0016 Partition Row Position: 1
Handle 0x0014, DMI type 17, 34 bytes
Memory Device Array Handle: 0x0010 Error Information Handle: Not Provided Total Width: Unknown Data Width: Unknown Size: No Module Installed Form Factor: SODIMM Set: None Locator: Top Bank Locator: CHANNEL A Type: Unknown Type Detail: Unknown Speed: Unknown Manufacturer: Empty Serial Number: Empty Asset Tag: Asset Tag: Part Number: Empty Rank: Unknown Configured Clock Speed: Unknown
Handle 0x0016, DMI type 19, 31 bytes
Memory Array Mapped Address Starting Address: 0x00000000000 Ending Address: 0x000FFFFFFFF Range Size: 4 GB Physical Array Handle: 0x0010 Partition Width: 255I was thinking my HP 15g-207nl supported at max 4GB of memory, but there I see an 8GB as for the maximum capacity. Which is the truth? Then again, the file /proc/meminfo tells me this:
MemTotal: 3467664 kB
MemFree: 493996 kB
MemAvailable: 1093044 kB
Buffers: 72928 kB
Cached: 754636 kB
SwapCached: 1460 kB
Active: 1726432 kB
Inactive: 871336 kB
Active(anon): 1346256 kB
Inactive(anon): 519488 kB
Active(file): 380176 kB
Inactive(file): 351848 kB
Unevictable: 32 kB
Mlocked: 32 kB
SwapTotal: 3613692 kB
SwapFree: 3588868 kB
Dirty: 456 kB
Writeback: 40 kB
AnonPages: 1769496 kB
Mapped: 404592 kB
Shmem: 95540 kB
Slab: 178208 kB
SReclaimable: 135680 kB
SUnreclaim: 42528 kB
KernelStack: 11408 kB
PageTables: 39620 kBI think the pc has a 4GB memory card mounted, but neither with Gibibyte or Gigabyte unit system I'm able to sum up and find those 4GB here. Where are they? And what do MemTotal, MemFree and MemAvailable precisely represent?
41 Answer
dmidecode
This program attempts to gather information about your hardware from your BIOS. Your BIOS should correctly report the maximum supported RAM on your computer.
In this case, it is reporting a maximum 8 GB of RAM. I would guess that this is most likely correct. The official specifications for your laptop don't list a maximum RAM capacity, just that it came with 4 GB of RAM. Most likely, your motherboard came with support for more RAM than was originally installed.
From man dmidecode:
dmidecode is a tool for dumping a computer's DMI (some say SMBIOS) table contents in a human-readable format. This table contains a description of the system's hardware components, as well as other useful pieces of information such as serial numbers and BIOS revision. Thanks to this table, you can retrieve this information without having to probe for the actual hardware.
meminfo
/proc/meminfo reports current memory usage on your system, along with some other information about your memory.
MemTotal is the total usable memory in your system. In your case, it says that you have 3467664 kB total RAM. That is approximately 3.5 GB. It's not unusual for digital storage to have less actual capacity than advertised capacity, so this is most likely in line with what dmidecode reported — that is, the advertised capacity of your RAM.
MemFree is the amount of memory not being used by your system at all. The Linux kernel allows memory to be used for caching frequently-used files so that you can access their data faster in addition to currently running programs. MemFree is the total memory that's not being used for any of those things.
MemAvailable is the amount of memory that can be given to programs to use. The kernel won't reallocate the memory used for currently running programs, but it will reallocate memory used for caching to programs that need it, because it can just read that data back from the hard disk if it's needed again. Therefore, MemAvailable is the total memory minus the memory used by currently running programs.
See man proc for more detailed information on the meminfo file.