學習top命令
可看此博文:http://www.javashuo.com/article/p-xhtcknox-my.htmlhtml
統計信息區(系統資源信息區)
前五行,即列表上方的五行
第一行:輸出系統任務隊列信息
- 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的數據交換,說明內存真的不夠用了學習
問題:內存空間還剩多少空閒呢?spa
答案:空閒內存=空閒內存總量+緩衝內存量 +可用交換區總量命令行
進程信息區(進程列表)
- 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=殭屍進程