1. 程式人生 > >linux下檢視記憶體使用情況方法總結

linux下檢視記憶體使用情況方法總結

1. /proc/meminfo

檢視RAM使用情況最簡單的方法是通過/proc/meminfo。這個動態更新的虛擬檔案實際上是許多其他記憶體相關工具(如:free / ps / top)等的組合顯示。/proc/meminfo列出了所有你想了解的記憶體的使用情況。程序的記憶體使用資訊也可以通過/proc/<pid>/statm 和 /proc/<pid>/status 來檢視。

MemTotal:       65736300 kB                                                 
MemFree:        61483264 kB
MemAvailable:   63295320 kB
Buffers:          199996 kB
Cached:          1853200 kB
SwapCached:            0 kB
Active:          2275296 kB
Inactive:        1196928 kB
Active(anon):    1219904 kB
Inactive(anon):    24528 kB
Active(file):    1055392 kB
Inactive(file):  1172400 kB
Unevictable:          32 kB
Mlocked:              32 kB
SwapTotal:      66876412 kB
SwapFree:       66876412 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:       1419252 kB
Mapped:           410880 kB
Shmem:             26636 kB
Slab:             316264 kB
SReclaimable:     196264 kB
SUnreclaim:       120000 kB
KernelStack:       20080 kB
PageTables:        54428 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    99744560 kB
Committed_AS:    7794816 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      384772 kB
DirectMap2M:     8822784 kB
DirectMap1G:    59768832 kB

MemTotal: 所有可用RAM大小 (即實體記憶體減去一些預留位和核心的二進位制程式碼大小)

MemFree: LowFree與HighFree的總和,被系統留著未使用的記憶體

Buffers: 用來給檔案做緩衝大小

Cached: 被高速緩衝儲存器(cache memory)用的記憶體的大小(等於 diskcache minus SwapCache ).

SwapCached:被高速緩衝儲存器(cache memory)用的交換空間的大小已經被交換出來的記憶體,但仍然被存放在swapfile中。用來在需要的時候很快的被替換而不需要再次開啟I/O埠。

Active: 在活躍使用中的緩衝或高速緩衝儲存器頁面檔案的大小,除非非常必要否則不會被移作他用.

 Inactive: 在不經常使用中的緩衝或高速緩衝儲存器頁面檔案的大小,可能被用於其他途徑.

HighTotal:

 HighFree: 該區域不是直接對映到核心空間。核心必須使用不同的手法使用該段記憶體。

LowTotal:

LowFree: 低位可以達到高位記憶體一樣的作用,而且它還能夠被核心用來記錄一些自己的資料結構。

SwapTotal: 交換空間的總大小

SwapFree: 未被使用交換空間的大小

Dirty: 等待被寫回到磁碟的記憶體大小。

 Writeback: 正在被寫回到磁碟的記憶體大小。

AnonPages:未對映頁的記憶體大小

Mapped: 裝置和檔案等對映的大小。

Slab: 核心資料結構快取的大小,可以減少申請和釋放記憶體帶來的消耗。

SReclaimable:可收回Slab的大小

SUnreclaim:不可收回Slab的大小(SUnreclaim+SReclaimable=Slab)

PageTables:管理記憶體分頁頁面的索引表的大小。

NFS_Unstable:不穩定頁表的大小

Bounce:

Committed_AS:

VmallocTotal: 可以vmalloc虛擬記憶體大小

VmallocUsed: 已經被使用的虛擬記憶體大小。

備註:

佔用記憶體的測量

測量一個程序佔用了多少記憶體,linux為我們提供了一個很方便的方法,/proc目錄為我們提供了所有的資訊,實際上top等工具也通過這裡來獲取相應的資訊。

/proc/meminfo 機器的記憶體使用資訊

/proc/pid/maps pid為程序號,顯示當前程序所佔用的虛擬地址。

/proc/pid/statm 程序所佔用的記憶體

