linux top 历史,阿里工程师眼中的linux top命令
前言
linux系統里面的top命令,可以說是排查線上問題的神器,也是 linux 系統里面最常用的命令之一,但大多數使用人員,僅僅停留在使用top命令看cpu的使用率,而很少關注其他的展示信息,大大浪費了這個命令的能力,不夸張的講,這個小小的命令幾乎涵蓋了整個linux內核的監控面,是每一位優秀的工程師都要掌握的知識。
今天我們就庖丁解牛的對這個命令分析一番:
top命令第一行信息解釋
(友情提示,可左右滑動)
第一行的數據,通過linux里面的uptime命令,也能拿到一模一樣的信息,這里的數據分為四列:
第一列:當前系統時間 第二列:該機器從啟動到現在的運行時間,比如上圖里面運行了213天,15小時27分 第三列:目前系統登錄的用戶數,可以看到是1,這個信息同樣的通過who命令也能在linux系統中獲取
其他還有w命令,能看到更詳細的信息:
注意最后一行what代表當前用戶正在執行的命令,如果我們想看歷史命令,就用history命令,此外還可以通過vim ~/.bash_history 來獲取用戶的操作命令歷史
第四列:表示當前系統的平均load值,從左到右表示1分鐘,5分鐘,15分鐘。
load average表示cpu處理隊列的長度,這樣也比較容易理解,單核cpu的load最大負載為1,表示一個時刻cpu處理一個任務,load是可以大于1的,這個時候機器已經超負載運行了,整體表現響應慢,卡頓等現象。
下面的命令可以用來查詢cpu相關的信息:
查看物理CPU的個數:
cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l
查看單個CPU是幾核的:
cat /proc/cpuinfo | grep "cpu cores" | uniq
查看邏輯CPU的個數:
cat /proc/cpuinfo | grep "processor" | wc -l
一般情況下,cpu物理個數 * 核數 是等于 邏輯cpu的個數,如果不相等說明cpu支持超線程。也就是說,如果物理cpu個數 * 核數 = 8,那么8核cpu的cpu的load最大就是8,舉個例子,現在有8個衛生間,但有16個人需要用,那么同時只能有8個人能用,另外8個人需要等待,這個時候表現在機器上系統的Load顯示為16,代表有8個任務在處理,8個任務在等待處理,已經超出cpu負載運行了,所以觀察cpu為800%或者大于的時候,不用大驚小怪,這是正常現象。在linux里面,top命令按數字鍵1,是可以看到所有的cpu核的負載情況。
top命令第二行信息解釋
第二行表示系統此時的進程情況:total:代表目前系統所有的進程數 running:代表目前正在運行的進程數 sleeping:代表目前sleep的進程數 stopped:代表目前中斷的進程數 zombie:代表目前存在的僵尸進程數 linux系統中進程的狀態圖轉換如下:
如果系統存在過多的中斷進程或者僵尸進程,需要考慮系統是否存在調整過進程的優先級或者進程設計是否存在問題。
top命令第三行信息解釋
在linux中,使用man top命令,在幫助文檔里面,能夠看到下面,關于cpu狀態字段的描述:
第一個us代表的是用戶空間進程占用cpu的時間百分比,sy代表的是系統空間進程(kernel)占用cpu時間的百分比:
linux系統抽象分為三部分,最下層是硬件層,中間是系統空間,上層為用戶空間。進程在執行用戶自己的代碼時,則其處于用戶態,此時耗費的cpu統計為us,而相反一個進程執行系統而陷入內核代碼執行時,此時處于內核運行態,耗費的cpu為sy。
總結
以上是生活随笔為你收集整理的linux top 历史,阿里工程师眼中的linux top命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux如何查看硬件驱动,linux查
- 下一篇: 独立按键控制数码管c语言,各位大佬,独立