溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Linux 下使用iostat命令生成CPU和I/O的統(tǒng)計(jì)報(bào)告

發(fā)布時(shí)間:2020-06-15 06:17:25 來源:網(wǎng)絡(luò) 閱讀:5286 作者:linux_python 欄目:移動開發(fā)

 查看系統(tǒng)狀態(tài)vmstat

[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 418416   7392  36796    0    0    37     2   34   22  0  2 97  1  0
 [root@localhost ~]# vmstat 1  //每一秒顯示一次
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 418416   7400  36796    0    0    36     2   34   21  0  2 97  1  0
 0  0      0 418408   7400  36796    0    0     0     0   14    9  0  0 100  0  0

r run  可以理解為1秒鐘之內(nèi)有幾個(gè)進(jìn)程占用CPU
b  等待資源(磁盤或內(nèi)存)的進(jìn)程數(shù),b越大磁盤壓力越大
swpd  有多少塊被交換了(當(dāng)內(nèi)存不夠的時(shí)候),當(dāng)數(shù)值不大且固定可以不用管
free  有多少剩余的內(nèi)存,單位是K
buffer  緩沖,從內(nèi)存讀出來放入磁盤中
cache  緩存,從磁盤讀出來放入內(nèi)存當(dāng)中
si   寫入內(nèi)存
so 從內(nèi)存讀出來
bi  讀磁盤,寫進(jìn)內(nèi)存
bo  從內(nèi)存讀出來,寫入磁盤
in
cs 上下文切換次數(shù)
us用戶態(tài)的進(jìn)程
sy系統(tǒng)態(tài)的進(jìn)程
id  CPU處于空閑的百分比
wa 輸入輸出等待所占CPU的包粉筆
st 被偷走cpu的百分比



iostat通過觀察設(shè)備的活躍時(shí)間和他們平均傳輸率之間的關(guān)系來監(jiān)視系統(tǒng)的輸入/輸出設(shè)備負(fù)載。iostat生成的報(bào)告可以用于修改系統(tǒng)配置從而更好在物理硬盤間平衡輸入/輸出的報(bào)告。

安裝 iostat

 yum install sysstat

要運(yùn)行它,只需在控制臺下輸入iostat

Linux 下使用iostat命令生成CPU和I/O的統(tǒng)計(jì)報(bào)告

第一部分包含了CPU報(bào)告

  • %user : 顯示了在執(zhí)行用戶(應(yīng)用)層時(shí)的CPU利用率

  • %nice : 顯示了在以nice優(yōu)先級運(yùn)行用戶層的CPU利用率

  • %system : 顯示了在執(zhí)行系統(tǒng)(內(nèi)核)層時(shí)的CPU利用率

  • %iowait : 顯示了CPU在I/O請求掛起時(shí)空閑時(shí)間的百分比

  • %steal : 顯示了當(dāng)hypervisor正服務(wù)于另外一個(gè)虛擬處理器時(shí)無意識地等待虛擬CPU所占有的時(shí)間百分比。

  • %idle : 顯示了CPU在I/O沒有掛起請求時(shí)空閑時(shí)間的百分比

第二部分包含了設(shè)備利用率報(bào)告

  • Device : 列出的/dev 目錄下的設(shè)備/分區(qū)名稱

  • tps : 顯示每秒傳輸給設(shè)備的數(shù)量。更高的tps意味著處理器更忙。

  • Blk_read/s : 顯示了每秒從設(shè)備上讀取的塊的數(shù)量(KB,MB)

  • Blk_wrtn/s : 顯示了每秒寫入設(shè)備上塊的數(shù)量(KB,MB)

  • Blk_read : 顯示所有已讀取的塊

  • Blk_wrtn : 顯示所有已寫入的塊

默認(rèn)上,iostat以B為單位衡量I/O系統(tǒng)。為了更便于閱讀,我們可以iostat將報(bào)告轉(zhuǎn)換成以KB或者M(jìn)B為單位。只需要加入-k參數(shù)來創(chuàng)建以KB為單位-m參數(shù)來創(chuàng)建以MB為單位。

Linux 下使用iostat命令生成CPU和I/O的統(tǒng)計(jì)報(bào)告

要擴(kuò)展報(bào)告,我們可以在iostat后面跟上-x選項(xiàng)

Linux 下使用iostat命令生成CPU和I/O的統(tǒng)計(jì)報(bào)告

rrqm/s: 每秒這個(gè)設(shè)備相關(guān)的讀取請求有多少被Merge(當(dāng)系統(tǒng)調(diào)用需要讀取數(shù)據(jù)的時(shí)候,VFS將請求發(fā)到各個(gè)FS,如果FS發(fā)現(xiàn)不同的讀取請求讀取的是相同Block的數(shù)據(jù),F(xiàn)S會將這個(gè)請求合并Merge)。

wrqm/s: 每秒這個(gè)設(shè)備相關(guān)的寫入請求有多少被Merge了。

r/s: 每秒讀取設(shè)備的量。

w/s:每秒寫設(shè)備的量。

rsec/s: 每秒讀取的扇區(qū)數(shù)。

wsec/s: 每秒寫入的扇區(qū)數(shù)。

avgqu-sz: 平均每次設(shè)備I/O操作的數(shù)據(jù)大小 (扇區(qū))。delta(rsect+wsect)/delta(rio+wio)

avgqu-sz:平均I/O隊(duì)列長度.即 delta(aveq)/s/1000 (因?yàn)閍veq的單位為毫秒).