2、top命令是Linux下常用的效能分析工具,能夠實時顯示系統中各個程序的資源佔用狀況,類似於Windows的任務管理。

top - 10:32:33 up 10 days, 2 min,  1 user,  load average: 0.34, 0.13, 0.05
任務: 535 total,   1 running, 362 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.4 us,  0.2 sy,  0.0 ni, 99.0 id,  0.4 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 65736300 total, 61232472 free,  2200364 used,  2303464 buff/cache
KiB Swap: 66876412 total, 66876412 free,        0 used. 63139372 avail Mem 

程序 USER      PR  NI    VIRT    RES    SHR   %CPU %MEM     TIME+ COMMAND     
 1898 wsw       20   0 6312308 317052  98232 S   6.3  0.5  10:44.78 gnome-shell 
 1711 wsw       20   0  515208  81308  50988 S   3.6  0.1   2:45.13 Xorg        
28159 wsw       20   0 2002716 310040 146712 S   3.0  0.5   0:38.59 Web Content 
 2988 wsw       20   0  887524  72096  50196 S   2.0  0.1   1:31.72 gnome-term+ 
27554 wsw       20   0 2664744 385684 149224 S   1.7  0.6  10:43.33 firefox     
20178 root      20   0   43960   4016   3180 R   1.0  0.0   0:01.64 top         
    1 root      20   0  225708   9660   6888 S   0.3  0.0   0:21.00 systemd     
 1070 message+  20   0   51768   6220   3860 S   0.3  0.0   0:16.15 dbus-daemon 
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.14 kthreadd    
    4 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 kworker/0:+ 
    6 root      20   0       0      0      0 I   0.0  0.0   0:00.15 kworker/u6+ 
    7 root       0 -20       0      0      0 I   0.0  0.0   0:00.00 mm_percpu_+ 
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.04 ksoftirqd/0 
    9 root      20   0       0      0      0 I   0.0  0.0   0:16.33 rcu_sched   
   10 root      20   0       0      0      0 I   0.0  0.0   0:00.00 rcu_bh      
   11 root      rt   0       0      0      0 S   0.0  0.0   0:00.01 migration/0 
   12 root      rt   0       0      0      0 S   0.0  0.0   0:00.94 watchdog/0  
   13 root      20   0       0      0      0 S   0.0  0.0   0:00.00 cpuhp/0    

第一部分 -- 最上部的 系統資訊欄 :

  第一行(top):

    “10:32:33”為系統當前時刻;

    “10 days, 2 min”為系統啟動後到現在的運作時間;

    “1 users”為當前登入到系統的使用者,更確切的說是登入到使用者的終端數 -- 同一個使用者同一時間對系統多個終端的連線將被視為多個使用者連線到系統,這裡的使用者數也將表現為終端的數目;

    “load average”為當前系統負載的平均值,後面的三個值分別為1分鐘前、5分鐘前、15分鐘前程序的平均數,一般的可以認為這個數值超過 CPU 數目時,CPU 將比較吃力的負載當前系統所包含的程序;

  第二行(Tasks):

    “535 total”為當前系統程序總數;

    “1 running”為當前執行中的程序數;

    “362 sleeping”為當前處於等待狀態中的程序數;

    “0 stoped”為被停止的系統程序數;

    “0 zombie”為被複原的程序數;

  第三行(Cpus):

    分別表示了 CPU 當前的使用率;

  第四行(Mem):

    分別表示了記憶體總量、當前使用量、空閒記憶體量、以及緩衝使用中的記憶體量;

  第五行(Swap):

    表示類別同第四行(Mem),但此處反映著交換分割槽(Swap)的使用情況。通常,交換分割槽(Swap)被頻繁使用的情況,將被視作實體記憶體不足而造成的。

第二部分 -- 中間部分的內部命令提示欄:

