1. 程式人生 > 實用技巧 >linux檢視系統記憶體使用情況

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 有較詳細的解釋。

參考博文:
(1)https://www.cnblogs.com/leaves1024/p/11190390.html