iostat
$ yum -y install sysstat #下載拓展包
用法:iostat [ 選項(xiàng) ] [ <時(shí)間間隔> [ <次數(shù)> ] ]
常用選項(xiàng)參數(shù):
-c: 只顯示系統(tǒng)CPU統(tǒng)計(jì)信息示弓,即單獨(dú)輸出avg-cpu結(jié)果仅醇,不包括device結(jié)果
-d: 單獨(dú)輸出Device結(jié)果察署,不包括cpu結(jié)果
-k/-m:輸出結(jié)果以kB/mB為單位狈醉,而不是以扇區(qū)數(shù)為單位
-x:輸出更詳細(xì)的io設(shè)備統(tǒng)計(jì)信息
interval/count:每次輸出間隔時(shí)間扔傅,count表示輸出次數(shù)询兴,不帶count表示循環(huán)輸出
rrqm/s: 每秒對(duì)該設(shè)備的讀請(qǐng)求被合并次數(shù),文件系統(tǒng)會(huì)對(duì)讀取同塊(block)的請(qǐng)求進(jìn)行合并
wrqm/s: 每秒對(duì)該設(shè)備的寫(xiě)請(qǐng)求被合并次數(shù)
r/s: 每秒完成的讀次數(shù)
w/s: 每秒完成的寫(xiě)次數(shù)
rkB/s: 每秒讀數(shù)據(jù)量(kB為單位)
wkB/s: 每秒寫(xiě)數(shù)據(jù)量(kB為單位)
avgrq-sz:平均每次IO操作的數(shù)據(jù)量(扇區(qū)數(shù)為單位)
avgqu-sz: 平均等待處理的IO請(qǐng)求隊(duì)列長(zhǎng)度
await: 平均每次IO請(qǐng)求等待時(shí)間(包括等待時(shí)間和處理時(shí)間诽表,毫秒為單位)
svctm: 平均每次IO請(qǐng)求的處理時(shí)間(毫秒為單位)
%util: 采用周期內(nèi)用于IO操作的時(shí)間比率,即IO隊(duì)列非空的時(shí)間比率
## mpstat
是實(shí)時(shí)系統(tǒng)監(jiān)控工具隅肥。其報(bào)告與CPU的一些統(tǒng)計(jì)信息竿奏,這些信息存放在/proc/stat文件中。在多CPU系統(tǒng)里腥放,其不但能查看所有CPU的平均狀況信息泛啸,而且能夠查看特定CPU的信息。
# 用法:mpstat [-P {cpu|ALL}] [internal [count]]
-P {cpu l ALL} 表示監(jiān)控哪個(gè)CPU秃症, cpu在[0,cpu個(gè)數(shù)-1]中取值
internal 相鄰的兩次采樣的間隔時(shí)間
count 采樣的次數(shù)候址,count只能和delay一起使用
--------------------------------------------------------------
$ mpstat -P ALL 5 2
表示每5秒產(chǎn)生一個(gè)報(bào)告,總共產(chǎn)生2個(gè)
CPU 處理器ID
%usr 在internal時(shí)間段里种柑,用戶(hù)態(tài)的CPU時(shí)間(%)岗仑,不包含 nice值為負(fù)進(jìn)程
%nice 在internal時(shí)間段里,nice值為負(fù)進(jìn)程的CPU時(shí)間(%)
%sys 在internal時(shí)間段里聚请,核心時(shí)間(%)
%iowait 在internal時(shí)間段里荠雕,硬盤(pán)IO等待時(shí)間(%)
%irq 在internal時(shí)間段里,硬中斷時(shí)間(%)
%soft 在internal時(shí)間段里驶赏,軟中斷時(shí)間(%)
%steal 顯示虛擬機(jī)管理器在服務(wù)另一個(gè)虛擬處理器時(shí)虛擬CPU處在非自愿等待下花費(fèi)時(shí)間的百分比
%guest 顯示運(yùn)行虛擬處理器時(shí)CPU花費(fèi)時(shí)間的百分比
%gnice
%idle 在internal時(shí)間段里炸卑,CPU除去等待磁盤(pán)IO操作外的因?yàn)槿魏卧蚨臻e的時(shí)間閑置時(shí)間(%)
vmstat
vmstat命令是最常見(jiàn)的Linux/Unix監(jiān)控工具,可以展現(xiàn)給定時(shí)間間隔的服務(wù)器的狀態(tài)值,包括服務(wù)器的CPU使用率煤傍,內(nèi)存使用盖文,虛擬內(nèi)存交換情況,IO讀寫(xiě)情況。這個(gè)命令是我查看Linux/Unix最喜愛(ài)的命令蚯姆,一個(gè)是Linux/Unix都支持五续,二是相比top,我可以看到整個(gè)機(jī)器的CPU,內(nèi)存,IO的使用情況蒋失,而不是單單看到各個(gè)進(jìn)程的CPU使用率和內(nèi)存使用率(使用場(chǎng)景不一樣)返帕。
(1)用法
用法: vmstat [選項(xiàng)參數(shù)]
或: vmstat [選項(xiàng)參數(shù)] [數(shù)字] [數(shù)字]
(2)功能
功能: 報(bào)告虛擬內(nèi)存的統(tǒng)計(jì)信息,關(guān)于進(jìn)程、內(nèi)存篙挽、I/O等系統(tǒng)整體運(yùn)行狀態(tài)荆萤。
(3)選項(xiàng)參數(shù):
1) -d: 顯示磁盤(pán)相關(guān)統(tǒng)計(jì)信息。
2) -a: 顯示活躍和非活躍內(nèi)存
3) -f: 顯示從系統(tǒng)啟動(dòng)至今的fork數(shù)量。
4) -p: 顯示指定磁盤(pán)分區(qū)統(tǒng)計(jì)信息
5) -s: 顯示內(nèi)存相關(guān)統(tǒng)計(jì)信息及多種系統(tǒng)活動(dòng)數(shù)量链韭。
6) -m: 顯示slabinfo
$ vmstat 2 5 每二秒顯示一次系統(tǒng)內(nèi)存的統(tǒng)計(jì)信息,總共5次
1.Procs(進(jìn)程)
r: 運(yùn)行隊(duì)列中進(jìn)程數(shù)量偏竟,這個(gè)值也可以判斷是否需要增加CPU。(長(zhǎng)期大于1)
b: 等待IO的進(jìn)程數(shù)量敞峭。
2.Memory(內(nèi)存)
swpd: 使用虛擬內(nèi)存大小踊谋,如果swpd的值不為0,但是SI旋讹,SO的值長(zhǎng)期為0殖蚕,這種情況不會(huì)影響系統(tǒng)性能。
free: 空閑物理內(nèi)存大小沉迹。
buff: 用作緩沖的內(nèi)存大小睦疫。
cache: 用作緩存的內(nèi)存大小,如果cache的值大的時(shí)候鞭呕,說(shuō)明cache處的文件數(shù)多蛤育,如果頻繁訪問(wèn)到的文件都能被cache處,那么磁盤(pán)的讀IO bi會(huì)非常小葫松。
3.Swap
si: 每秒從交換區(qū)寫(xiě)到內(nèi)存的大小瓦糕,由磁盤(pán)調(diào)入內(nèi)存。
so: 每秒寫(xiě)入交換區(qū)的內(nèi)存大小腋么,由內(nèi)存調(diào)入磁盤(pán)咕娄。
4.IO(現(xiàn)在的Linux版本塊的大小為1kb)
bi: 每秒讀取的塊數(shù)
bo: 每秒寫(xiě)入的塊數(shù)
注意: 隨機(jī)磁盤(pán)讀寫(xiě)的時(shí)候,這2個(gè)值越大(如超出1024k)党晋,能看到CPU在IO等待的值也會(huì)越大谭胚。
5.system(系統(tǒng))
in: 每秒中斷數(shù),包括時(shí)鐘中斷未玻。
cs: 每秒上下文切換數(shù)灾而。
注意:上面2個(gè)值越大,會(huì)看到由內(nèi)核消耗的CPU時(shí)間會(huì)越大扳剿。
6.CPU(以百分比表示)
us: 用戶(hù)進(jìn)程執(zhí)行時(shí)間百分比(user time) us的值比較高時(shí)旁趟,說(shuō)明用戶(hù)進(jìn)程消耗的CPU時(shí)間多,但是如果長(zhǎng)期超50%的使用庇绽,那么我們就該考慮優(yōu)化程序算法或者進(jìn)行加速锡搜。
sy: 內(nèi)核系統(tǒng)進(jìn)程執(zhí)行時(shí)間百分比(system time) sy的值高時(shí),說(shuō)明系統(tǒng)內(nèi)核消耗的CPU資源多瞧掺,這并不是良性表現(xiàn)耕餐,我們應(yīng)該檢查原因。
id: 空閑時(shí)間百分比
wa: IO等待時(shí)間百分比 wa的值高時(shí)辟狈,說(shuō)明IO等待比較嚴(yán)重肠缔,這可能由于磁盤(pán)大量作隨機(jī)訪問(wèn)造成夏跷,也有可能磁盤(pán)出現(xiàn)瓶頸(塊操作)。
st:來(lái)自于一個(gè)虛擬機(jī)偷取的CPU時(shí)間的百分比
## sar
是目前 Linux 上最為全面的系統(tǒng)性能分析工具之一明未,可以從多方面對(duì)系統(tǒng)的活動(dòng)進(jìn)行報(bào)告槽华,包括:文件的讀寫(xiě)情況、系統(tǒng)調(diào)用的使用情況趟妥、磁盤(pán)I/O猫态、CPU效率、內(nèi)存使用狀況披摄、進(jìn)程活動(dòng)及IPC有關(guān)的活動(dòng)等亲雪。
# 語(yǔ)法:sar [options] [-A] [-o file] t [n]
其中:
t為采樣間隔,n為采樣次數(shù)行疏,默認(rèn)值是1匆光;
-o file表示將命令結(jié)果以二進(jìn)制格式存放在文件中,file 是文件名酿联。
-A:所有報(bào)告的總和
-u:輸出CPU使用情況的統(tǒng)計(jì)信息
-v:輸出inode、文件和其他內(nèi)核表的統(tǒng)計(jì)信息
-d:輸出每一個(gè)塊設(shè)備的活動(dòng)信息
-r:輸出內(nèi)存和交換空間的統(tǒng)計(jì)信息
-b:顯示I/O和傳送速率的統(tǒng)計(jì)信息
-a:文件讀寫(xiě)情況
-c:輸出進(jìn)程統(tǒng)計(jì)信息夺巩,每秒創(chuàng)建的進(jìn)程數(shù)
-R:輸出內(nèi)存頁(yè)面的統(tǒng)計(jì)信息
-y:終端設(shè)備活動(dòng)情況
-w:輸出系統(tǒng)交換活動(dòng)信息
# 要判斷系統(tǒng)瓶頸問(wèn)題贞让,有時(shí)需幾個(gè) sar 命令選項(xiàng)結(jié)合起來(lái)
懷疑CPU存在瓶頸,可用 sar -u 和 sar -q 等來(lái)查看
懷疑內(nèi)存存在瓶頸柳譬,可用 sar -B喳张、sar -r 和 sar -W 等來(lái)查看
懷疑I/O存在瓶頸,可用 sar -b美澳、sar -u 和 sar -d 等來(lái)查看
sar cpu資源監(jiān)控
$ sar -u -o test 10 3
每10秒采樣一次销部,連續(xù)采樣3次,觀察CPU 的使用情況制跟,并將采樣結(jié)果以二進(jìn)制形式存入當(dāng)前目錄下的文件test中舅桩,需鍵入如下命令:
CPU:all 表示統(tǒng)計(jì)信息為所有 CPU 的平均值。
%user:顯示在用戶(hù)級(jí)別(application)運(yùn)行使用 CPU 總時(shí)間的百分比雨膨。
%nice:顯示在用戶(hù)級(jí)別擂涛,用于nice操作,所占用 CPU 總時(shí)間的百分比聊记。
%system:在核心級(jí)別(kernel)運(yùn)行所使用 CPU 總時(shí)間的百分比撒妈。
%iowait:顯示用于等待I/O操作占用 CPU 總時(shí)間的百分比。
%steal:管理程序(hypervisor)為另一個(gè)虛擬進(jìn)程提供服務(wù)而等待虛擬 CPU 的百分比排监。
%idle:顯示 CPU 空閑時(shí)間占用 CPU 總時(shí)間的百分比狰右。
- 若 %iowait 的值過(guò)高,表示硬盤(pán)存在I/O瓶頸
- 若 %idle 的值高但系統(tǒng)響應(yīng)慢時(shí)舆床,有可能是 CPU 等待分配內(nèi)存棋蚌,此時(shí)應(yīng)加大內(nèi)存容量
- 若 %idle 的值持續(xù)低于1,則系統(tǒng)的 CPU 處理能力相對(duì)較低,表明系統(tǒng)中最需要解決的資源是CPU,如果要查看二進(jìn)制文件test中的內(nèi)容附鸽,需鍵入如下sar命令:
##### sar inode脱拼、文件和其他內(nèi)核表監(jiān)控
# 每10秒采樣一次,連續(xù)采樣3次坷备,觀察核心表的狀態(tài)熄浓,需鍵入如下命令:
$ sar -v 10 3
#輸出內(nèi)容:
dentunusd:目錄高速緩存中未被使用的條目數(shù)量
file-nr:文件句柄(file handle)的使用數(shù)量
inode-nr:索引節(jié)點(diǎn)句柄(inode handle)的使用數(shù)量
pty-nr:使用的pty數(shù)量
sar 內(nèi)存和交換空間監(jiān)控
每10秒采樣一次,連續(xù)采樣3次省撑,監(jiān)控內(nèi)存分頁(yè):
$ sar -r 10 3
輸出項(xiàng)說(shuō)明:
kbmemfree:這個(gè)值和free命令中的free值基本一致,所以它不包括buffer和cache的空間.
kbmemused:這個(gè)值和free命令中的used值基本一致,所以它包括buffer和cache的空間.
%memused:這個(gè)值是kbmemused和內(nèi)存總量(不包括swap)的一個(gè)百分比.
kbbuffers和kbcached:這兩個(gè)值就是free命令中的buffer和cache.
kbcommit:保證當(dāng)前系統(tǒng)所需要的內(nèi)存,即為了確保不溢出而需要的內(nèi)存(RAM+swap).
%commit:這個(gè)值是kbcommit與內(nèi)存總量(包括swap)的一個(gè)百分比.
##### sar 內(nèi)存分頁(yè)監(jiān)控
# 每10秒采樣一次赌蔑,連續(xù)采樣3次,監(jiān)控內(nèi)存分頁(yè):
$ sar -B 10 3
# 輸出項(xiàng)說(shuō)明:
pgpgin/s:表示每秒從磁盤(pán)或SWAP置換到內(nèi)存的字節(jié)數(shù)(KB)
pgpgout/s:表示每秒從內(nèi)存置換到磁盤(pán)或SWAP的字節(jié)數(shù)(KB)
fault/s:每秒鐘系統(tǒng)產(chǎn)生的缺頁(yè)數(shù),即主缺頁(yè)與次缺頁(yè)之和(major + minor)
majflt/s:每秒鐘產(chǎn)生的主缺頁(yè)數(shù).
pgfree/s:每秒被放入空閑隊(duì)列中的頁(yè)個(gè)數(shù)
pgscank/s:每秒被kswapd掃描的頁(yè)個(gè)數(shù)
pgscand/s:每秒直接被掃描的頁(yè)個(gè)數(shù)
pgsteal/s:每秒鐘從cache中被清除來(lái)滿(mǎn)足內(nèi)存需要的頁(yè)個(gè)數(shù)
%vmeff:每秒清除的頁(yè)(pgsteal)占總掃描頁(yè)(pgscank+pgscand)的百分比
sar I/O和傳送速率監(jiān)控
每10秒采樣一次竟秫,連續(xù)采樣3次娃惯,報(bào)告緩沖區(qū)的使用情況,需鍵入如下命令:
$ sar -b 10 3
輸出項(xiàng)說(shuō)明
tps:每秒鐘物理設(shè)備的 I/O 傳輸總量
rtps:每秒鐘從物理設(shè)備讀入的數(shù)據(jù)總量
wtps:每秒鐘向物理設(shè)備寫(xiě)入的數(shù)據(jù)總量
bread/s:每秒鐘從物理設(shè)備讀入的數(shù)據(jù)量肥败,單位為 塊/s
bwrtn/s:每秒鐘向物理設(shè)備寫(xiě)入的數(shù)據(jù)量趾浅,單位為 塊/s
##### sar 設(shè)備使用情況監(jiān)控
# 每10秒采樣一次,連續(xù)采樣3次馒稍,報(bào)告設(shè)備使用情況皿哨,需鍵入如下命令:
$ sar -d 10 3 –p
#輸出說(shuō)明
參數(shù)-p可以打印出sda,hdc等磁盤(pán)設(shè)備名稱(chēng),如果不用參數(shù)-p,設(shè)備節(jié)點(diǎn)則有可能是dev8-0,dev22-0
tps:每秒從物理磁盤(pán)I/O的次數(shù).多個(gè)邏輯請(qǐng)求會(huì)被合并為一個(gè)I/O磁盤(pán)請(qǐng)求,一次傳輸?shù)拇笮∈遣淮_定的.
rd_sec/s:每秒讀扇區(qū)的次數(shù).
wr_sec/s:每秒寫(xiě)扇區(qū)的次數(shù).
avgrq-sz:平均每次設(shè)備I/O操作的數(shù)據(jù)大小(扇區(qū)).
avgqu-sz:磁盤(pán)請(qǐng)求隊(duì)列的平均長(zhǎng)度.
await:從請(qǐng)求磁盤(pán)操作到系統(tǒng)完成處理,每次請(qǐng)求的平均消耗時(shí)間,包括請(qǐng)求隊(duì)列等待時(shí)間,單位是毫秒(1秒=1000毫秒).
svctm:系統(tǒng)處理每次請(qǐng)求的平均時(shí)間,不包括在請(qǐng)求隊(duì)列中消耗的時(shí)間.
%util:I/O請(qǐng)求占CPU的百分比,比率越大,說(shuō)明越飽和.
1. avgqu-sz 的值較低時(shí),設(shè)備的利用率較高纽谒。
2. 當(dāng)%util的值接近 1% 時(shí)证膨,表示設(shè)備帶寬已經(jīng)占滿(mǎn)。