第三部分 -- 最下部分的程序列表欄:

       PID:程序的ID
  USER:程序所有者
  PR:程序的優先級別,越小越優先被執行
  NInice:值
  VIRT:程序佔用的虛擬記憶體
  RES:程序佔用的實體記憶體
  SHR:程序使用的共享記憶體
  S:程序的狀態。S表示休眠,R表示正在執行,Z表示僵死狀態,N表示該程序優先值為負數
  %CPU:程序佔用CPU的使用率
  %MEM:程序使用的實體記憶體和總記憶體的百分比
  TIME+:該程序啟動後佔用的總的CPU時間,即佔用CPU使用時間的累加值。
  COMMAND:程序啟動命令名稱

3、free

free命令是一個快速檢視記憶體使用情況的方法,它是對 /proc/meminfo 收集到的資訊的一個概述。

              總計         已用        空閒      共享    緩衝/快取    可用
記憶體:    65736300     2198404    61234760       60092     2303136    63142164
交換:    66876412           0    66876412
 

下面是對這些數值的解釋:
total:總計實體記憶體的大小。
used:已使用多大。
free:可用有多少。
Shared:多個程序共享的記憶體總額。
Buffers/cached:磁碟快取的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
第四行就不多解釋了。
區別:第二行(mem)的used/free與第三行(-/+ buffers/cache) used/free的區別。 這兩個的區別在於使用的角度來看,第一行是從OS的角度來看,因為對於OS,buffers/cached 都是屬於被使用,所以他的可用記憶體是16176KB,已用記憶體是3250004KB,其中包括,核心(OS)使用+Application(X, oracle,etc)使用的+buffers+cached.
第三行所指的是從應用程式角度來看,對於應用程式來說,buffers/cached 是等於可用的,因為buffer/cached是為了提高檔案讀取的效能,當應用程式需在用到記憶體的時候,buffer/cached會很快地被回收。

4. GNOME System Monitor

GNOME System Monitor 是一個顯示最近一段時間內的CPU、記憶體、交換區及網路的使用情況的檢視工具。它還提供了一種檢視CPU及記憶體使用情況的方法。

1

$ gnome-system-monitor

5. memstat

memstat是一個有效識別executable(s), process(es) and shared libraries使用虛擬記憶體情況的命令。給定一個程序ID,memstat可以列出這個程序相關的可執行檔案、資料和共享庫。

[email protected]:/tmp# memstat -p 3028
117819000k: PID  3028 (/usr/lib/deja-dup/deja-dup-monitor)
      4k(      4k): /run/user/1002/dconf/user 3028
   4688k(      0k): /usr/lib/locale/locale-archive 3028
   2080k(     28k): /usr/lib/x86_64-linux-gnu/libffi.so.6.0.4 3028
   2256k(    204k): /usr/lib/x86_64-linux-gnu/libgirepository-1.0.so.1.0.0 3028
   2076k(     24k): /usr/lib/x86_64-linux-gnu/libdatrie.so.1.3.3 3028
   2084k(     32k): /usr/lib/x86_64-linux-gnu/libthai.so.0.3.0 3028
   2516k(    460k): /usr/lib/x86_64-linux-gnu/libgstbase-1.0.so.0.1401.0 3028
   2368k(    304k): /usr/lib/x86_64-linux-gnu/libsecret-1.so.0.0.0 3028
   2136k(     80k): /usr/lib/x86_64-linux-gnu/librest-0.7.so.0.0.0 3028

6、ps命令

 要對程序進行監測和控制,首先必須要了解當前程序的情況,也就是需要檢視當前程序,ps命令就是最基本程序檢視命令。使用該命令可以確定有哪些程序正在執行和執行的狀態、程序是否結束、程序有沒有殭屍、哪些程序佔用了過多的資源等等.總之大部分資訊都是可以通過執行該命令得到。ps是顯示瞬間程序的狀態,並不動態連續;如果想對程序進行實時監控應該用top命令。
