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: 255
I 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 kB
I 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?
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
: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 thememinfo
file.