Linux Top 命令
linux查看進程使用最多的命令應該是top命令了吧,我們今天主要說明一下,top命令結果中各參數的意義,top命令結果如下:
直觀上結果分為上下兩部分,上部分主要是系統的信息,下部分是系統進程信息,下面詳細說明一下:
第一行代表了系統運行時間,分別表示:
系統時間,系統運行到現在的時間,當前登陸系統的用戶數、系統平均負載的三個值,分別是5分鐘、10分鐘、15分鐘。
tip:說明一下什麽是系統負載,一般負載值越小越好,值也高說明系統的可能是出現了某種問題的信息,但是也並不是絕對的
借用網友的文章說明一下:https://www.cnblogs.com/TaleG/p/6030992.html
一只單核的處理器可以形象得比喻成一條單車道,數字在0-1之間算正常,這樣來一輛車,該車不會等待直接通過;
0表示路上沒有車
1.00 表示道路還算正常,但有可能會惡化並造成擁堵。此時系統已經沒有多余的資源了,管理員需要進行優化;
1.00-*** 表示路況不太好了,如果到達2.00表示有橋上車輛一倍數目的車輛正在等待。這種情況你必須進行檢查了
如果我們有兩條行車道呢?
滿負荷狀態的數字為 "1.00 * CPU核數",即雙核CPU為2.00,四核CPU為4.00
SO:
單核負載在0.7以下是安全的,超過0.7就需要進行優化了
那應該看那個參數??
看5分鐘和15分鐘的比較好,即後面2個數字。
CPU的核數如何獲取呢??
grep ‘model name‘ /proc/cpuinfo | wc -l
CPU核心數目N,觀察後面2個數字,用數字/N,如果得到的值小於0.7即可無憂
上一張字段說明圖:
說明了第一行,第二行啥意思?
其實一眼就應該看出來,應該是系統進程數,第一列表示系統總進程數其次是運行進程、休眠進程、停止進程和僵屍進程
之後是系統CPU運行時間,“用戶空間占用CPU百分比”、“內核空間占用CPU百分比”、“用戶空間內改變過優先級的進程占用CPU百分比”、“空閑CPU百分比”、“等待輸入輸出CPU時間百分比”、“CPU服務於硬件中斷所耗費的時間總額”、“CPU服務軟中斷所耗費的時間總額”、“Steal Time”
那麽CPU各個參數都代表了什麽意思呢?
看看那官方解釋:
us: user cpu time (or) % CPU time spent in user space sy: system cpu time (or) % CPU time spent in kernel space ni: user nice cpu time (or) % CPU time spent on low priority processes id: idle cpu time (or) % CPU time spent idle wa: io wait cpu time (or) % CPU time spent in wait (on disk) hi: hardware irq (or) % CPU time spent servicing/handling hardware interrupts si: software irq (or) % CPU time spent servicing/handling software interrupts st: steal time - - % CPU time in involuntary wait by virtual cpu while hypervisor is servicing another processor (or) % CPU time stolen from a virtual machine
簡單翻譯一下:
us:用戶態使用的cpu時間比
sy:系統態使用的cpu時間比
ni:用做nice加權的進程分配的用戶態cpu時間比
id:空閑的cpu時間比
wa:cpu等待磁盤寫入完成時間
hi:硬中斷消耗時間
si:軟中斷消耗時間
st:虛擬機偷取時間
然並卵,還是不懂:
我們還是看看CPU的百分比是如何計算的吧:
比如一秒內有100個cpu時間片,這個cpu時間片就是cpu工作的最小單位。那麽這100個cpu時間片在不同的區域和目的進行操作使用,就代表這個區域所占用的cpu時間比。也就是這裏得出的cpu時間百分比,比如
將文件從磁盤的src位置拷貝到磁盤的dst位置。文件會從src先讀取進入到內核空間,然後再讀取到用戶空間,然後拷貝數據到用戶空間的buf上,再通過用戶空間,內核空間,數據才到磁盤的dst上
所以從上面這個程序來看,cpu消耗在kernel space的時候就是sy(系統態使用的cpu百分比),cpu消耗在user space的時候就是us(用戶態使用的cpu百分比)。そうか
弄明白了前兩個,在說說hi和si兩個參數
如果程序都沒什麽問題,那麽是沒有hi和si的,但是實際上有個硬中斷和軟中斷的概念。比如硬中斷,cpu在執行程序的時候,突然外設硬件(比如硬盤出現問題了)機器需要立刻通知cpu進行現場保存工作。這個時候會cpu會出現上下文切換。就是cpu會有一部分時間會被硬中斷占用了,這個時間就是hi。相類似,si是軟中斷的cpu占用時間,軟中斷是由軟件的指令方式觸發的。
相關軟中斷和硬中斷的概念可以參考:
http://blog.csdn.net/pxz_002/article/details/7327668
下面是nice參數
ni是nice的意思,nice是什麽呢,每個linux進程都有個優先級,優先級高的進程有優先執行的權利,這個叫做pri。進程除了優先級外,還有個優先級的修正值。即比如你原先的優先級是20,然後修正值為-2,那麽你最後的進程優先級為18。這個修正值就叫做進程的nice值。
那麽問題來了,修改值是一個數字,怎麽會占用系統時間呢???
ni是指用做nice加權的進程使用的用戶態cpu時間比,我的理解就是一個進程的所謂修正值就意味著多分配一些cpu時間給這個進程的用戶態,這個中間所多分配的cpu時間就是我們這裏的ni。(這個理解沒啥把握,如果有錯誤麻煩幫忙指出下)
之後是內存:
第五行是交換分區:
最後是進程信息:
Linux Top 命令