引數:

  • -A :所有的程序均顯示出來,與 -e 具有同樣的效用;
  • -a : 顯示現行終端機下的所有程序,包括其他使用者的程序;
  • -u :以使用者為主的程序狀態 ;
  • x :通常與 a 這個引數一起使用,可列出較完整資訊。

[email protected]:/tmp# ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0 225708  9660 ?        Ss   8月24   0:21 /sbin/init spl
root         2  0.0  0.0      0     0 ?        S    8月24   0:00 [kthreadd]
root         4  0.0  0.0      0     0 ?        I<   8月24   0:00 [kworker/0:0H]
root         6  0.0  0.0      0     0 ?        I    8月24   0:00 [kworker/u64:0
root         7  0.0  0.0      0     0 ?        I<   8月24   0:00 [mm_percpu_wq]

  • UID 代表執行者身份
  • PID 程序的ID號!
  • PPID 父程序的ID;
  • C CPU使用的資源百分比
  • PRI指程序的執行優先權(Priority的簡寫),其值越小越早被執行;
  • NI 這個程序的nice值,其表示程序可被執行的優先順序的修正數值。
  • ADDR 這個是核心函式,指出該程式在記憶體的那個部分。如果是個執行 的程式,一般就是『 - 』
  • SZ 使用掉的記憶體大小;
  • WCHAN 目前這個程式是否正在運作當中,若為 - 表示正在運作;
  • TTY 登入者的終端機位置;
  • TIME 使用掉的 CPU 時間。
  • CMD 所下達的指令名稱

相關推薦

Linux檢視系統資訊方法總結

Linux下如何檢視系統啟動時間和執行時間1.檢視/proc/uptime檔案計算系統啟動時間: cat /proc/uptime 輸出: 5113396.94 575949.85第一數字即是系統已執行的時間5113396.94秒,運用系統工具date即可算出系統啟動時間

linux檢視記憶體使用情況方法總結

1. /proc/meminfo 檢視RAM使用情況最簡單的方法是通過/proc/meminfo。這個動態更新的虛擬檔案實際上是許多其他記憶體相關工具(如:free / ps / top)等的組合顯示。/proc/meminfo列出了所有你想了解的記憶體的使用情況。程序的記

linux檢視記憶體使用情況方法總結(轉)

轉載:http://www.php100.com/html/it/biancheng/2015/0109/8314.html [導讀] 在做Linux系統優化的時候,實體記憶體是其中最重要的一方面。自然的,Linux也提供了非常多的方法來監控寶貴的記憶體資源的

Linux檢視記憶體型號、主機板、硬碟等等

首先檢視是否安裝了dmidecode工具 [[email protected] ~]# dmidecode Linux 檢視記憶體的插槽數,已經使用多少插槽.每條記憶體多大: [[email protected] ~]# dmidecode|grep -

linux檢視cpu,記憶體,硬碟等硬體資訊的方法

說明:Linux下可以在/proc/cpuinfo中看到每個cpu的詳細資訊。但是對於雙核的cpu,在cpuinfo中會看到兩個cpu。常常會讓人誤以為是兩個單核的cpu。原文地址: http://www.hpboys.com/659.html一、linux CPU大小    [

linux檢視程序記憶體使用情況

動態檢視一個程序的記憶體使用 1、top命令 top -d 1 -p pid [,pid ...] //設定為delay 1s,預設是delay 3s 如果想根據記憶體使用量進行排序,可以shift + m(Sort by memory usage) 靜態檢視一個程序的記憶

Linux找出吃記憶體方法總結

開發十年,就只剩下這套架構體系了! >>>   

Linux檢視檔案和資料夾佔用記憶體大小、刪除日誌 命令

轉:https://www.cnblogs.com/lixuwu/p/5944062.html 閱讀目錄 1 Linux下檢視檔案和資料夾大小 2 刪除系統日誌等 3 實踐 場景:在sts中執行自動部署時候maven提示No space left on d

Linux檢視CPU和GPU使用情況

Linux下檢視CPU和GPU使用情況 本文記錄瞭如何在Linux系統(以Ubuntu 16.04為例)檢視電腦的GPU和CPU使用情況,包括命令和查詢得到的介面。更新於2018.10.18。 CPU使用情況檢視 動態檢視 開啟終端,輸入: top 即可看到實時

Linux檢視系統版本號和核心資訊的方法

本文轉載,侵刪!感謝博主”huoyuanshen”(✈機票點我) 參考URL:http://www.ha97.com/2987.html 簡要:1,lsb_release -a 檢視linux系統版本         &n

linux檢視CPU、記憶體、磁碟資訊,資料夾資訊,GPU資訊

1、檢視CPU資訊 # 總核數 = 物理CPU個數 X 每顆物理CPU的核數  # 總邏輯CPU數 = 物理CPU個數 X 每顆物理CPU的核數 X 超執行緒數 # 檢視物理CPU個數 cat /proc/cpuinfo| grep "physical id"| sort| uniq| w

LINUX檢視CPU、記憶體使用率的命令

1.top 使用許可權:所有使用者 使用方式:top [-] [d delay] [q] [c] [S] [s] [i] [n] [b] 說明:即時顯示process的動態 d :改變顯示的更新速度,或是在交談式指令列( interactive command)按s

linuxLinux檢視CPU型號,記憶體大小,硬碟空間的命令(詳解)

1 檢視CPU 1.1 檢視CPU個數 # cat /proc/cpuinfo | grep "physical id" | uniq | wc -l 2 **uniq命令:刪除重複行;wc –l命令:統計行數** 1.2 檢視CPU核數 # cat /proc/c

linux檢視記憶體使用情況

用 'top -i' 看看有多少程序處於 Running 狀態,可能系統存在記憶體或 I/O 瓶頸,用 free 看看系統記憶體使用情況,swap 是否被佔用很多,用 iostat 看看 I/O 負載情況... 還有一種辦法是 ps -ef | sort -k7 ,將程序按

Linux檢視某一個程式執行所佔用的記憶體【轉】

第一種方式 top -p 程序號 [[email protected] micro-service]$ top -p 20490 top - 16:50:32 up 6 days,  2:18,  1 user,  load average: 0.00,

linux檢視某一程式所佔記憶體

原文:https://blog.csdn.net/rickiyeat/article/details/70230253  第一種方式 top -p 程序號 1 [[email protected] micro-service]$ top -p 20490 top

linux檢視網路端口占用情況

命令: netstat -tupln 或者 netstat -pln 引數解釋: -t : 指明顯示TCP埠-u : 指明顯示UDP埠-p : 顯示程序ID(PID)和程式名稱,每一個套接字/埠都屬於一個程式.-l  : 僅顯示監聽套接字-- 所謂套接字就是使應用程式能夠讀寫與收發通訊協議(protoco

Linux檢視作業系統當前登入使用者資訊的四種方法

作為系統開發或維護人員,你可能經常會(在某個時候)需要檢視系統中有哪些使用者正在活動。有些時候,你甚至需要知道他(她)們正在做什麼。本文為我們總結了4種檢視系統使用者資訊(通過編號(ID))的方法。 1. 使用w命令檢視登入使用者正在使用的程序資訊 w命令用於顯示已經登入系統的使用者的名稱,以及他們

linux/mac檢視符號表方法【待補充】

Mac: 預設呼叫Xcode下的命令:objdump -t lib*.a | grep <*>          貌似只能檢視靜態庫 nm -D <libname> | grep <*>   可以檢視動態庫和靜態庫,但有時候獲取的符號表不

linux檢視檔案第幾行內容的方法

一,方法1 nl file-name |sed -n '5p'檢視第五行 二,方法2 head -n file_name|tail -1 檢視第n行三,方法3  .輸出一個檔案的第4行sed -