await:平均每次設(shè)備I/O操作的等待時(shí)間 (毫秒).即 delta(ruse+wuse)/delta(rio+wio)

svctm: 平均每次設(shè)備I/O操作的服務(wù)時(shí)間 (毫秒).即 delta(use)/delta(rio+wio)

%util:  一秒中有百分之多少的時(shí)間用于 I/O 操作,或者說一秒中有多少時(shí)間 I/O 隊(duì)列是非空的.即 delta(use)/s/1000 (因?yàn)閡se的單位為毫秒)

如果 %util 接近 100%,說明產(chǎn)生的I/O請求太多,I/O系統(tǒng)已經(jīng)滿負(fù)荷,該磁盤可能存在瓶頸.


idle小于70% IO壓力就較大了,一般讀取速度有較多的wait.同時(shí)可以結(jié)合vmstat 查看查看b參數(shù)(等待資源的進(jìn)程數(shù))和wa參數(shù)(IO等待所占用的CPU時(shí)間的百分比,高過30%時(shí)IO壓力高),另外 await 的參數(shù)也要多和 svctm 來參考.差的過高就一定有 IO 的問題.

avgqu-sz 也是個(gè)做 IO 調(diào)優(yōu)時(shí)需要注意的地方,這個(gè)就是直接每次操作的數(shù)據(jù)的大小,如果次數(shù)多,但數(shù)據(jù)拿的小的話,其實(shí) IO 也會很小.如果數(shù)據(jù)拿的大,才IO 的數(shù)據(jù)會高.也可以通過 avgqu-sz × ( r/s or w/s ) = rsec/s or wsec/s.也就是講,讀定速度是這個(gè)來決定的.


帶延遲使用iostat

和vmstat一樣,作為一個(gè)統(tǒng)計(jì)工具,最好帶延遲參數(shù)來使用它。通過延遲參數(shù),我們可以看到趨勢。這里有一些帶延時(shí)運(yùn)行iostat的示例。

以MB為單位,2秒間隔,運(yùn)行3次的方式運(yùn)行iostat

Linux 下使用iostat命令生成CPU和I/O的統(tǒng)計(jì)報(bào)告

只顯示CPU報(bào)告,并以3秒為間隔,報(bào)告4次

Linux 下使用iostat命令生成CPU和I/O的統(tǒng)計(jì)報(bào)告

mpstat也可以查看cpu相關(guān)情況

Linux 下使用iostat命令生成CPU和I/O的統(tǒng)計(jì)報(bào)告

顯示sda1和sda2的設(shè)備報(bào)告,以2秒為間隔,報(bào)告3次

[root@SERVER-Test ~]# iostat -d sda1 sda2 2 3
Linux 2.6.32-358.18.1.el6.x86_64 (SERVER-Test)  2014年04月08日     _x86_64_    (4 CPU)
Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda1              0.00         0.39         0.01    3078694      46236
sda2             18.73        94.97       992.08  742920998 7760567792
Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda1              0.00         0.00         0.00          0          0
sda2              3.50         0.00        60.00          0        120
Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda1              0.00         0.00         0.00          0          0
sda2              4.50         4.00       116.00          8        232

文件

iostat使用這些文件來創(chuàng)建報(bào)告。

/proc/stat 包含了系統(tǒng)統(tǒng)計(jì)

/proc/partitions 包含磁盤統(tǒng)計(jì)

/proc/diskstats 包含磁盤統(tǒng)計(jì)

/sys 包含塊設(shè)備統(tǒng)計(jì)

總結(jié)

