詳解Linux命令iostat
Linux系統(tǒng)出現(xiàn)了性能問(wèn)題,一般我們可以通過(guò)top、iostat、free、vmstat等命令來(lái)查看初步定位問(wèn)題。在一個(gè)以前看到系統(tǒng)監(jiān)控工具,總在想那些監(jiān)控工具的代理,如何收集系統(tǒng)性能信息,io性能,cpu使用,帶寬使用等信息,偶然發(fā)現(xiàn),不同系統(tǒng)均提供有性能分析工具的,代理可通過(guò)這些命令獲取系統(tǒng)性能信息,個(gè)人猜測(cè),不知道具體是不是這樣的。其中iostat可以給我們提供豐富的IO狀態(tài)數(shù)據(jù),下邊就來(lái)看一下iostat如何使用,命令能夠輸出那些信息。
簡(jiǎn)述
Linux系統(tǒng)中通過(guò)iostat我們能查看到系統(tǒng)IO狀態(tài)信息,從而確定IO性能是否存在瓶頸。
命令安裝
iostat是查看Linux系統(tǒng)io是否存在瓶頸頂好用的一個(gè)命令,但是由此而系統(tǒng)默認(rèn)沒有安裝的,以centos系統(tǒng)為例,看看如何安裝iostat命令。
[root@localhost ~]# iostat -bash: iostat: command not found [root@localhost ~]# yum install -y sysstat
命令使用
[root@localhost ~]# iostat --help Usage: iostat [ options ] [ <interval> [ <count> ] ] Options are: [ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [ -j { ID | LABEL | PATH | UUID | ... } [ <device> [...] | ALL ] ] [ <device> [...] | ALL ] [ -p [ <device> [,...] | ALL ] ]
iostat 主要有三個(gè)操作箱,options 操作項(xiàng),interval指定統(tǒng)計(jì)時(shí)間間隔,count總共輸出次數(shù)
-c 參數(shù),可以用來(lái)插卡部分cpu狀態(tài)信息
[root@localhost ~]# iostat -c Linux 2.6.32-573.el6.x86_64 (localhost) 06/30/2017 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.02 0.00 0.00 0.00 0.00 99.98
-k 參數(shù),某些使用block為單位的列強(qiáng)制使用Kilobytes為單位
[root@localhost ~]# iostat -k 1 10 Linux 2.6.32-573.el6.x86_64 (localhost) 06/30/2017 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.02 0.00 0.00 0.00 0.00 99.98 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.14 0.04 1.65 969915 41732790 dm-0 0.42 0.04 1.65 936269 41632492 dm-1 0.00 0.00 0.00 19920 62056 dm-2 0.00 0.00 0.00 1001 38212 dm-3 0.00 0.01 0.00 127405 7160 avg-cpu: %user %nice %system %iowait %steal %idle 0.00 0.00 0.00 0.00 0.00 100.00 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 4.00 0.00 48.00 0 48 dm-0 12.00 0.00 48.00 0 48 dm-1 0.00 0.00 0.00 0 0 dm-2 0.00 0.00 0.00 0 0 dm-3 0.00 0.00 0.00 0 0
-d 參數(shù),顯示設(shè)備(磁盤)使用狀態(tài)
[root@localhost ~]# iostat -d 1 3 Linux 2.6.32-573.el6.x86_64 (localhost) 06/30/2017 _x86_64_ (4 CPU) Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 0.14 0.08 3.31 1939830 83470564 dm-0 0.42 0.07 3.30 1872538 83269968 dm-1 0.00 0.00 0.00 39840 124112 dm-2 0.00 0.00 0.00 2002 76424 dm-3 0.00 0.01 0.00 254810 14320
解釋一下輸出列表示什么意思:
tps:該設(shè)備每秒的傳輸次數(shù)(Indicate the number of transfers per second that were issued to the device.)?!耙淮蝹鬏敗币馑际恰耙淮蜪/O請(qǐng)求”。多個(gè)邏輯請(qǐng)求可能會(huì)被合并為“一次I/O請(qǐng)求”?!耙淮蝹鬏敗闭?qǐng)求的大小是未知的。
kB_read/s:每秒從設(shè)備(drive expressed)讀取的數(shù)據(jù)量;kB_wrtn/s:每秒向設(shè)備(drive expressed)寫入的數(shù)據(jù)量;kB_read:讀取的總數(shù)據(jù)量;kB_wrtn:寫入的總數(shù)量數(shù)據(jù)量;這些單位都為Kilobytes。
上面的例子中,我們可以看到磁盤sda以及它的各個(gè)分區(qū)的統(tǒng)計(jì)數(shù)據(jù),當(dāng)時(shí)統(tǒng)計(jì)的磁盤總TPS是39.29,下面是各個(gè)分區(qū)的TPS。(因?yàn)槭撬查g值,所以總TPS并不嚴(yán)格等于各個(gè)分區(qū)TPS的總和)
-x 參數(shù),輸出更多詳細(xì)信息
[root@localhost ~]# iostat -x 1 2 Linux 2.6.32-573.el6.x86_64 (localhost) 06/30/2017 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.02 0.00 0.00 0.00 0.00 99.98 Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 0.27 0.00 0.14 0.08 3.31 23.78 0.00 0.31 1.51 0.29 0.16 0.00 dm-0 0.00 0.00 0.00 0.41 0.07 3.30 8.13 0.00 2.64 2.05 2.64 0.06 0.00 dm-1 0.00 0.00 0.00 0.00 0.00 0.00 8.00 0.00 2.29 1.61 2.51 0.08 0.00 dm-2 0.00 0.00 0.00 0.00 0.00 0.00 8.01 0.00 19.82 0.64 20.30 0.03 0.00 dm-3 0.00 0.00 0.00 0.00 0.01 0.00 30.85 0.00 0.04 0.02 0.20 0.02 0.00
解釋一下 -x參數(shù)輸出列意思
rrqm/s:每秒這個(gè)設(shè)備相關(guān)的讀取請(qǐng)求有多少被Merge了(當(dāng)系統(tǒng)調(diào)用需要讀取數(shù)據(jù)的時(shí)候,VFS將請(qǐng)求發(fā)到各個(gè)FS,如果FS發(fā)現(xiàn)不同的讀取請(qǐng)求讀取的是相同Block的數(shù)據(jù),F(xiàn)S會(huì)將這個(gè)請(qǐng)求合并Merge);wrqm/s:每秒這個(gè)設(shè)備相關(guān)的寫入請(qǐng)求有多少被Merge了。
rsec/s:每秒讀取的扇區(qū)數(shù);wsec/:每秒寫入的扇區(qū)數(shù)。r/s:The number of read requests that were issued to the device per second;w/s:The number of write requests that were issued to the device per second;
await:每一個(gè)IO請(qǐng)求的處理的平均時(shí)間(單位是毫秒)。這里可以理解為IO的響應(yīng)時(shí)間,一般地系統(tǒng)IO響應(yīng)時(shí)間應(yīng)該低于5ms,如果大于10ms就比較大了。
%util:在統(tǒng)計(jì)時(shí)間內(nèi)所有處理IO時(shí)間,除以總共統(tǒng)計(jì)時(shí)間。例如,如果統(tǒng)計(jì)間隔1秒,該設(shè)備有0.8秒在處理IO,而0.2秒閑置,那么該設(shè)備的%util = 0.8/1 = 80%,所以該參數(shù)暗示了設(shè)備的繁忙程度。一般地,如果該參數(shù)是100%表示設(shè)備已經(jīng)接近滿負(fù)荷運(yùn)行了(當(dāng)然如果是多磁盤,即使%util是100%,因?yàn)榇疟P的并發(fā)能力,所以磁盤使用未必就到了瓶頸)。
常見用法
iostat -d -k 1 10 #查看TPS和吞吐量信息 iostat -d -x -k 1 10 #查看設(shè)備使用率(%util)、響應(yīng)時(shí)間(await) iostat -c 1 10 #查看cpu狀態(tài)
使用實(shí)例
查看指定磁盤吞吐量和速率
[root@localhost ~]# iostat -d -d 1 1 Linux 2.6.32-573.el6.x86_64 (localhost) 06/30/2017 _x86_64_ (4 CPU) Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 0.14 0.08 3.31 1939830 83482716 dm-0 0.42 0.07 3.30 1872538 83282120 dm-1 0.00 0.00 0.00 39840 124112 dm-2 0.00 0.00 0.00 2002 76424 dm-3 0.00 0.01 0.00 254810 14320 #從結(jié)果看到平均傳輸次數(shù)0.14,每秒讀取0.08M,每秒寫3.31M
磁盤性能統(tǒng)計(jì)
[root@localhost ~]# iostat -x -k 1 1 Linux 2.6.32-573.el6.x86_64 (localhost) 06/30/2017 _x86_64_ (4 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 0.02 0.00 0.00 0.00 0.00 99.98 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sda 0.00 0.27 0.00 0.14 0.04 1.65 23.78 0.00 0.31 1.51 0.29 0.16 0.00
以上所述是小編給大家介紹的詳解Linux命令iostat,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Linux中使用Pyinotify模塊實(shí)時(shí)監(jiān)控文件系統(tǒng)更改
pyinotiy的目的是綁定三個(gè)系統(tǒng)調(diào)用,并支持其上的實(shí)現(xiàn),提供了一個(gè)共同和抽象的手段來(lái)操縱這些功能。這篇文章主要介紹了Linux下修改IP、DNS和路由命令行配置方法,需要的朋友可以參考下2018-03-03Linux系統(tǒng)下常見基本問(wèn)題的解決方法
是用linux經(jīng)常會(huì)出現(xiàn)一些常見的問(wèn)題,處理方法也比較簡(jiǎn)單,建議大家膽大心細(xì)的來(lái)操作,命令不要怕,慢慢就習(xí)慣了2008-03-03Linux Crontab 啟動(dòng) 、運(yùn)行 和編輯 查看的命令
cron服務(wù)是Linux的內(nèi)置服務(wù),但它不會(huì)開機(jī)自動(dòng)啟動(dòng)。可以使用命令啟動(dòng)和停止服務(wù),對(duì)Crontab 啟動(dòng) 、運(yùn)行 和編輯 查看的命令相關(guān)知識(shí)感興趣的的朋友通過(guò)本文學(xué)習(xí)吧2017-07-07談?wù)刲inux中flock、lockf和fcntl的區(qū)別
相信大家都知道,這三個(gè)函數(shù)的作用都是給文件加鎖,那它們有什么區(qū)別呢?下面跟著小編一起來(lái)看看,有需要的可以參考借鑒。2016-08-08linux svn服務(wù)器搭建、客戶端操作、備份與恢復(fù)
Subversion(SVN)是一個(gè)開源的版本控制系統(tǒng),管理著隨時(shí)間改變的數(shù)據(jù).這篇文章主要介紹了linux svn服務(wù)器搭建、客戶端操作、備份與恢復(fù),需要的朋友可以參考下2017-02-02