linux 性能监视命令
在Linux下有很多系統(tǒng)性能分析工具,比較常見(jiàn)的有top、free、ps、time、timex、uptime等。下文將介紹幾個(gè)較為重要的性能分析工具vmstat、iostat和sar及其使用。
用vmstat監(jiān)視內(nèi)存使用情況
vmstat是Virtual Meomory Statistics(虛擬內(nèi)存統(tǒng)計(jì))的縮寫(xiě),可對(duì)操作系統(tǒng)的虛擬內(nèi)存、進(jìn)程、CPU活動(dòng)進(jìn)行監(jiān)視。它是對(duì)系統(tǒng)的整體情況進(jìn)行統(tǒng)計(jì),不足之處是無(wú)法對(duì)某個(gè)進(jìn)程進(jìn)行深入分析。
vmstat的語(yǔ)法如下:
vmstat [-V] [-n] [delay [count]]
其中,-V表示打印出版本信息;-n表示在周期性循環(huán)輸出時(shí),輸出的頭部信息僅顯示一次;delay是兩次輸出之間的延遲時(shí)間;count是指按照這個(gè)時(shí)間間隔統(tǒng)計(jì)的次數(shù)。對(duì)于vmstat輸出各字段的含義,可運(yùn)行man vmstat查看。
用iostat監(jiān)視I/O子系統(tǒng)情況
iostat是I/O statistics(輸入/輸出統(tǒng)計(jì))的縮寫(xiě),iostat工具將對(duì)系統(tǒng)的磁盤(pán)操作活動(dòng)進(jìn)行監(jiān)視。它的特點(diǎn)是匯報(bào)磁盤(pán)活動(dòng)統(tǒng)計(jì)情況,同時(shí)也會(huì)匯報(bào)出CPU使用情況。同vmstat一樣,iostat也有一個(gè)弱點(diǎn),就是它不能對(duì)某個(gè)進(jìn)程進(jìn)行深入分析,僅對(duì)系統(tǒng)的整體情況進(jìn)行分析。
iostat的語(yǔ)法如下:
iostat [ -c | -d ] [ -k ] [ -t ] [ -V ] [ -x [ device ] ] [ interval [ count ] ]
其中,-c為匯報(bào)CPU的使用情況;-d為匯報(bào)磁盤(pán)的使用情況;-k表示每秒按kilobytes字節(jié)顯示數(shù)據(jù);-t為打印匯報(bào)的時(shí)間;-v表示打印出版本信息和用法;-x device指定要統(tǒng)計(jì)的設(shè)備名稱,默認(rèn)為所有的設(shè)備;interval指每次統(tǒng)計(jì)間隔的時(shí)間;count指按照這個(gè)時(shí)間間隔統(tǒng)計(jì)的次數(shù)。
iostat一般的輸出格式如下:
Linux 2.6.18-128.el5 (rac1)???? 08/20/2010
avg-cpu:? %user?? %nice %system %iowait? %steal?? %idle
?????????? 0.07??? 0.00??? 0.06??? 0.01??? 0.00?? 99.86
Device:??????????? tps?? Blk_read/s?? Blk_wrtn/s?? Blk_read?? Blk_wrtn
sda?????????????? 2.32???????? 8.36??????? 71.07??? 1526179?? 12969146
sda1????????????? 0.00???????? 0.01???????? 0.00?????? 2231???????? 10
sda2????????????? 1.04???????? 2.61??????? 41.72???? 476291??? 7613088
sda3????????????? 0.00???????? 0.01???????? 0.00?????? 1756????????? 0
sda4????????????? 0.00???????? 0.00???????? 0.00????????? 9????????? 0
sda5????????????? 1.28???????? 5.73??????? 29.35??? 1045323??? 5356048
sdb?????????????? 8.46?????? 112.82??????? 52.52?? 20586955??? 9584357
sdb1????????????? 0.05???????? 0.32???????? 0.00????? 58933????????? 0
sdb2????????????? 2.99???????? 2.00???????? 1.00???? 364212???? 181792
sdb3????????????? 5.07?????? 110.47??????? 39.65?? 20158185??? 7234830
sdb4????????????? 0.00???????? 0.00???????? 0.00????????? 5????????? 0
sdb5????????????? 0.35???????? 0.00??????? 11.88??????? 893??? 2167735
sdb6????????????? 0.00???????? 0.00???????? 0.00??????? 387?
?
對(duì)于輸出中各字段的含義,iostat的幫助中有詳細(xì)的說(shuō)明。
vmstat 命令報(bào)告虛擬內(nèi)存統(tǒng)計(jì)信息和CPU負(fù)荷:頁(yè)面調(diào)度,交換,任務(wù)交換,CPU利用率。命令的語(yǔ)法是:
vmstat [-cisS] [d1 d2 d3 d4] [interval [count]]
當(dāng)不用選項(xiàng)時(shí),vmstat顯示一條曲線表示自從系統(tǒng)啟動(dòng)后活動(dòng)的信息。如果指定interval(時(shí)間間隔),接下來(lái)的線是重復(fù)顯示最后的interval期間活動(dòng)的情況,直到用戶中斷命令執(zhí)行。當(dāng)同時(shí)提供計(jì)數(shù)器時(shí),統(tǒng)計(jì)信息按時(shí)間計(jì)數(shù)來(lái)顯示。
如果指定了一個(gè)磁盤(pán)名(如d1,d2,等等。),這些磁盤(pán)得到優(yōu)先顯示。通常,系統(tǒng)上的前4個(gè)磁盤(pán)設(shè)備是顯示的,因?yàn)橹挥兴膫€(gè)設(shè)備能在一線條上顯示,這個(gè)選項(xiàng)允許性能分析員修改缺省顯示選項(xiàng)。(*磁盤(pán)名通常隨id,sd,xd,或xy (取決于類型和I/0界面)加一個(gè)數(shù)字,如id0,sd2,xd1等等命名而定。)
,vmstat 命令顯示若干字段信息:
procs 報(bào)表下面三種狀態(tài)的進(jìn)程數(shù):
r--在運(yùn)行隊(duì)列中等候運(yùn)行
b--被資源阻塞(I/0,頁(yè)面調(diào)度,等等.)
w--可運(yùn)行但是被換出的
memory 報(bào)告虛擬內(nèi)存和實(shí)存信息:
swap--以千字節(jié)為單位的當(dāng)前可用交換空間的數(shù)量
free--以千字節(jié)為單位的頁(yè)自由表大小
page 報(bào)告每秒頁(yè)面調(diào)度活動(dòng)數(shù)量的信息:
re-從自由表回收頁(yè)
mf--次要的錯(cuò)誤;地址空間或硬件地址轉(zhuǎn)換錯(cuò)誤
pi--頁(yè)入的千字節(jié)數(shù)
po -頁(yè)出的千字節(jié)數(shù)
fr- 釋放的千字節(jié)數(shù)
de--以千字節(jié)為單位的可接受的短期內(nèi)存不足數(shù)
sr--頁(yè)由時(shí)鐘算法掃描
disk 可以為四個(gè)磁盤(pán)報(bào)告每秒磁盤(pán)I/O的數(shù)量
?
?
faults 報(bào)告每秒系統(tǒng)軟件中斷和硬件中斷的速率
in-設(shè)備中斷,不包括系統(tǒng)時(shí)鐘中斷
sy-系統(tǒng)調(diào)用
cs-CPU任務(wù)(上下文)交換
cpu-- CPU故障時(shí)間的百分比,在多處理器系統(tǒng)上,這是全部處理器的平均值:
us- 用戶時(shí)間
sy-- 系統(tǒng)時(shí)間
id-- 閑置時(shí)間
vmstat命令有四個(gè)可選標(biāo)志可供使用。如果機(jī)器有虛擬地址緩存-c標(biāo)志就改變輸出報(bào)告緩存刷新統(tǒng)計(jì)數(shù)據(jù)。報(bào)告包括自從系統(tǒng)啟動(dòng)后每種緩存刷新全部總量。六個(gè)緩存類型是用戶,上下文,區(qū)域,段,頁(yè),部分頁(yè)。
-i標(biāo)志 使輸出變?yōu)閳?bào)告中斷的數(shù)量。如果給出設(shè)備名,如d1,d2等,監(jiān)控將在設(shè)備級(jí)*執(zhí)行,(*注,參閱第十二章有關(guān)打開(kāi)設(shè)備級(jí)監(jiān)控的信息。)并報(bào)告每個(gè)給定設(shè)備的統(tǒng)計(jì)信息。
修改"普通"報(bào)告來(lái)顯示交換而非頁(yè)面調(diào)度活動(dòng)的信息。這選項(xiàng)改變顯示的兩個(gè)字段:si(換入)和so(換出)替代了re和mf字段。
值得注意是,interval 和count選項(xiàng)對(duì)-i或-s選項(xiàng)是非法的。
vmstat 參數(shù)詳解
procs:
?
r-->在運(yùn)行隊(duì)列中等待的進(jìn)程數(shù)
b-->在等待io的進(jìn)程數(shù)
w-->可以進(jìn)入運(yùn)行隊(duì)列但被替換的進(jìn)程
memoy
swap-->現(xiàn)時(shí)可用的交換內(nèi)存(k表示)
free-->空閑的內(nèi)存(k表示)
?
pages
re--》回收的頁(yè)面
mf--》非嚴(yán)重錯(cuò)誤的頁(yè)面
pi--》進(jìn)入頁(yè)面數(shù)(k表示)
po--》出頁(yè)面數(shù)(k表示)
fr--》空余的頁(yè)面數(shù)(k表示)
de--》提前讀入的頁(yè)面中的未命中數(shù)
sr--》通過(guò)時(shí)鐘算法掃描的頁(yè)面
disk 顯示每秒的磁盤(pán)操作。 s表示scsi盤(pán),0表示盤(pán)號(hào)
fault 顯示每秒的中斷數(shù)
in--》設(shè)備中斷
sy--》系統(tǒng)中斷
cy--》cpu交換
cpu 表示cpu的使用狀態(tài)
cs--》用戶進(jìn)程使用的時(shí)間
sy--》系統(tǒng)進(jìn)程使用的時(shí)間
id--》cpu空閑的時(shí)間
FIELD DESCRIPTIONS
Procs
r: The number of processes waiting for run time.
b: The number of processes in uninterruptable sleep.
w: The number of processes swapped out but otherwise runnable.
Thisfield is calculated, but Linux never desperation swaps.
?
Memory
swpd: the amount of virtual memory used (kB).
free: the amount of idle memory (kB).
buff: the amount of memory used as buffers (kB).
Swap
si: Amount of memory swapped in from disk (kB/s). 虛擬內(nèi)存的頁(yè)導(dǎo)入(從SWAP DISK導(dǎo)入RAM)
so: Amount of memory swapped to disk (kB/s). 虛擬內(nèi)存的頁(yè)導(dǎo)出.
(從RAM到SWAP DISK)
IO
bi: Blocks sent to a block device (blocks/s).
bo: Blocks received from a block device (blocks/s).
System
in: The number of interrupts per second, including the clock.
cs: The number of context switches per second.
: CPU
These are percentages of total CPU time.
us: user time
sy: system time
id: idle time
如果 r經(jīng)常大于 4 ,且id經(jīng)常少于40,表示cpu的負(fù)荷很重。
如果pi,po 長(zhǎng)期不等于0,表示內(nèi)存不足。
如果disk 經(jīng)常不等于0, 且在 b中的隊(duì)列 大于3, 表示 io性能不好。
由vmstat看服務(wù)器
說(shuō)明:由于STATSPACK并不能獲取全面分析性能問(wèn)題所需要的所有信息,所以需要擴(kuò)展其收集服務(wù)器的統(tǒng)計(jì)信息。(本文環(huán)境REDHAT Linux7.2)
VMSTAT介紹
通過(guò)STATSPACK收集服務(wù)器信息,主要通過(guò)收集VMSTAT的信息來(lái)展現(xiàn)服務(wù)器狀況。VMSTAT工具是最常見(jiàn)的UNIX監(jiān)控工具,可以展現(xiàn)給定時(shí)間間隔的服務(wù)器的狀態(tài)值。
一般VMSTAT工具的使用是通過(guò)兩個(gè)數(shù)字參數(shù)來(lái)完成的,第一個(gè)參數(shù)是采樣的時(shí)間間隔數(shù),單位是秒,第二個(gè)參數(shù)是采樣的次數(shù)。如:
[oracle@brucelau oracle]$ vmstat 1 2
procs memory swap io system CPU
r b w swpd free buff cache si so bi bo in cs us sy id
1 0 0 0 271844 186052 255852 0 0 2 6 102 10 0 0 100
0 0 0 0 271844 186052 255852 0 0 0 0 104 11 0 0 100
(注:目前系統(tǒng)幾乎空閑,并且不同操作系統(tǒng)VMSTAT輸出內(nèi)容有所不同)
目前說(shuō)來(lái),對(duì)于服務(wù)器監(jiān)控有用處的度量主要有:
r(運(yùn)行隊(duì)列)
pi(頁(yè)導(dǎo)入)
us(用戶CPU)
sy(系統(tǒng)CPU)
id(空閑)
通過(guò)VMSTAT識(shí)別CPU瓶頸
r(運(yùn)行隊(duì)列)展示了正在執(zhí)行和等待CPU資源的任務(wù)個(gè)數(shù)。當(dāng)這個(gè)值超過(guò)了CPU數(shù)目,就會(huì)出現(xiàn)CPU瓶頸了。
獲得CPU個(gè)數(shù)的命令(LINUX環(huán)境):
cat /proc/cpuinfo|grep processor|wc -l
當(dāng)r值超過(guò)了CPU個(gè)數(shù),就會(huì)出現(xiàn)CPU瓶頸,解決辦法大體幾種:
1. 最簡(jiǎn)單的就是增加CPU個(gè)數(shù)
2. 通過(guò)調(diào)整任務(wù)執(zhí)行時(shí)間,如大任務(wù)放到系統(tǒng)不繁忙的情況下進(jìn)行執(zhí)行,進(jìn)爾平衡系統(tǒng)任務(wù)
3. 調(diào)整已有任務(wù)的優(yōu)先級(jí)
通過(guò)VMSTAT識(shí)別CPU滿負(fù)荷
首先需要聲明一點(diǎn)的是,vmstat中CPU的度量是百分比的。當(dāng)us+sy的值接近100的時(shí)候,表示CPU正在接近滿負(fù)荷工作。但要注意的是,CPU滿負(fù)荷工作并不能說(shuō)明什么,UNIX總是試圖要CPU盡可能的繁忙,使得任務(wù)的吞吐量最大化。唯一能夠確定CPU瓶頸的還是r(運(yùn)行隊(duì)列)的值。
通過(guò)VMSTAT識(shí)別RAM瓶頸
數(shù)據(jù)庫(kù)服務(wù)器都只有有限的RAM,出現(xiàn)內(nèi)存爭(zhēng)用現(xiàn)象是Oracle的常見(jiàn)問(wèn)題。
首先察看RAM的數(shù)量,命令如下(LINUX環(huán)境):
[root@brucelau root]#free
total used free shared buffers cached
Mem: 1027348 873312 154036 185736 187496 293964
-/+ buffers/cache: 391852 635496
Swap: 2096440 0 2096440
當(dāng)然可以使用top等其他命令來(lái)顯示RAM。
當(dāng)內(nèi)存的需求大于RAM的數(shù)量,服務(wù)器啟動(dòng)了虛擬內(nèi)存機(jī)制,通過(guò)虛擬內(nèi)存,可以將RAM段移到SWAP DISK的特殊磁盤(pán)段上,這樣會(huì)出現(xiàn)虛擬內(nèi)存的頁(yè)導(dǎo)出和頁(yè)導(dǎo)入現(xiàn)象,頁(yè)導(dǎo)出并不能說(shuō)明RAM瓶頸,虛擬內(nèi)存系統(tǒng)經(jīng)常會(huì)對(duì)內(nèi)存段進(jìn)行頁(yè)導(dǎo)出,但頁(yè)導(dǎo)入操作就表明了服務(wù)器需要更多的內(nèi)存了,頁(yè)導(dǎo)入需要從SWAP DISK上將內(nèi)存段復(fù)制回RAM,導(dǎo)致服務(wù)器速度變慢。
解決的辦法有幾種:
1. 最簡(jiǎn)單的,加大RAM
2. 改小SGA,使得對(duì)RAM需求減少
3. 減少RAM的需求(如:減少PGA)
?
?
?
?
轉(zhuǎn)載于:https://blog.51cto.com/chuanrensheng/380628
總結(jié)
以上是生活随笔為你收集整理的linux 性能监视命令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: TurboMail邮件系统实用技巧十四:
- 下一篇: linux 其他常用命令