vmstat用于監(jiān)視內(nèi)存使用,iostat用于監(jiān)視CPU使用率和I/O系統(tǒng),這樣我們就有了完整的工具來監(jiān)視你機(jī)器中三個(gè)重要的組件。在控制臺下輸入man iostat就可進(jìn)入iostat手冊界面。

[root@SERVER-Test ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 1  5 861712 280288 496656 19368480    0    0    12   124    1    0  3  1 95  2  0
[root@SERVER-Test ~]#

輸出信息簡介
r: 運(yùn)行的和等待運(yùn)行的進(jìn)程數(shù),這個(gè)值也可以判斷是否需要增加CPU(長期大于1)

b: 處于不可中斷狀態(tài)的進(jìn)程數(shù),常見的情況是由IO引起的

w: 被交換出去的可運(yùn)行的進(jìn)程數(shù)。此數(shù)由 linux 計(jì)算得出,但 linux 并不耗盡交換空間

Memory
swpd: 虛擬內(nèi)存使用情況(默認(rèn)以KB為單位),如果 swpd 的值不為0,或者還比較大,比如超過100M了,但是 si, so 的值長期為 0,這種情況我們可以不用擔(dān)心,不會影響系統(tǒng)性能。

free: 空閑的內(nèi)存,單位KB
buff: 被用來做為緩存的內(nèi)存數(shù),單位:KB

cache: 作為page cache的內(nèi)存, 文件系統(tǒng)的cache,如果 cache 的值大的時(shí)候,說明cache住的文件數(shù)多,如果頻繁訪問到的文件都能被cache住,那么磁盤的讀IO bi 會非常小。


Swap
si: 從磁盤交換到內(nèi)存的交換頁數(shù)量,單位:KB/秒
so: 從內(nèi)存交換到磁盤的交換頁數(shù)量,單位:KB/秒

內(nèi)存夠用的時(shí)候,這2個(gè)值都是0,如果這2個(gè)值長期大于0時(shí),系統(tǒng)性能會受到影響。磁盤IO和CPU資源都會被消耗。(常有人看到空閑內(nèi)存(free)很少或接近于0時(shí),就認(rèn)為內(nèi)存不夠用了,實(shí)際上不能光看這一點(diǎn)的,還要結(jié)合si,so,如果free很少,但是si,so也很少(大多時(shí)候是0),那么不用擔(dān)心,系統(tǒng)性能這時(shí)不會受到影響的。)


IO
bi: 發(fā)送到塊設(shè)備的塊數(shù),單位:塊/秒
隨機(jī)磁盤讀寫的時(shí)候,這2個(gè)值越大(如超出1M),能看到CPU在IO等待的值也會越大bo: 從塊設(shè)備接收到的塊數(shù),單位:塊/秒


System
in: 每秒的中斷數(shù),包括時(shí)鐘中斷
cs: 每秒的環(huán)境(上下文)切換次數(shù)

上面這2個(gè)值越大,會看到由內(nèi)核消耗的CPU時(shí)間會越多.


CPU 按 CPU 的總使用百分比來顯示
us:用戶進(jìn)程消耗的CPU時(shí)間百分比,值比較高時(shí),說明用戶進(jìn)程消耗的CPU時(shí)間多,但是如果長期超過50% 的使用,那么我們就該考慮優(yōu)化程序算法或者進(jìn)行加速了

sy: CPU 系統(tǒng)使用時(shí)間,內(nèi)核進(jìn)程消耗的CPU時(shí)間百分比,值高時(shí),說明系統(tǒng)內(nèi)核消耗的CPU資源多,這并不是良性的表現(xiàn),我們應(yīng)該檢查原因。

id: 閑置時(shí)間

wa: IO等待消耗的CPU時(shí)間百分比,值高時(shí),說明IO等待比較嚴(yán)重,這可能是由于磁盤大量作隨機(jī)訪問造成,也有可能是磁盤的帶寬出現(xiàn)瓶頸(塊操作)。



Linux操作系統(tǒng)下如何正確查看Raid信息

有些情況下系統(tǒng)不是自己裝的,raid也不是自己配置的,遠(yuǎn)程登錄系統(tǒng)后可能就不知道系統(tǒng)是否有做raid,raid級別?因此稍微總結(jié)一下Linux下查看軟、硬raid信息的方法。


  軟件raid:只能通過Linux系統(tǒng)本身來查看


  cat /proc/mdstat


  可以看到raid級別,狀態(tài)等信息。


  硬件raid: 最佳的辦法是通過已安裝的raid廠商的管理工具來查看,有cmdline,也有圖形界面。如Adaptec公司的硬件卡就可以通過下面的命令進(jìn)行查看:


  # /usr/dpt/raidutil -L all


  可以看到非常詳細(xì)的信息。


  當(dāng)然更多情況是沒有安裝相應(yīng)的管理工具,只能依靠Linux本身的話一般我知道的是兩種方式:


  # dmesg |grep -i raid


  # cat /proc/scsi/scsi


  顯示的信息差不多,raid的廠商,型號,級別,但無法查看各塊硬盤的信息。


  另外經(jīng)過實(shí)際測試,Dell的服務(wù)器可以通過命令來顯示,而HP、IBM等的服務(wù)器通過上面的命令是顯示不出的。只能夠通過裝硬件廠商的管理工具來查看。


使用MegaCli等工具查看Raid磁盤陣列狀態(tài)

命令使用:
MegaCli -LDInfo -Lall -aALL 查raid級別
MegaCli -AdpAllInfo -aALL 查raid卡信息
MegaCli -PDList -aALL 查看硬盤信息
MegaCli -AdpBbuCmd -aAll 查看電池信息
MegaCli -FwTermLog -Dsply -aALL 查看raid卡日志

MegaCli常用參數(shù)介紹
MegaCli -adpCount 【顯示適配器個(gè)數(shù)】
MegaCli -AdpGetTime –aALL 【顯示適配器時(shí)間】
MegaCli -AdpAllInfo -aAll  【顯示所有適配器信息】
MegaCli -LDInfo -LALL -aAll  【顯示所有邏輯磁盤組信息】
MegaCli -PDList -aAll  【顯示所有的物理信息】
MegaCli -AdpBbuCmd -GetBbuStatus -aALL |grep ‘Charger Status’ 【查看充電狀態(tài)】
MegaCli -AdpBbuCmd -GetBbuStatus -aALL【顯示BBU狀態(tài)信息】
MegaCli -AdpBbuCmd -GetBbuCapacityInfo -aALL【顯示BBU容量信息】
MegaCli -AdpBbuCmd -GetBbuDesignInfo -aALL  【顯示BBU設(shè)計(jì)參數(shù)】
MegaCli -AdpBbuCmd -GetBbuProperties -aALL  【顯示當(dāng)前BBU屬性】
MegaCli -cfgdsply -aALL  【顯示Raid卡型號,Raid設(shè)置,Disk相關(guān)信息】


atop命令使用

Atop 是一個(gè)基于 ASCII 的全屏的性能監(jiān)控工具,可用來監(jiān)控進(jìn)程的活動時(shí)間,高亮顯示出一些過載的進(jìn)程,還包括其他的一些系統(tǒng)指標(biāo)例如:CPU、內(nèi)存、交換分區(qū)、磁盤和網(wǎng)絡(luò)等信息。

安裝



wget http://www.atoptool.nl/download/atop-2.0.2.tar.gz
tar zxvf atop-2.0.2.tar.gz
cd atop-2.0.2
make && make install


在安裝atop之后,系統(tǒng)會在/var/log/atop目錄下記錄atop日志文件,我們在命令行下敲入atop"命令也可看到系統(tǒng)當(dāng)前的運(yùn)行情況.

Linux 下使用iostat命令生成CPU和I/O的統(tǒng)計(jì)報(bào)告

ATOP列:該列顯示了主機(jī)名、信息采樣日期和時(shí)間點(diǎn)


PRC列:該列顯示進(jìn)程整體運(yùn)行情況

sys、usr字段分別指示進(jìn)程在內(nèi)核態(tài)和用戶態(tài)的運(yùn)行時(shí)間

#proc字段指示進(jìn)程總數(shù)

#zombie字段指示僵死進(jìn)程的數(shù)量

#exit字段指示atop采樣周期期間退出的進(jìn)程數(shù)量


CPU列:該列顯示CPU整體(即多核CPU作為一個(gè)整體CPU資源)的使用情況,CPU可被用于執(zhí)行進(jìn)程、處理中斷,也可處于空閑狀態(tài)(空閑狀態(tài)分兩種,一種是活動進(jìn)程等待磁盤IO導(dǎo)致CPU空閑,另一種是完全空閑)

sys、usr顯示進(jìn)程在內(nèi)核態(tài)、用戶態(tài)所占CPU的時(shí)間比例

irq字段指示CPU被用于處理中斷的時(shí)間比例

idle字段指示CPU處在完全空閑狀態(tài)的時(shí)間比例

wait字段指示CPU處在進(jìn)程等待磁盤IO導(dǎo)致CPU空閑狀態(tài)的時(shí)間比例

CPU列各個(gè)字段指示值相加結(jié)果為N00%,其中N為cpu核數(shù)。

cpu列:該列顯示某一核cpu的使用情況,各字段含義可參照CPU列,各字段值相加結(jié)果為100%


CPL列:該列顯示CPU負(fù)載情況

avg1、avg5和avg15字段:過去1分鐘、5分鐘和15分鐘內(nèi)運(yùn)行隊(duì)列中的平均進(jìn)程數(shù)量

csw字段指示上下文交換次數(shù)

intr字段指示中斷發(fā)生次數(shù)


MEM列:該列指示內(nèi)存的使用情況

tot字段指示物理內(nèi)存總量

free字段指示空閑內(nèi)存的大小

cache字段指示用于頁緩存的內(nèi)存大小

buff字段指示用于文件緩存的內(nèi)存大小

slab字段指示系統(tǒng)內(nèi)核占用的內(nèi)存大小


SWP列:該列指示交換空間的使用情況

tot字段指示交換區(qū)總量

free字段指示空閑交換空間大小


PAG列:該列指示虛擬內(nèi)存分頁情況

swin、swout字段:換入和換出內(nèi)存頁數(shù)


DSK列:該列指示磁盤使用情況,每一個(gè)磁盤設(shè)備對應(yīng)一列,如果有sdb設(shè)備,那么增多一列DSK信息

sda字段:磁盤設(shè)備標(biāo)識

busy字段:磁盤忙時(shí)比例

read、write字段:讀、寫請求數(shù)量


NET列:多列NET展示了網(wǎng)絡(luò)狀況,包括傳輸層(TCP和UDP)、IP層以及各活動的網(wǎng)口信息

XXXi? 字段指示各層或活動網(wǎng)口收包數(shù)目

XXXo 字段指示各層或活動網(wǎng)口發(fā)包數(shù)目


1)默認(rèn)視圖

