第一行后面的三個值是系統在之前 1、5、15 的平均負載,也可以看出系統負載是上升、平穩、下降的趨勢,當這個值超過 CPU 可執行單元的數目,則表示CPU的性能已經飽和成為瓶頸了。
第二行統計了系統的任務狀態信息。包括正在 CPU 上運行的和將要被調度運行的;sleeping 通常是等待事件(比如 IO 操作)完成的任務,細分可以包括interruptible和uninterruptible的類型stopped是一些被暫停的任務,通常發送SIGSTOP或者對一個前臺任務操作Ctrl-Z可以將其暫停;zombie僵尸任務,雖然進程終止資源會被自動回收,但是含有退出任務的 task descriptor 需要父進程訪問后才能釋放。
第三 CPU占用率根據類型有以下幾種情況:
√ (us) user:CPU在低 nice 值(高優先級)用戶態所占用的時間(nice<=0)。正常情況下服務器的CPU時間應該都在此執行這類程序。
√ (sy) system:CPU處于內核態所占用的時間,操作系統通過系統調用(system call)從用戶態陷入內核態,以執行特定的服務;通常情況下該值會比較小,但是當服務器執行的 IO 比較密集的時候,該值會比較大。
√ (ni) nice:CPU在高nice值(低優先級)用戶態以低優先級運行占用的時間(nice>0)。默認新啟動的進程 nice=0,是不會計入這里的,除非手動通過renice或者setpriority()的方式修改程序的nice值。
√ (id) idle:CPU在空閑狀態所占用的時間。
√ (wa) iowait:等待IO完成做占用的時間。
√ (hi) irq:系統處理硬件中斷所消耗的時間。
√ (si) softirq:系統處理軟中斷所消耗的時間,軟中斷分為softirqs、tasklets、work queues。
√ (st) steal:在虛擬機情況下才有意義,因為虛擬機CPU也是共享物理CPU 的,這段時間表明虛擬機等待hypervisor調度CPU的時間,也意味著這段時間hypervisor將CPU調度給別的CPU執行。
第四行和第五行是物理內存和虛擬內存(交換分區)的信息
total = free + used + buff/cache,buffers和cached Mem信息總和到一起。buffers和cached Mem是/proc/meminfo中的Buffers和Cached字段:Buffers是針對raw disk的塊緩存,主要是以raw block的方式緩存文件系統的元數據,這個值一般比較小;而Cached是針對于某些具體的文件進行讀緩存,以增加文件的訪問效率而使用的,可以說是用于文件系統中文件緩存使用。
avail Mem是一個新的參數值,用于指示在不進行交換的情況下,可以給新開啟的程序多少內存空間,大致和free+buff/cached相當。
top命令非常強大,但是通常用于控制臺實時監測系統信息,不適合長時間監測系統的負載信息,同時對于短命的進程也會遺漏無法給出統計信息。
了解更多服務器及資訊,請關注夢飛科技官方網站,感謝您的支持!