As someone who manages Ubuntu servers, you'll need to know how much RAM your system has, and how much of the RAM is free to use. You may even want to check the kind of RAM it is (DDR1 or DDR2).
In this tutorial, I'll show you how you can achieve the following in the terminal:
- Check the total RAM size
- Check the used and free RAM
- Type and speed of RAM
Check the total RAM size and the free RAM
You can use the free command to display the amount of free and used memory (RAM) in the system.
-h option displays the output in a human-readable format. This means that you get to see the RAM size in GB, MB etc instead of in bytes.
You should see an output like this:
[email protected]:~# free -h total used free shared buff/cache available Mem: 1.9Gi 669Mi 726Mi 1.0Mi 587Mi 1.1Gi Swap: 0B 0B 0B
You have to focus on the
Mem row and the
As you can see, my Ubuntu server (running this site) has 1.9 GB of total RAM and 1.1 GB of available RAM. This available RAM is the free RAM your system can use.
If your system is often running out of available RAM, you should consider adding swap space to your Ubuntu machine.
1.9 GiB of RAM sounds strange, isn't it? Should it not be 2 GB?
It depends on your definition of GB. For a long time, we were taught that things move in the power of 2 (binary) in the computing world. 1 KB is 1024 bytes (2 to the power 10). 1 MB is 1024 kilobytes.
But things have changed lately. The SI units use decimal for the size calculation. In this method, a kilo is 1000. So a kilobyte is 1000 bytes, a megabyte is 1000 kilobytes and a gigabyte is 1000 megabytes.
So, to keep a distinction, GB (Giga Byte) is now calculated in decimal (in the power of 10). And the actual binary computing unit (in the power of 2) is changed to GiB (Gibibye).
So, when I deployed a server with 2 GB of RAM, it got me only 1.86 GiB. The
free -h rounded up the numbers and hence it shows 1.9 GiB.
Check free RAM in real-time
If you want to keep a tab on the memory usage, you can combine the watch and free command.
This will change the output of the free command after every 2 seconds.
To stop the continuously running command, press Ctrl+C.
An alternative and in my opinion better way is to the top command. Not only does it show the total memory usage in real-time, but it also shows the memory consumption by various processes.
Just run the command in the terminal:
By default, the top command output is sorted by CPU consumption. You can press Shift+M to sort it by memory.
To exit the top command, press the Ctrl+C keys.
That's enough discussion on the memory unit. Let's see how can you see what type of RAM your system has.
Check the type and speed of RAM
The dependable DMI table decoder command
dmidecode gives you all kinds of information about your system's hardware.
To see the RAM details, you should filter its output on the memory like this:
sudo dmidecode --type memory
Yes, you need to use sudo or be root to use this command.
You should see a long output. You'll see part of the output is repeated for each core of processors you have. My system in the example has 8 cores and it repeats the same for 8 times.
# dmidecode 3.3 Getting SMBIOS data from sysfs. SMBIOS 3.2 present. Handle 0x1000, DMI type 16, 23 bytes Physical Memory Array Location: System Board Or Motherboard Use: System Memory Error Correction Type: None Maximum Capacity: 16 GB Error Information Handle: Not Provided Number Of Devices: 8 Handle 0x1100, DMI type 17, 84 bytes Memory Device Array Handle: 0x1000 Error Information Handle: Not Provided Total Width: 16 bits Data Width: 16 bits Size: 2 GB Form Factor: Row Of Chips Set: None Locator: Motherboard Bank Locator: Not Specified Type: LPDDR4 Type Detail: Synchronous Speed: 4267 MT/s Manufacturer: Not Specified Serial Number: Not Specified Asset Tag: Not Specified Part Number: Not Specified Rank: 1 Configured Memory Speed: 4267 MT/s Minimum Voltage: Unknown Maximum Voltage: Unknown Configured Voltage: 0.6 V Memory Technology: DRAM Memory Operating Mode Capability: Volatile memory Firmware Version: Not Specified Module Manufacturer ID: Bank 1, Hex 0x2C Module Product ID: Unknown Memory Subsystem Controller Manufacturer ID: Unknown Memory Subsystem Controller Product ID: Unknown Non-Volatile Size: None Volatile Size: 2 GB Cache Size: None Logical Size: None
What you need to focus here is the total size (you already know), speed and type of RAM.
As you can see in the screenshot above, I have LDDR4 RAM with 4276 MT/s of speed.
That was good, right? Now you know how to check RAM size in Ubuntu command line. You also learned to check memory usage in real-time.
If you have any questions or suggestions, let me know in the comments.