Linux查看性能的基本命令

一.Top

top命令提供了實時的對系統處理器的狀態監視比如cpu、內存的使用

 

前五行是系統整體的統計信息

1.第一行是任務隊列信息:

uptime執行結果:

[root@jcdd ~]# uptime

 11:10:39 up 5 days, 21:52,  4 users,  load average: 0.00, 0.00, 0.00

 

 11:10:39 

當前時間

up 5 days, 21:52, 

系統運行時間,時:分

4 users

登錄用戶數

load average: 0.00, 0.00, 0.00

系統負載,即任務隊列的平均長度。三個值分別是1分鐘、5分鐘、15分鐘前到當前時間的平均值

2.第二、三行爲進程和cpu的信息

當有多個cpu時,內容可能超過兩行。

Zombies代表殭屍進程數

2.7%us:用戶空間佔用cpu百分比。

0.3%sy:內核空間佔用cpu百分比

0.0%ni:用戶進程空間內改變過優先級的進程佔用cpu百分比

97.3%id:空閒cpu百分比

0.0%waIO等待佔用cpu百分比

0.0%hi:硬終端佔用cpu百分比

0.0%si:軟終端佔用cpu百分比

3.第四五行主要是物理內存信息和交換區信息

4. PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND 

PR:優先級

NI:負值表示高優先級,正值表示低優先級

VIRT:進程使用的虛擬內存總量。VIRT=SWAP+RES

SWAP:進程使用的虛擬內存中,被換出的大小,單位kb

RES:進程使用的未被換出的物理內存大小。RES=CODE+DATA

CODE:可執行代碼佔物理內存大小

DATA:可執行代碼以外的部分(數據段+棧)佔用大小

SHR:共享內存大小

 

二.iostat

  顯示豐富的io數據。iostat -x顯示詳細信息

 Iostat 2 3每隔 2秒刷新顯示,且顯示3次

 

%user:CPU處在用戶模式下的時間百分比。

%nice:CPU處在帶NICE值的用戶模式下的時間百分比。

%system:CPU處在系統模式下的時間百分比。

%iowait:CPU等待輸入輸出完成時間的百分比。

%steal:管理程序維護另一個虛擬處理器時,虛擬CPU的無意識等待時間百分比。

%idle:CPU空閒時間百分比。

備註:如果%iowait的值過高,表示硬盤存在I/O瓶頸,%idle值高,表示CPU較空閒,如果%idle值高但系統響應慢時,有可能是CPU等待分配內存,此時應加大內存容量。%idle值如果持續低於10,那麼系統的CPU處理能力相對較低,表明系統中最需要解決的資源是CPU。

 

disk屬性值說明:

rrqm/s:  每秒進行 merge 的讀操作數目。即 rmerge/s

wrqm/s:  每秒進行 merge 的寫操作數目。即 wmerge/s

r/s:  每秒完成的讀 I/O 設備次數。即 rio/s

w/s:  每秒完成的寫 I/O 設備次數。即 wio/s

rsec/s:  每秒讀扇區數。即 rsect/s

wsec/s:  每秒寫扇區數。即 wsect/s

rkB/s:  每秒讀K字節數。是 rsect/s 的一半,因爲每扇區大小爲512字節。

wkB/s:  每秒寫K字節數。是 wsect/s 的一半。

avgrq-sz:  平均每次設備I/O操作的數據大小 (扇區)。

avgqu-sz:  平均I/O隊列長度。

await:  平均每次設備I/O操作的等待時間 (毫秒)。

svctm: 平均每次設備I/O操作的服務時間 (毫秒)。

%util:  一秒中有百分之多少的時間用於 I/O 操作,即被io消耗的cpu百分比

備註:如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸。如果 svctm 比較接近 await,說明 I/O 幾乎沒有等待時間;如果 await 遠大於 svctm,說明I/O 隊列太長,io響應太慢,則需要進行必要優化。如果avgqu-sz比較大,也表示有當量io在等待。

 

 

三.Vmstat

服務器的CPU使用率,內存使用,虛擬內存交換情況,IO讀寫情況

 

r 表示運行隊列(就是說多少個進程真的分配到CPU).

b 表示阻塞的進程,這個不多說,進程阻塞,大家懂的。

swpd 虛擬內存已使用的大小,如果大於0,表示你的機器物理內存不足了,如果不是程序內存泄露的原因,那麼你該升級內存了或者把耗內存的任務遷移到其他機器。

free   空閒的物理內存的大小,我的機器內存總共8G,剩餘3415M

buff   Linux/Unix系統是用來存儲,目錄裏面有什麼內容,權限等的緩存,我本機大概佔用300M

cache cache直接用來記憶我們打開的文件,給文件做緩衝,我本機大概佔用300M(這裏是Linux/Unix的聰明之處,把空閒的物理內存的一部分拿來做文件和目錄的緩存,是爲了提高 程序執行的性能,當程序使用內存時,buffer/cached會很快地被使用。)

si  每秒從磁盤讀入虛擬內存的大小,如果這個值大於0,表示物理內存不夠用或者內存泄露了,要查找耗內存進程解決掉。我的機器內存充裕,一切正常。

so  每秒虛擬內存寫入磁盤的大小,如果這個值大於0,同上。

bi  塊設備每秒接收的塊數量,這裏的塊設備是指系統上所有的磁盤和其他塊設備,默認塊大小是1024byte,我本機上沒什麼IO操作,所以一直是0,但是我曾在處理拷貝大量數據(2-3T)的機器上看過可以達到140000/s,磁盤寫入速度差不多140M每秒

bo 塊設備每秒發送的塊數量,例如我們讀取文件,bo就要大於0bibo一般都要接近0,不然就是IO過於頻繁,需要調整。

in 每秒CPU的中斷次數,包括時間中斷

cs 每秒上下文切換次數,例如我們調用系統函數,就要進行上下文切換,線程的切換,也要進程上下文切換,這個值要越小越好,太大了,要考慮調低線程或者進程的數目,例如在apachenginx這種web服務器中,我們一般做性能測試時會進行幾千併發甚至幾萬併發的測試,選擇web服務器的進程可以由進程或者線程的峯值一直下調,壓測,直到cs到一個比較小的值,這個進程和線程數就是比較合適的值了。系統調用也是,每次調用系統函數,我們的代碼就會進入內核空間,導致上下文切換,這個是很耗資源,也要儘量避免頻繁調用系統函數。上下文切換次數過多表示你的CPU大部分浪費在上下文切換,導致CPU幹正經事的時間少了,CPU沒有充分利用,是不可取的。

us 用戶CPU時間,我曾經在一個做加密解密很頻繁的服務器上,可以看到us接近100,r運行隊列達到80(機器在做壓力測試,性能表現不佳)

sy 系統CPU時間,如果太高,表示系統調用時間長,例如是IO操作頻繁。

id  空閒 CPU時間,一般來說,id + us + sy = 100,一般我認爲id是空閒CPU使用率,us是用戶CPU使用率,sy是系統CPU使用率。

wt 等待IO CPU時間。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發佈了117 篇原創文章 · 獲贊 5 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章