How to find how much RAM does my computer have?
Solution 1:
If you click on the gear icon (top right of your screen) then click on About this computer. The RAM is the 2nd entry down, below the computer name.
Edit
if you run sudo lshw -class memory
in your terminal, this gives you the details of all available memory.
Solution 2:
Also easy to use commands to check RAM:
free -lm
Using top
command itself or:
top | grep -i mem
Similar to top
but a bit more advanced is htop
but the package has to be installed sudo apt-get install htop
then run:
htop
Will output memory scale in terminal.
Also vmstat
can do this:
vmstat -s -SM
Solution 3:
In general
Please keep in mind - many solutions in this post will only show how much memory the operating system detects (e.g. 32bit without PAE can only see 4GB)
Detect memory slots and state using dmidecode
Assuming you have sudo permissions you can use the dmidecode
command to detect the amount of memory slots and what is inserted into them right now.
Example usage:
sudo dmidecode
Or even better, filtered just for memory related informations:
sudo dmidecode -t 17
Outputs in my case:
# dmidecode 3.0
Getting SMBIOS data from sysfs.
SMBIOS 2.7 present.
Handle 0x002F, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x002D
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: DIMM
Set: None
Locator: ChannelA_Dimm1
Bank Locator: ChannelA
Type: DDR3
Type Detail: Synchronous
Speed: 1333 MHz
Manufacturer: A-DATA
Serial Number: 0000762C
Asset Tag: ChannelA_Dimm1_AssetTag
Part Number: DDR3 1600G
Rank: 2
Configured Clock Speed: 1333 MHz
Handle 0x0031, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x002D
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: No Module Installed
Form Factor: DIMM
Set: None
Locator: ChannelA_Dimm2
Bank Locator: ChannelA
Type: Unknown
Type Detail: Synchronous
Speed: Unknown
Manufacturer: ChannelA_Dimm2_Manufacturer
Serial Number: ChannelA_Dimm2_SerNum
Asset Tag: ChannelA_Dimm2_AssetTag
Part Number: ChannelA_Dimm2_PartNum
Rank: Unknown
Configured Clock Speed: Unknown
Handle 0x0033, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x002D
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: DIMM
Set: None
Locator: ChannelB_Dimm1
Bank Locator: ChannelB
Type: DDR3
Type Detail: Synchronous
Speed: 1333 MHz
Manufacturer: A-DATA
Serial Number: 000028C3
Asset Tag: ChannelB_Dimm1_AssetTag
Part Number: DDR3 1600G
Rank: 2
Configured Clock Speed: 1333 MHz
Handle 0x0035, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x002D
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: No Module Installed
Form Factor: DIMM
Set: None
Locator: ChannelB_Dimm2
Bank Locator: ChannelB
Type: Unknown
Type Detail: Synchronous
Speed: Unknown
Manufacturer: ChannelB_Dimm2_Manufacturer
Serial Number: ChannelB_Dimm2_SerNum
Asset Tag: ChannelB_Dimm2_AssetTag
Part Number: ChannelB_Dimm2_PartNum
Rank: Unknown
Configured Clock Speed: Unknown
Handle 0x0037, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x002D
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: DIMM
Set: None
Locator: ChannelC_Dimm1
Bank Locator: ChannelC
Type: DDR3
Type Detail: Synchronous
Speed: 1333 MHz
Manufacturer: A-DATA
Serial Number: 000028E7
Asset Tag: ChannelC_Dimm1_AssetTag
Part Number: DDR3 1600G
Rank: 2
Configured Clock Speed: 1333 MHz
Handle 0x0039, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x002D
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: No Module Installed
Form Factor: DIMM
Set: None
Locator: ChannelC_Dimm2
Bank Locator: ChannelC
Type: Unknown
Type Detail: Synchronous
Speed: Unknown
Manufacturer: ChannelC_Dimm2_Manufacturer
Serial Number: ChannelC_Dimm2_SerNum
Asset Tag: ChannelC_Dimm2_AssetTag
Part Number: ChannelC_Dimm2_PartNum
Rank: Unknown
Configured Clock Speed: Unknown
Handle 0x003B, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x002D
Error Information Handle: Not Provided
Total Width: 64 bits
Data Width: 64 bits
Size: 4096 MB
Form Factor: DIMM
Set: None
Locator: ChannelD_Dimm1
Bank Locator: ChannelD
Type: DDR3
Type Detail: Synchronous
Speed: 1333 MHz
Manufacturer: A-DATA
Serial Number: 000028F0
Asset Tag: ChannelD_Dimm1_AssetTag
Part Number: DDR3 1600G
Rank: 2
Configured Clock Speed: 1333 MHz
Handle 0x003D, DMI type 17, 34 bytes
Memory Device
Array Handle: 0x002D
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits
Size: No Module Installed
Form Factor: DIMM
Set: None
Locator: ChannelD_Dimm2
Bank Locator: ChannelD
Type: Unknown
Type Detail: Synchronous
Speed: Unknown
Manufacturer: ChannelD_Dimm2_Manufacturer
Serial Number: ChannelD_Dimm2_SerNum
Asset Tag: ChannelD_Dimm2_AssetTag
Part Number: ChannelD_Dimm2_PartNum
Rank: Unknown
Configured Clock Speed: Unknown
Invalid entry length (16). Fixed up to 11.
The output tells you about 8 slots, 4 being used, each featuring 4GB memory.
Detect memory using lshw
Assuming you have sudo permissions you can use the lshw
command to detect the amount of memory slots and what is inserted into them right now.
Example usage:
lshw
or just to get memory related informations:
lshw -class memory
Outputs in my case:
*-firmware
description: BIOS
vendor: American Megatrends Inc.
physical id: 0
version: 3203
date: 11/26/2012
size: 64KiB
capacity: 8128KiB
capabilities: pci apm upgrade shadowing cdboot bootselect socketedrom edd int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int9keyboard int14serial int17printer acpi usb biosbootspecification uefi
*-cache:0
description: L1 cache
physical id: 5
slot: L1-Cache
size: 32KiB
capacity: 32KiB
capabilities: internal write-back unified
configuration: level=1
*-cache:1
description: L2 cache
physical id: 6
slot: L2-Cache
size: 256KiB
capacity: 256KiB
capabilities: internal varies unified
configuration: level=2
*-cache:2
description: L3 cache
physical id: 7
slot: L3-Cache
size: 10MiB
capacity: 10MiB
capabilities: internal varies unified
configuration: level=3
*-memory
description: System Memory
physical id: 2d
slot: System board or motherboard
size: 16GiB
*-bank:0
description: DIMM DDR3 Synchronous 1333 MHz (0,8 ns)
product: DDR3 1600G
vendor: A-DATA
physical id: 0
serial: 0000762C
slot: ChannelA_Dimm1
size: 4GiB
width: 64 bits
clock: 1333MHz (0.8ns)
*-bank:1
description: DIMM Synchronous [empty]
product: ChannelA_Dimm2_PartNum
vendor: ChannelA_Dimm2_Manufacturer
physical id: 1
serial: ChannelA_Dimm2_SerNum
slot: ChannelA_Dimm2
width: 64 bits
*-bank:2
description: DIMM DDR3 Synchronous 1333 MHz (0,8 ns)
product: DDR3 1600G
vendor: A-DATA
physical id: 2
serial: 000028C3
slot: ChannelB_Dimm1
size: 4GiB
width: 64 bits
clock: 1333MHz (0.8ns)
*-bank:3
description: DIMM Synchronous [empty]
product: ChannelB_Dimm2_PartNum
vendor: ChannelB_Dimm2_Manufacturer
physical id: 3
serial: ChannelB_Dimm2_SerNum
slot: ChannelB_Dimm2
width: 64 bits
*-bank:4
description: DIMM DDR3 Synchronous 1333 MHz (0,8 ns)
product: DDR3 1600G
vendor: A-DATA
physical id: 4
serial: 000028E7
slot: ChannelC_Dimm1
size: 4GiB
width: 64 bits
clock: 1333MHz (0.8ns)
*-bank:5
description: DIMM Synchronous [empty]
product: ChannelC_Dimm2_PartNum
vendor: ChannelC_Dimm2_Manufacturer
physical id: 5
serial: ChannelC_Dimm2_SerNum
slot: ChannelC_Dimm2
width: 64 bits
*-bank:6
description: DIMM DDR3 Synchronous 1333 MHz (0,8 ns)
product: DDR3 1600G
vendor: A-DATA
physical id: 6
serial: 000028F0
slot: ChannelD_Dimm1
size: 4GiB
width: 64 bits
clock: 1333MHz (0.8ns)
*-bank:7
description: DIMM Synchronous [empty]
product: ChannelD_Dimm2_PartNum
vendor: ChannelD_Dimm2_Manufacturer
physical id: 7
serial: ChannelD_Dimm2_SerNum
slot: ChannelD_Dimm2
width: 64 bits
Show memory informations using free
You can use the free
command to get informations about your memory.
Example usage:
free
Output:
total used free shared buff/cache available
Mem: 16374920 4653296 155360 9349708 11566264 1953928
Swap: 16715772 4060816 12654956
Add the -h
parameter to get a more human readable output
total used free shared buff/cache available
Mem: 15G 4,4G 249M 8,9G 11G 1,9G
Swap: 15G 3,9G 12G
In case you want to monitor memory usage consider combining watch
and free
as follows
watch free
This will output the normal free
output seen above, but update it all 2 seconds (using watch
)
Show memory informations using /proc/meminfo
You can use /proc/meminfo
to get some memory informations as well.
Example:
cat /proc/meminfo
Output:
MemTotal: 16374920 kB
MemFree: 211408 kB
MemAvailable: 2036568 kB
Buffers: 34856 kB
Cached: 11248956 kB
SwapCached: 1572 kB
Active: 5451788 kB
Inactive: 10119984 kB
Active(anon): 4508180 kB
Inactive(anon): 9133120 kB
Active(file): 943608 kB
Inactive(file): 986864 kB
Unevictable: 13444 kB
Mlocked: 13444 kB
SwapTotal: 16715772 kB
SwapFree: 12654936 kB
Dirty: 1016 kB
Writeback: 0 kB
AnonPages: 4300076 kB
Mapped: 5466584 kB
Shmem: 9349796 kB
Slab: 309332 kB
SReclaimable: 230976 kB
SUnreclaim: 78356 kB
KernelStack: 17216 kB
PageTables: 77140 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 24903232 kB
Committed_AS: 28709200 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 1863680 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 737312 kB
DirectMap2M: 14934016 kB
DirectMap1G: 1048576 kB
As @Serg pointed out you should use awk
to shrink the output down to the most essential
Example:
awk '/MemTotal/ || /SwapTotal/' /proc/meminfo
Output:
MemTotal: 16374920 kB
SwapTotal: 16715772 kB
Show memory informations using vmstat
You can use the vmstat
command as well.
Example:
vmstat
Output:
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 4060888 238300 35576 11506488 0 2 120 55 17 4 18 6 74 2 0
It could be displayed more readable as follows:
vmstat -s -SM
Output:
15991 M total memory
4467 M used memory
5322 M active memory
9837 M inactive memory
253 M free memory
34 M buffer memory
11235 M swap cache
16323 M total swap
3965 M used swap
12358 M free swap
17691507 non-nice user cpu ticks
21078371 nice user cpu ticks
13384959 system cpu ticks
161496078 idle cpu ticks
4951342 IO-wait cpu ticks
0 IRQ cpu ticks
40582 softirq cpu ticks
0 stolen cpu ticks
263184336 pages paged in
119297582 pages paged out
1824 pages swapped in
1018199 pages swapped out
1111772384 interrupts
2371898713 CPU context switches
1473060064 boot time
1983609 forks
Monitoring ram usage
There are several tools which help monitoring ram/ memory usage. I'll name some here
top
and htop
are both tools which constantly update the current memory usage.
Using smem
smem
reports usage with shared memory divided prportionally.
Example (sorted):
smem -r
Output:
7948 USERNAME /usr/lib/firefox/firefox 0 975580 997022 1027100
23748 USERNAME /usr/bin/perl /usr/bin/shut 0 456392 459957 472116
16341 USERNAME /opt/google/chrome/chrome - 0 401220 405063 419520
22977 USERNAME /home/fpoeck/.dropbox-dist/ 0 240332 240487 245712
23751 USERNAME /usr/bin/python /usr/share/ 0 204524 205538 214656
32449 USERNAME /usr/lib/thunderbird/thunde 0 191124 191657 200892
13531 USERNAME /opt/atom/atom --type=rende 0 124740 131853 144340