Linux top命令詳解

1 介紹TOP

top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況,類似於Windows的任務管理器
在這裏插入圖片描述
在這裏插入圖片描述

1.1 第一行,任務隊列信息,同 uptime 命令的執行結果

在這裏插入圖片描述

系統時間:17:02:37
運行時間:up 111 days, 1:44,
當前登錄用戶:  3 user
負載均衡load average: 0.00, 0.01, 0.05

load average後面的三個數分別是1分鐘、5分鐘、15分鐘的負載情況。
load average數據是每隔5秒鐘檢查一次活躍的進程數,然後按特定算法計算出的數值。如果這個數除以邏輯CPU的數量,結果高於5的時候就表明系統在超負荷運轉了

第二行,Tasks — 任務(進程)

總進程:178 total, 運行:1 running, 休眠:177 sleeping, 停止: 0 stopped, 殭屍進程: 0 zombie

第三行,cpu狀態信息

0.0%us【user space】— 用戶空間佔用CPU的百分比。

0.3%sy【sysctl】— 內核空間佔用CPU的百分比。

0.0%ni【】— 改變過優先級的進程佔用CPU的百分比

99.7%id【idolt】— 空閒CPU百分比

0.0%wa【wait】— IO等待佔用CPU的百分比

0.0%hi【Hardware IRQ】— 硬中斷佔用CPU的百分比

0.0%si【Software Interrupts】— 軟中斷佔用CPU的百分比

第四行,內存狀態

  1003020k total,   234464k used,   777824k free,    24084k buffers【緩存的內存量】

第五行,swap交換分區信息

2031612k total,      536k used,  2031076k free,   505864k cached【緩衝的交換區總量】
備註:

可用內存=free + buffer + cached

對於內存監控,在top裏我們要時刻監控第五行swap交換分區的used,如果這個數值在不斷的變化,說明內核在不斷進行內存和swap的數據交換,這是真正的內存不夠用了。

第四行中使用中的內存總量(used)指的是現在系統內核控制的內存數,

第四行中空閒內存總量(free)是內核還未納入其管控範圍的數量。

納入內核管理的內存不見得都在使用中,還包括過去使用過的現在可以被重複利用的內存,內核並不把這些可被重新使用的內存交還到free中去,因此在linux上free內存會越來越少,但不用爲此擔心。

第六行,空行

第七行以下:各進程(任務)的狀態監控

PID — 進程id
USER — 進程所有者
PR — 進程優先級
NI — nice值。負值表示高優先級,正值表示低優先級
VIRT — 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
RES — 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
SHR — 共享內存大小,單位kb
S —進程狀態。D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=殭屍進程
%CPU — 上次更新到現在的CPU時間佔用百分比
%MEM — 進程使用的物理內存百分比
TIME+ — 進程使用的CPU時間總計,單位1/100秒
COMMAND — 進程名稱(命令名/命令行)

詳解

VIRT:virtual memory usage 虛擬內存
1、進程“需要的”虛擬內存大小,包括進程使用的庫、代碼、數據等
2、假如進程申請100m的內存,但實際只使用了10m,那麼它會增長100m,而不是實際的使用量

RES:resident memory usage 常駐內存
1、進程當前使用的內存大小,但不包括swap out
2、包含其他進程的共享
3、如果申請100m的內存,實際使用10m,它只增長10m,與VIRT相反
4、關於庫佔用內存的情況,它只統計加載的庫文件所佔內存大小

SHR:shared memory 共享內存
1、除了自身進程的共享內存,也包括其他進程的共享內存
2、雖然進程只使用了幾個共享庫的函數,但它包含了整個共享庫的大小
3、計算某個進程所佔的物理內存大小公式:RES – SHR
4、swap out後,它將會降下來

DATA
1、數據佔用的內存。如果top沒有顯示,按f鍵可以顯示出來。
2、真正的該程序要求的數據空間,是真正在運行中要使用的。

top 運行中可以通過 top 的內部命令對進程的顯示方式進行控制。內部命令如下:
s – 改變畫面更新頻率
l – 關閉或開啓第一部分第一行 top 信息的表示
t – 關閉或開啓第一部分第二行 Tasks 和第三行 Cpus 信息的表示
m – 關閉或開啓第一部分第四行 Mem 和 第五行 Swap 信息的表示
N – 以 PID 的大小的順序排列表示進程列表
P – 以 CPU 佔用率大小的順序排列進程列表
M – 以內存佔用率大小的順序排列進程列表
h – 顯示幫助
n – 設置在進程列表所顯示進程的數量
q – 退出 top
s – 改變畫面更新週期

參考網址 https://www.cnblogs.com/niuben/p/12017242.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章