進(jìn)入atop信息界面,我們看到的就是進(jìn)程信息的默認(rèn)視圖(上圖下半部分),按g鍵可以從其他視圖跳到默認(rèn)視圖。

2)內(nèi)存視圖

內(nèi)存視圖展示了進(jìn)程使用內(nèi)存情況,按m鍵可進(jìn)入內(nèi)存視圖。

3)命令視圖(Command line)

按c鍵我們可以進(jìn)入命令視圖,該視圖展示了與每個(gè)進(jìn)程相對應(yīng)的命令。

4)d   ——磁盤相關(guān)輸出         n   ——網(wǎng)絡(luò)相關(guān)輸出

5)atop日志

每個(gè)時(shí)間點(diǎn)采樣頁面組合起來就形成了一個(gè)atop日志文件,我們可以使用"atop -r XXX"命令對日志文件進(jìn)行查看。

#cd /var/log/atop/ (進(jìn)入atop日志所在路徑)
# ll
total 21832
-rw-r--r-- 1 root root 5111271 2013-06-30 00:00 atop_20140329
-rw-r--r-- 1 root root 5161400 2013-07-01 00:00 atop_20140330
# atop -r atop_20140329 (分析歷史日志文件)

對于atop日志文件的保存方式,我們可以這樣:

每天保存一個(gè)atop日志文件,該日志文件記錄當(dāng)天信息

