范例3:定期采樣(delay [count])
定期采樣數(shù)據(jù)是指每隔delay時間,采樣一次。當count 為0時,vmstat 將不停地定期報告信息;否則當報告count次后,vmstat 命令停止運行。
第一行的信息如同范例1,是自系統(tǒng)啟動以來的平均信息。從第二行開始,每行的意思是:r和b采樣那一時刻系統(tǒng)運行隊列和等待隊列的情況;而usystem參數(shù)(in,cs)以及CPU參數(shù)(us,sy,id,wa)對應(yīng)的輸出值是系統(tǒng)在前一個delay的情況。
從下面例子可以看出上下文交換的次數(shù)小于中斷的發(fā)生次數(shù)。當系統(tǒng)大部分時間是空閑并且中斷大部分是時間中斷時,這種現(xiàn)象極可能發(fā)生。當時間中斷發(fā)生時, 因為調(diào)度器沒有什么任務(wù)可調(diào)度,所以很少發(fā)生上下文切換。
|
6. iostat
iostat [-t] [-c] [interval [count]]
參數(shù)的含義如下:
參數(shù) 解釋
T 表示輸出采用的時間
C 表示只顯示CPU的信息
Internal 相鄰的兩次采樣的間隔時間
count 采樣的次數(shù),count只能和delay一起使用
當沒有參數(shù)時,iostat則顯示系統(tǒng)啟動以后所有信息的平均值。
與CPU有關(guān)的輸出的含義
參數(shù) 解釋 從/proc/stat獲得
CPU 處理器ID
user 在internal時間段里,用戶態(tài)的CPU時間(%) ,不包含 nice值為負進程 usr/total*100
nice 在internal時間段里,nice值為負進程的CPU時間(%) nice/total*100
sys 在internal時間段里,核心時間(%) (system+irq+softirq)/total*100
iowait 在internal時間段里,硬盤IO等待時間(%) iowait/total*100
idle 在internal時間段里,CPU除去等待磁盤IO操作外的因為任何原因而空閑的時間閑置時間 (%) idle/total*100
|
有interval時,第一行的信息自系統(tǒng)啟動以來的平均信息。從第二行開始,輸出為前一個interval時間段的平均信息。
范例1:
|
7. sar
sar是System Activity Reporter(系統(tǒng)活躍情況報告)的縮寫。顧名思義,sar工具將對系統(tǒng)當前的狀態(tài)進行采樣,然后通過計算數(shù)據(jù)和比例來表達系統(tǒng)的當前運行狀態(tài)。它的特點是可以連續(xù)對系統(tǒng)采樣,獲得大量的采樣數(shù)據(jù);采樣數(shù)據(jù)和分析的結(jié)果都可以存入文件,所需的負載很小。這些是檢查歷史數(shù)據(jù)和一些近來的系統(tǒng)事件。sar用于檢查的性能數(shù)據(jù)類似于vmstat, mpstat和 iostat的顯示。 sar的數(shù)據(jù)是一段時間保存的內(nèi)容,因此可以察看過去的信息。 lastcomm可以現(xiàn)在系統(tǒng)最近被執(zhí)行的命令。這些可以用在系統(tǒng)審計中。sa 可以在*BSD和Linux中找到,它給用戶在系統(tǒng)審計中更多的選項來收集信息。
在反饋CPU整體信息方面,sar 反饋的與CPU相關(guān)的信息包括:
(1)多少任務(wù)在運行
(2)CPU使用的情況
(3)CPU收到多少中斷
(4)發(fā)生多少上下文切換
sar的語法如下:
sar [-options] [interval [count]]
其中,internal是兩次采樣的間隔時間;count是指采樣的次數(shù);與CPU相關(guān)的options有:
參數(shù)的含義如下:
參數(shù) 解釋
-c 表示輸出采用的時間
-e hh:mm:ss 表示只顯示CPU的信息
-i {irq |SUM|ALL|XALL} 相鄰的兩次采樣的間隔時間
-P {cpu|ALL}
-q 顯示在采樣的時刻,可運行隊列的任務(wù)的個數(shù),以及系統(tǒng)平均負載
-u CPU 使用的情況,報告了cpu的用戶態(tài),系統(tǒng)態(tài),等待I/O和空閑時間上的百分比。
-w:每秒上下文交換率
-o:filename 將結(jié)果放在文件里
-f:filename 表示從file文件中取出數(shù)據(jù),如果沒有指定-f file,則從標準數(shù)據(jù)文件
范例1:
首先在后臺運行一個創(chuàng)建1GB文件的任務(wù),然后輸入:“sar -c -q -w 3 2”,表示每3秒采樣一次,采樣兩次,可以看到系統(tǒng)有82個任務(wù),但是在10時12分08秒時有一個任務(wù)在運行,在下一次采樣10時12分11秒時,沒有任務(wù)在運行。
|
與CPU有關(guān)的輸出的含義
參數(shù) 解釋 從/proc/stat獲得數(shù)據(jù)
proc/s 在internal時間段里,每秒上下文切換率 processes/total*100
cswch 在internal時間段里,每秒上下文切換率 ctxt/total*100
intr/s 在internal時間段里,每秒CPU接收的中斷的次數(shù) idle/total*100
從/proc/loadavg獲得數(shù)據(jù)
runq-sz 采樣時,運行隊列中任務(wù)的個數(shù),不包括vmstat 進程。 procs_running-1
plist-sz 采樣時,系統(tǒng)中活躍的任務(wù)的個數(shù) nr_threads
ldavg-1 采樣的前一秒鐘系統(tǒng)的負載(%) lavg_1
ldavg-5 采樣的5秒鐘系統(tǒng)的負載(%) lavg_5
ldavg-15 采樣的前15秒鐘系統(tǒng)的負載(%) lavg_15
下面輸入命令“sar 3 2”,表示每隔3秒顯示CPU的狀態(tài),共顯示2次。此時創(chuàng)建1GB文件的任務(wù)還在后臺進行。
|
與CPU有關(guān)的輸出的含義
參數(shù) 解釋 從/proc/stat獲得數(shù)據(jù)
CPU 處理器ID
user 在internal時間段里,用戶態(tài)的CPU時間(%) ,不包含 nice值為負進程 usr/total*100
nice 在internal時間段里,nice值為負進程的CPU時間(%) nice/total*100
sys 在internal時間段里,核心時間(%) (system+irq+softirq)/total*100
iowait 在internal時間段里,硬盤IO等待時間(%) iowait/total*100
idle 在internal時間段里,CPU除去等待磁盤IO操作外的因為任何原因而空閑的時間閑置時間 (%) irq/total*100
輸入命令“sar”,當不帶任何參數(shù)時,表示每一秒采樣一次,每次顯示從系統(tǒng)到該采樣時系統(tǒng)的平均信息。從Fig.8看出在10時12分43秒,系統(tǒng)idle應(yīng)該為0,而Fig.9
|
上表中的所有值可取到兩位小數(shù)點。
范例2:
|
8. top
top命令提供了實時的對系統(tǒng)處理器的狀態(tài)監(jiān)視,即可以通過用戶按鍵來不斷刷新當前狀態(tài)。如果前臺執(zhí)行該命令,它將獨占前臺,直到用戶終止該程序為止,但是該命令的很多特性都可以通過交互式命令或者在個人定制文件中進行設(shè)定。
下面是該命令的語法格式:
top [-] [d delay] [options]
一些參數(shù)的含義如下:
參數(shù) 解釋
d delay 相鄰的兩次采樣的間隔時間
q 該選項將使top沒有任何延遲的進行刷新。如果調(diào)用程序有超級用戶權(quán)限,那么top將以盡可能高的優(yōu)先級運行
-l 不顯示空閑進程,默認時,top顯示空閑進程
-S 將系統(tǒng)進程信息也顯示于屏幕,默認時,不顯示。
與cPU有關(guān)的輸出的含義
參數(shù) 解釋
CPU信息 從/proc/stat獲得信息
us 在internal時間段里,用戶態(tài)的CPU時間(%),不包含nice值為負的任務(wù)占用的CPU的時間
usr/total*100
ni 在internal時間段里,nice值為負的任務(wù)的用戶態(tài)的Niced進程的CPU時間(%) nice/total*100
sy 在internal時間段里,核心態(tài)的CPU時間(%) system/total*100
id 在internal時間段里,cpu空閑的時間,不包括等待i/o的時間(%) idle/total*100
wa 在internal時間段里,等待i/o的時間(%) iowait/total*100
hi 在internal時間段里,硬中斷時間(%) irq/total*100
si 在internal時間段里,軟中斷時間(%) softirq/total*100
任務(wù)
total 采樣時,系統(tǒng)全部進程的個數(shù),包括正在運行的top進程,不包括線程。 =running+sleeping+stopped+zombie
running 采樣時,運行隊列的進程的個數(shù),但不包含top這個進程 通過判斷/proc/pid/status中stat的值。
sleeping 采樣時,可中斷和不可中斷狀態(tài)的進程的個數(shù)
stopped 采樣時,停止狀態(tài)的進程的個數(shù)
zombie 采樣時,僵尸狀態(tài)的進程的個數(shù)
運行中的參數(shù)的含義
參數(shù) 解釋
q 退出程序
r 重新安排一個進程的優(yōu)先級別。系統(tǒng)提示用戶輸入需要改變的進程PID
S 切換到累計模式
L 切換顯示平均負載和啟動時間信息
T 切換顯示進程和CPU狀態(tài)信息
M 切換顯示內(nèi)存信息
s 改變兩次刷新之間的延遲時間。系統(tǒng)將提示用戶輸入新的時間,單位為s。如果有小數(shù),就換算成m s。輸入0值則系統(tǒng)將不斷刷新,默認值是5 s。需要注意的是如果設(shè)置太小的時間,很可能會引起不斷刷新,從而根本來不及看清顯示的情況,而且系統(tǒng)負載也會大大增加
范例1:查看 鍵入top命令查看系統(tǒng)狀況
|
第一行的項目依次為當前時間、系統(tǒng)啟動時間、當前系統(tǒng)登錄用戶數(shù)目、平均負載。
第二行為進程情況,依次為進程總數(shù)、休眠進程數(shù)、運行進程數(shù)、僵死進程數(shù)、終止進程數(shù)。
第三行為CPU狀態(tài),依次為用戶占用、系統(tǒng)占用、優(yōu)先任務(wù)占用、閑置任務(wù)占用。
第四行為內(nèi)存狀態(tài),依次為平均可用內(nèi)存、已用內(nèi)存、空閑內(nèi)存、共享內(nèi)存、緩存使用內(nèi)存。
第五行為交換狀態(tài),依次為平均可用交換容量、已用容量、閑置容量、交換高速緩存容量。
然后下面就是和ps相仿的各進程情況列表了。
總的來說,top命令的功能強于ps,但需要長久占用前臺,所以用戶應(yīng)該根據(jù)自己的情況來使用這個命令。
9. oprofile
Oprofile這個性能監(jiān)視工具是利用處理器上所包含的專用的性能監(jiān)視硬件(若沒有性能監(jiān)視硬件則使用一個基于計時器的代用品)來收集與性能相關(guān)的數(shù)據(jù)樣品(samples)。它獲得關(guān)于內(nèi)核以及系統(tǒng)上的可執(zhí)行文件的信息,例如內(nèi)存是何時被引用的;L2緩存請求的數(shù)量;收到的硬件中斷數(shù)量等。
下表提供了對 oprofile 軟件包中包括的工具的總覽。
命令 描述
opcontrol 配置要收集的數(shù)據(jù)
op_help 顯示系統(tǒng)處理器的可用事件以及每個事件的簡單描述
opreport 獲得有用的profile數(shù)據(jù)
Opannotate 如果應(yīng)用程序使用調(diào)試符號編譯了,創(chuàng)建帶注解
oprofiled 作為守護進程來運行,定期把樣品數(shù)據(jù)寫入磁盤
Oparchive 收集可執(zhí)行文件信息和調(diào)試信息,將采樣文件歸檔
op_import 把樣品數(shù)據(jù)庫文件從異類二進制格式轉(zhuǎn)換成系統(tǒng)的本地原始格式。只有在分析不同體系的樣品數(shù)據(jù)庫時才使用該選項。
(1)opcontrol
在運行 OProfile 之前,必須用opcontrol配置監(jiān)視環(huán)境。在 opcontrol 命令被執(zhí)行時,設(shè)置選項就會被保存到 /root/.oprofile/daemonrc 文件中。
命令格式
opcontrol [--vmlinux] [--start] [--stop] [--dump] [--shutdown] [--save=filename]
參數(shù)解釋
參數(shù) 描述
vmlinux 用來配置是否監(jiān)視內(nèi)核。要監(jiān)視內(nèi)核,以根用戶身份執(zhí)行以下命令:
>opcontrol --vmlinux=/usr/src/linux-2.6.13/vmlinux
要配置 OProfile 不監(jiān)視內(nèi)核,以根用戶身份執(zhí)行以下命令:
>opcontrol --no-vmlinux
這個命令還會載入 oprofile 內(nèi)核模塊(如果還沒有被載入),并創(chuàng)建 /dev/oprofile/ 目錄(如果不存在)。
start 開始監(jiān)視系統(tǒng)
要使用 OProfile 來開始監(jiān)視系統(tǒng),以根用戶身份執(zhí)行以下命令:
|
/root/.oprofile/daemonrc 中的設(shè)置被使用。OProfile 守護進程 oprofiled 被啟動;它定期把樣品數(shù)據(jù)寫入 /var/lib/oprofile/samples/ 目錄。該守護進程的日志位于 /var/lib/oprofile/oprofiled.log。如果 OProfile 使用不同的配置選項被重新啟動,以前會話中的樣品文件就會被自動備份到 /var/lib/oprofile/samples/session-N 目錄中,這里的 N 是前一次備份會話數(shù)量再加1。
stop 停止監(jiān)視
Shutdown 要停止建檔器,以根用戶身份執(zhí)行以下命令:
>opcontrol –shutdown
Save save 保存數(shù)據(jù)
要保存當前的抽樣文件集合,執(zhí)行以下命令,把 替換成當前會話中的獨特描述性名稱。 opcontrol --save= 目錄 /var/lib/oprofile/samples/name/ 被創(chuàng)建,當前的抽樣文件被復制到其中。
Dump dump OProfile 守護進程 oprofiled 定期收集樣品,并把它們寫入 /var/lib/oprofile/samples/ 目錄。在讀取數(shù)據(jù)之前,請以根用戶身份執(zhí)行以下命令來確定所有數(shù)據(jù)都被寫入這個目錄中了。