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.

htop

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