linux檢視系統記憶體使用情況
一、free命令
free 命令會顯示系統記憶體的使用情況,包括實體記憶體、交換記憶體(swap)和核心緩衝區記憶體等。
[root@mail logs]# free -h
total used free shared buff/cache available
Mem: 7.6G 6.6G 657M 1.3M 435M 804M
Swap: 0B 0B 0B
釋義:
Mem:記憶體使用情況。
Swap:交換空間(虛擬記憶體)使用情況。
total:系統總共可用實體記憶體、交換空間大小。
used:已經被使用的實體記憶體、交換空間大小。
free:剩餘可用實體記憶體、交換空間大小。
shared:被共享使用的實體記憶體大小。
buff/cache:被 buffer 和 cache 使用的實體記憶體大小。
available:還可以被應用程式使用的實體記憶體大小。
常見使用方法:
free -h //以更友好的方式顯示,會以K、M、G為單位來顯示
free -h -s 3 //以一定時間間隔重複的輸出,這個命令是每3秒輸出一次
二、ps 命令
ps 命令可以檢視系統中各個程序的執行情況,包括了程序佔用的記憶體,%MEM
[root@mail logs]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.0 191160 2760 ? Ss Aug13 12:54 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0.0 0.0 0 0 ? S Aug13 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S Aug13 1:58 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< Aug13 0:00 [kworker/0:0H]
使用man ps檢視ps命令的用法。
三、top命令
使用top命令,可以檢視正在執行的程序和系統負載資訊,包括cpu負載、記憶體使用、各個程序所佔系統資源等。
[root@mail logs]# top
top - 10:45:11 up 81 days, 2:09, 9 users, load average: 0.07, 0.06, 0.08
Tasks: 130 total, 2 running, 128 sleeping, 0 stopped, 0 zombie
%Cpu(s): 1.3 us, 1.2 sy, 0.0 ni, 97.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8009184 total, 588644 free, 6912424 used, 508116 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 800748 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24238 root 10 -10 186060 59720 5404 S 1.3 0.7 585:01.24 AliYunDun
1326 root 20 0 3261644 544324 0 S 0.7 6.8 125:18.83 java
top命令以一定頻率動態更新這些統計資訊,按q退出。
反映系統記憶體使用狀況的是下面這兩行:
KiB Mem : 8009184 total, 588644 free, 6912424 used, 508116 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 800748 avail Mem
Mem行是實體記憶體使用情況,分別是:實體記憶體總量,已使用的實體記憶體總量,空閒實體記憶體總量,用作核心快取區的記憶體量。
Swap行是交換區使用情況,分別是:交換區總量,已使用的交換區總量,空閒交換區總量,緩衝的交換區總量。
Top命令的下側區域顯示的是各個程序使用的系統資源統計資訊,記憶體相關列如下:
- VIRT列:程序使用的虛擬記憶體總量,單位kb。
- RES列:程序使用的、未被換出的實體記憶體大小,單位kb。
- SHR列:共享記憶體大小,單位kb。
- %MEM 列:程序使用的實體記憶體百分比。
四、vmstat命令
vmstat 是Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,可對作業系統的虛擬記憶體、程序、CPU活動進行監控,是對系統的整體情況進行的統計。
[root@mail logs]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 616780 17824 473136 0 0 32 22 3 2 1 1 98 0 0
與記憶體使用情況相關的是memory列和swap列,我們只看這兩列。
memory列
swpd:使用的虛擬記憶體大小。
free:空閒實體記憶體大小。
buff:buffer cache記憶體大小。
cache:page cache的記憶體大小。
swap列
si:每秒從交換區讀入到記憶體的大小,由磁碟調入記憶體(單位:kb/s)
so:每秒從記憶體寫出到交換區的大小,由記憶體調入磁碟(單位:kb/s)
常見用法:
vmstat 1 //每隔1s列印一次
vmstat 1 5 //每隔1秒列印一次,列印五次
vmstat -s //顯示記憶體相關統計資訊及多種系統活動數量
五、cat /proc/meminfo
/proc/meminfo是瞭解Linux系統記憶體使用狀況的主要介面,我們最常用的”free”、”vmstat”等命令就是通過它獲取資料的。/proc/meminfo所包含的資訊比”free”等命令要豐富得多,但也很複雜,不再一一解釋了。感興趣的話可以看看這篇文章:http://linuxperf.com/?p=142,對 /proc/meminfo 有較詳細的解釋。