學習top命令
可看此博文:https://www.cnblogs.com/poloyy/p/12551943.html
統計信息區(系統資源信息區)
前五行,即列表上方的五行
第一行:輸出系統任務隊列信息
- 18:46:38:系統當前時間
- up 2days 1:54:系統開機后到現在的總運行時間
- 1 user:當前登錄用戶數
- load average: 0, 0.01, 0.05:系統負載,系統運行隊列的平均利用率,可認為是可運行進程的平均數;三個數值分別為 1分鍾、5分鍾、15分鍾前到現在的平均值;單核CPU中load average的值=1時表示滿負荷狀態,多核CPU中滿負載的load average值為1*CPU核數
第二行:任務進程信息
- total:系統全部進程的數量
- running:運行狀態的進程數量
- sleeping:睡眠狀態的進程數量
- stoped:停止狀態的進程數量
- zombie:僵屍進程數量
第三行:CPU信息
- us:用戶空間占用CPU百分比
- sy:內核空間占用CPU百分比
- ni:已調整優先級的用戶進程的CPU百分比
- id:空閑CPU百分比,越低說明CPU使用率越高
- wa:等待IO完成的CPU百分比
- hi:處理硬件中斷的占用CPU百分比
- si:處理軟中斷占用CPU百分比
- st:虛擬機占用CPU百分比
第四行:物理內存信息
以下內存單位均為MB
- total:物理內存總量
- free:空閑內存總量
- used:使用中內存總量
- buff/cacge:用於內核緩存的內存量
第五行:交換區內存信息
- total:交換區總量
- free:空閑交換區總量
- used:使用的交換區總量
- avail Mem:可用交換區總量
注:如果used不斷在變化, 說明內核在不斷進行內存和swap的數據交換,說明內存真的不夠用了
問題:內存空間還剩多少空閑呢?
答案:空閑內存=空閑內存總量+緩沖內存量 +可用交換區總量
進程信息區(進程列表)
- PID:進程號
- USER:運行進程的用戶
- PR:優先級
- NI:nice值。負值表示高優先級,正值表示低優先級
- VIRT:進程虛擬內存的大小,只要是進程申請過的內存,即便還沒有真正分配物理內存,也會計算在內;VIRT=SWAP+RES
- RES:進程實際使用的物理內存大小,不包括 Swap 和共享內存
- SHR:共享內存大小,比如與其他進程共同使用的共享內存、加載的動態鏈接庫以及程序的代碼段等
- S:進程狀態
- %CPU:CPU 使用率
- %MEM:進程使用武力內存占系統總內存的百分比
- TIME+:上次啟動后至今的總運行時間
- COMMAND:命令名or命令行
內存的重點
- 虛擬內存通常並不會全部分配給物理內存,從上面的輸出可以發現每個進程的虛擬內存都比物理內存大得多
- 共享內存 SHR 並不一定是共享的,比如程序的代碼段、非共享的動態鏈接庫
- SHR 也包括了進程間真正共享的內容,所以在計算多個進程的內存使用時,不要把所有進程的 SHR 直接相加得出結果
%CPU
- 表示進程的 CPU 使用率
- 是用戶態和內核態 CPU 使用率的總和(us+sy)
- 包括進程用戶空間使用的 CPU、通過系統調用執行的內核空間 CPU、在就緒隊列等待運行的 CPU
- 在虛擬環境中, 它還包括了運行虛擬機占用的 CPU
- 沒有細分進程的用戶態 CPU 和內核態 CPU
進程狀態
- R=運行狀態
- S=睡眠狀態
- D=不可中斷的睡眠狀態
- T=跟蹤/停止
- Z=僵屍進程