meminfo vmstat procrank top等詳解
http://blog.csdn.net/arnoldlu/article/details/8443794
meminfo
命令:cat /proc/meminfo
例項:
MemTotal: 234312 kB
MemFree: 3448 kB
Buffers: 92 kB
Cached: 18052 kB
SwapCached: 25556 kB
Active: 50564 kB
Inactive: 50236 kB
Active(anon): 41924 kB
Inactive(anon): 41968 kB
Active(file): 8640 kB
Inactive(file): 8268 kB
Unevictable: 1164 kB
Mlocked: 17028 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 234312 kB
LowFree: 3448 kB
SwapTotal: 196604 kB
SwapFree: 114384 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 83900 kB
Mapped: 53944 kB
Shmem: 44 kB
Slab: 17540 kB
SReclaimable: 5828 kB
SUnreclaim: 11712 kB
KernelStack: 4184 kB
PageTables: 5304 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 313760 kB
Committed_AS: 2792956 kB
VmallocTotal: 778240 kB
VmallocUsed: 115160 kB
VmallocChunk: 405852 kB
解釋:
MemTotal: 所有可用RAM大小 (即實體記憶體減去一些預留位和核心的二進位制程式碼大小)
MemFree: LowFree與HighFree的總和
Buffers: 用來給塊裝置做的緩衝大小(只記錄檔案系統的metadata以及 tracking in-flight pages,就是說 buffers是用來儲存,目錄裡面有什麼內容,許可權等等。)
Cached: 用來給檔案做緩衝大小(直接用來記憶我們開啟的檔案). 它不包括SwapCached
SwapCached: 已經被交換出來的記憶體,但仍然被存放在swapfile中。用來在需要的時候很快的被替換而不需要再次開啟I/O埠。
Active: 最近經常被使用的記憶體,除非非常必要否則不會被移作他用.
Inactive: 最近不經常被使用的記憶體,非常用可能被用於其他途徑.
HighTotal:
HighFree: 高位記憶體是指所有在860MB以上的記憶體空間,該區域主要用於使用者空間的程式或者是快取頁面。核心必須使用不同的手法使用該段記憶體,因此它比低位記憶體要慢一些。
LowTotal:
LowFree: 低位可以達到高位記憶體一樣的作用,而且它還能夠被核心用來記錄一些自己的資料結構。
Among many other things, it is where everything from the Slab is
allocated. Bad things happen when you're out of lowmem.
SwapTotal: 交換空間的總和
SwapFree: 從RAM中被替換出暫時存在磁碟上的空間大小
Dirty: 等待被寫回到磁碟的記憶體大小。
Writeback: 正在被寫回到磁碟的記憶體大小。
Mapped: 影射檔案的大小。
Slab: 核心資料結構快取
VmallocTotal: vmalloc記憶體大小
VmallocUsed: 已經被使用的虛擬記憶體大小。
VmallocChunk: largest contigious block of vmalloc area which is free
CommitLimit: Based on the overcommit ratio('vm.overcommit_ratio'),
this is the total amount of memory currently available to
be allocated on the system. This limit is only adhered to
if strict overcommit accounting is enabled (mode 2 in
'vm.overcommit_memory').
The CommitLimit is calculated with the following formula:
CommitLimit = ('vm.overcommit_ratio' * Physical RAM) + Swap
For example, on a system with 1G of physical RAM and 7G
of swap with a `vm.overcommit_ratio` of 30 it would
yield a CommitLimit of 7.3G.
For more details, see the memory overcommit documentation
in vm/overcommit-accounting.
Committed_AS: The amount of memory presently allocated on
the system.
The committed memory is a sum of all of the memory which
has been allocated by processes, even if it has not been
"used" by them as of yet. A process which malloc()'s 1G
of memory, but only touches 300M of it will only show up
as using 300M of memory even if it has the address space
allocated for the entire 1G. This 1G is memory which has
been "committed" to by the VM and can be used at any time
by the allocating application. With strict overcommit
enabled on the system (mode 2 in 'vm.overcommit_memory'),
allocations which would exceed the CommitLimit (detailed
above) will not be permitted. This is useful if one needs
to guarantee that processes will not fail due to lack of
memory once that memory has been successfully allocated.
VmallocTotal: 可以vmalloc虛擬記憶體大小
VmallocUsed: 已經被使用的虛擬記憶體大小。
VmallocChunk: largest contigious block of vmalloc area which is free
提示:
使用adb shell cat /proc/meminfo 命令,檢視剩餘的空間還有多少,通常的系統剩餘空間是: MemFree + cached
MemTotal: 483724 kB
MemFree: 5616 kB
Buffers: 2732 kB
Cached: 158632 kB
SwapCached: 0 kB
Active: 277336 kB
Inactive: 83232 kB
Active(anon): 197452 kB
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 144 186164 105252 2386848 0 0 18 166 83 2 48 21 31 0
2 0 144 189620 105252 2386848 0 0 0 177 1039 1210 34 10 56 0
0 0 144 214324 105252 2386848 0 0 0 10 1071 670 32 5 63 0
0 0 144 202212 105252 2386848 0 0 0 189 1035 558 20 3 77 0
2 0 144 158772 105252 2386848 0 0 0 203 1065 2832 70 14 15 0
vmstat所帶引數請用man vmstat檢視
Procs
r: 等待執行的程式數 b: 處在非中斷睡眠狀態的程式數 w: 被交換出去的可執行的程式數。此數由 linux 計算得出,但 linux 並不耗盡交換空間
Memory
swpd: 虛擬記憶體使用情況,單位:KB
free: 空閒的記憶體,單位KB
buff: 被用來做為快取的記憶體數,單位:KB
Swap
si: 從磁碟交換到記憶體的交換頁數量,單位:KB/秒
so: 從記憶體交換到磁碟的交換頁數量,單位:KB/秒
IO
bi: 傳送到塊裝置的塊數,單位:塊/秒
bo: 從塊裝置接收到的塊數,單位:塊/秒
System
in: 每秒的中斷數,包括時鐘中斷
cs: 每秒的環境(上下文)切換次數
CPU
按 CPU 的總使用百分比來顯示
us: CPU 使用時間
sy: CPU 系統使用時間
id: 閒置時間
準測
r,b≈0,
如果fre,將會出現連續不斷的頁面排程,將導致系統效能問題。
對於page列,re,pi,po,cy維持於比較穩定的狀態,PI率不超過5,如果有pagin發生,那麼關聯頁面必須先進行pageout
在記憶體相對緊張的環境下pagein會強制對不同的頁面進行steal操作。如果系統正在讀一個大批的永久頁面,你也許可以看到po和pi列
會出現不一致的增長,這種情景並不一定表明系統負載過重,但是有必要對應用程式的資料訪問模式進行見檢查。在穩定的情況下,掃描率和重置率幾乎相等,在
多個程式處理使用不同的頁面的情況下,頁面會更加不穩定和雜亂,這時掃描率可能會比重置率高出。
faults列,in,sy,cs會不斷跳躍,這裡沒有明確的限制,唯一的就是這些值最少大於100
cpu列,us,sys,id和wa也是不確定的,最理想的狀態是使cpu處於100%工作狀態,單這隻適合單使用者的情況下。
如果在多使用者環境中us+sys》80,程式就會在執行佇列中花費等待時間,響應時間和吞吐量就會下降。wa>40表明磁碟io沒有也許存在不合理的平衡,或者對磁碟操作比較頻繁,
vmstat各項:
procs:
r-->在執行佇列中等待的程式數
b-->在等待io的程式數
w-->可以進入執行佇列但被替換的程式
memoy
swap-->現時可用的交換記憶體(k表示)
free-->空閒的記憶體(k表示)
pages
re--》回收的頁面
mf--》非嚴重錯誤的頁面
pi--》進入頁面數(k表示)
po--》出頁面數(k表示)
fr--》空餘的頁面數(k表示)
de--》提前讀入的頁面中的未命中數
sr--》通過時鐘演算法掃描的頁面
disk 顯示每秒的磁碟操作。 s表示scsi盤,0表示盤號
fault 顯示每秒的中斷數
in--》裝置中斷
sy--》系統中斷
cy--》cpu交換
cpu 表示cpu的使用狀態
cs--》使用者程式使用的時間
sy--》系統程式使用的時間
id--》cpu空閒的時間
如果 r經常大於 4 ,且id經常少於40,表示cpu的負荷很重。
如果pi,po 長期不等於0,表示記憶體不足。
如果disk 經常不等於0, 且在 b中的佇列 大於3, 表示 io效能不好。
Linux在具有高穩定性、可靠性的同時,具有很好的可伸縮性和擴充套件性,能夠針對不同的應用和硬體環境調整,優化出滿足當前應用需要的最佳效能。因此企業在維護Linux系統、進行系統調優時,瞭解系統效能分析工具是至關重要的。
在Linux下有很多系統效能分析工具,比較常見的有top、free、ps、time、timex、uptime等。下文將介紹幾個較為重要的效能分析工具vmstat、iostat和sar及其使用。
用vmstat監視記憶體使用情況
vmstat是Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,可對作業系統的虛擬記憶體、程式、CPU活動進行監視。它是對系統的整體情況進行統計,不足之處是無法對某個程式進行深入分析。
vmstat的語法如下:
vmstat [-V] [-n] [delay [count]]
其中,-V表示列印出版本資訊;-n表示在週期性迴圈輸出時,輸出的頭部資訊僅顯示一次;delay是兩次輸出之間的延遲時間;count是指按照這個時間間隔統計的次數。對於vmstat輸出各欄位的含義,可執行man vmstat檢視
PID Vss Rss Pss Uss cmdline
476 65312K 65284K 38499K 35560K com.android.launcher
268 54916K 54880K 30001K 27000K system_server
110 32196K 28988K 18924K 12432K /system/bin/surfaceflinger
347 42400K 42320K 15445K 10704K com.android.systemui
對於尚明中佔用比較異常的process,可以透過 adb shell showmap [pid](僅ENG版本可用)檢視具體使用情況。以system_server 為例,先adb shell ps system_server得到pid:
system 268 111 406736 54876 ffffffff 400e9c70 S system_server
virtual shared shared private private
size RSS PSS clean dirty clean dirty # object
-------- -------- -------- -------- -------- -------- -------- ---- ------------------------------
72 20 20 0 0 20 0 1 /data/dalvik-cache/system@app@SettingsProvider.apk@classes.dex
352 148 103 32 16 48 52 18 /data/dalvik-cache/system@framework@android.policy.jar@classes.dex
1348 28 8 20 0 8 0 1 /data/dalvik-cache/system@framework@apache-xml.jar@classes.dex
956 60 13 52 0 8 0 1 /data/dalvik-cache/system@framework@bouncycastle.jar@classes.dex
24 8 0 8 0 0 0 1 /data/dalvik-cache/system@framework@core-junit.jar@classes.dex
3292 1056 126 1012 0 44 0 1 /data/dalvik-cache/system@framework@core.jar@classes.dex
top
top命令是Linux下常用的效能分析工具,能夠實時顯示系統中各個程式的資源佔用狀況,類似於Windows的工作管理員。下面詳細介紹它的使用方法。
top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48 Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si Mem: 191272k total, 173656k used, 17616k free, 22052k buffers Swap: 192772k total, 0k used, 192772k free, 123988k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd 14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top 1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init 2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 |
統計資訊區前五行是系統整體的統計資訊。第一行是任務佇列資訊,同 uptime 命令的執行結果。其內容如下:
01:06:48 | 當前時間 |
up 1:22 | 系統執行時間,格式為時:分 |
1 user | 當前登入使用者數 |
load average: 0.06, 0.60, 0.48 | 系統負載,即任務佇列的平均長度。 三個數值分別為 1分鐘、5分鐘、15分鐘前到現在的平均值。 |
第二、三行為程式和CPU的資訊。當有多個CPU時,這些內容可能會超過兩行。內容如下:
Tasks: 29 total | 程式總數 |
1 running | 正在執行的程式數 |
28 sleeping | 睡眠的程式數 |
0 stopped | 停止的程式數 |
0 zombie | 殭屍程式數 |
Cpu(s): 0.3% us | 使用者空間佔用CPU百分比 |
1.0% sy | 核心空間佔用CPU百分比 |
0.0% ni | 使用者程式空間內改變過優先順序的程式佔用CPU百分比 |
98.7% id | 空閒CPU百分比 |
0.0% wa | 等待輸入輸出的CPU時間百分比 |
0.0% hi | |
0.0% si |
最後兩行為記憶體資訊。內容如下:
Mem: 191272k total | 實體記憶體總量 |
173656k used | 使用的實體記憶體總量 |
17616k free | 空閒記憶體總量 |
22052k buffers | 用作核心快取的記憶體量 |
Swap: 192772k total | 交換區總量 |
0k used | 使用的交換區總量 |
192772k free | 空閒交換區總量 |
123988k cached | 緩衝的交換區總量。 記憶體中的內容被換出到交換區,而後又被換入到記憶體,但使用過的交換區尚未被覆蓋, 該數值即為這些內容已存在於記憶體中的交換區的大小。 相應的記憶體再次被換出時可不必再對交換區寫入。 |
程式資訊區統計資訊區域的下方顯示了各個程式的詳細資訊。首先來認識一下各列的含義。
序號 | 列名 | 含義 |
a | PID | 程式id |
b | PPID | 父程式id |
c | RUSER | Real user name |
d | UID | 程式所有者的使用者id |
e | USER | 程式所有者的使用者名稱 |
f | GROUP | 程式所有者的組名 |
g | TTY | 啟動程式的終端名。不是從終端啟動的程式則顯示為 ? |
h | PR | 優先順序 |
i | NI | nice值。負值表示高優先順序,正值表示低優先順序 |
j | P | 最後使用的CPU,僅在多CPU環境下有意義 |
k | %CPU | 上次更新到現在的CPU時間佔用百分比 |
l | TIME | 程式使用的CPU時間總計,單位秒 |
m | TIME+ | 程式使用的CPU時間總計,單位1/100秒 |
n | %MEM | 程式使用的實體記憶體百分比 |
o | VIRT | 程式使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES |
p | SWAP | 程式使用的虛擬記憶體中,被換出的大小,單位kb。 |
q | RES | 程式使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA |
r | CODE | 可執行程式碼佔用的物理記憶體大小,單位kb |
s | DATA | 可執行程式碼以外的部分(資料段+棧)佔用的物理記憶體大小,單位kb |
t | SHR | 共享記憶體大小,單位kb |
u | nFLT | 頁面錯誤次數 |
v | nDRT | 最後一次寫入到現在,被修改過的頁面數。 |
w | S | 程式狀態。 D=不可中斷的睡眠狀態 R=執行 S=睡眠 T=跟蹤/停止 Z=殭屍程式 |
x | COMMAND | 命令名/命令列 |
y | WCHAN | 若該程式在睡眠,則顯示睡眠中的系統函式名 |
z | Flags | 任務標誌,參考 sched.h |
預設情況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通過下面的快捷鍵來更改顯示內容。
更改顯示內容通過 f 鍵可以選擇顯示的內容。按 f 鍵之後會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,最後按Enter鍵確定。
按 o 鍵可以改變列的顯示順序。按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z 可以將相應的列向左移動。最後按Enter鍵確定。
按大寫的 F 或 O 鍵,然後按 a-z 可以將程式按照相應的列進行排序。而大寫的 R 鍵可以將當前的排序倒轉。
相關文章
- vmstat詳解
- vmstat命令詳解
- vmstat 引數詳解
- AIX vmstat命令詳解AI
- vmstat的應用詳解
- vmstat linux命令詳解Linux
- stat 命令家族(1)- 詳解 vmstat
- vmstat與iostat詳解(zt)iOS
- linux下/proc/meminfo解讀Linux
- Android procrankAndroid
- top命令詳解
- Vmstat 命令詳細介紹
- Linux top詳解Linux
- top命令資訊詳解
- TOP命令詳解(轉)
- 【轉】Linux中Vmstat命令列出的屬性詳解Linux命令列
- top命令輸出詳解
- linux top 命令詳解Linux
- Linux命令top詳解Linux
- linux top命令詳解Linux
- top命令詳細解釋
- Linux命令----top詳解Linux
- Linux作業系統Vmstat命令列出的屬性詳解Linux作業系統命令列
- linux top命令詳解--轉Linux
- 冪等設計詳解
- 【轉】linux-命令top詳解Linux
- LINUX top命令詳細解讀Linux
- linux系統top命令詳解Linux
- 各種UNIX平臺下vmstat與iostat輸出結果詳解iOS
- linux top命令詳解 (摘自chinaunix)Linux
- V$SYSTEM_EVENT等使用詳解
- vmstat命令
- meminfo一些容易混淆的點
- JavaScript密碼強度等級詳解JavaScript密碼
- ClickHouse、Doris、 Impala等MPP架構詳解架構
- (轉)vmstat 命令
- AIX vmstat分析AI
- vmstat的使用