日志文件以"atop_YYYYMMDD"的方式命名

設(shè)定日志失效期限,自動刪除一段時(shí)間前的日志文件

其實(shí)atop開發(fā)者已經(jīng)提供了以上日志保存方式,相應(yīng)的atop.daily腳本可以在源碼目錄下找到。在atop.daily腳本中,我們可以通過修改INTERVAL變量改變atop信息采樣周期(默認(rèn)為10分鐘);通過修改以下命令中的數(shù)值改變?nèi)罩颈4嫣鞌?shù)(默認(rèn)為3天)

(sleep 3; find$LOGPATH -name'atop_*'-mtime+3?-exec rm {} \;)&

?

最后,我們修改cron文件,每天凌晨執(zhí)行atop.daily腳本:

0*** root /etc/atop /atop.daily


可以參考:http://blog.jiunile.com/iftop%E3%80%81iotop%E3%80%81htop%E3%80%81atop%E4%BB%8B%E7%BB%8D.html


Linux iostat命令輸出簡要說明 http://www.linuxidc.com/Linux/2013-06/86703.htm

Linux iostat命令 http://www.linuxidc.com/Linux/2013-03/80163.htm

Linux iostat 命令詳解 http://www.linuxidc.com/Linux/2012-03/55736.htm

實(shí)時(shí)系統(tǒng)監(jiān)控工具mpstat 使用詳解 http://www.linuxidc.com/Linux/2012-03/56676.htm


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI