自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux系統(tǒng)管理員應(yīng)該了解的一些I/O統(tǒng)計(jì)工具

系統(tǒng) Linux
作為一個(gè)Linux系統(tǒng)管理員,統(tǒng)計(jì)各類IO是一項(xiàng)必不可少的工作。本文介紹了一些Linux系統(tǒng)管理員應(yīng)該了解的一些I/O統(tǒng)計(jì)工具,希望對(duì)您的工作有所幫助。

作為一個(gè)Linux系統(tǒng)管理員,統(tǒng)計(jì)各類IO是一項(xiàng)必不可少的工作。其統(tǒng)計(jì)工具中iostat顯然又是最重要的一個(gè)統(tǒng)計(jì)手段。但是這里iostat不是本文的重點(diǎn),因?yàn)檫@個(gè)工具的使用在網(wǎng)絡(luò)上已經(jīng)有大量的教程,可以供大家參考。這里主要是想介紹一些其他統(tǒng)計(jì)工具以來滿足不同的需求。

iostat

iostat的功能異常強(qiáng)大,輸出項(xiàng)也特別多,比如下面這個(gè)例子:

  1. Device: rrqm/s  wrqm/s  r/s     w/s    rkB/s    wkB/s    avgrq-sz avgqu-sz   await r_await w_await  svctm  %util 
  2. sda     0.00     0.50  173.50   73.50  3076.00   604.00    29.80   149.93    676.58   74.36 2098.15  4.05 100.00 

其各項(xiàng)的含義分別是:

  • rrqm/s: 每秒進(jìn)行 merge 的讀操作數(shù)目.即 delta(rmerge)/s
  • wrqm/s: 每秒進(jìn)行 merge 的寫操作數(shù)目.即 delta(wmerge)/s
  • r/s: 每秒完成的讀 I/O 設(shè)備次數(shù).即 delta(rio)/s
  • w/s: 每秒完成的寫 I/O 設(shè)備次數(shù).即 delta(wio)/s
  • rsec/s: 每秒讀扇區(qū)數(shù).即 delta(rsect)/s
  • wsec/s: 每秒寫扇區(qū)數(shù).即 delta(wsect)/s
  • rkB/s: 每秒讀K字節(jié)數(shù).是 rsect/s 的一半,因?yàn)槊可葏^(qū)大小為512字節(jié).(需要計(jì)算)
  • wkB/s: 每秒寫K字節(jié)數(shù).是 wsect/s 的一半.(需要計(jì)算)
  • avgrq-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請(qǐng)求太多,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 的問題。

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

svctm 一般要小于 await (因?yàn)橥瑫r(shí)等待的請(qǐng)求的等待時(shí)間被重復(fù)計(jì)算了),svctm 的大小一般和磁盤性能有關(guān),CPU/內(nèi)存的負(fù)荷也會(huì)對(duì)其有影響,請(qǐng)求過多也會(huì)間接導(dǎo)致 svctm 的增加.await 的大小一般取決于服務(wù)時(shí)間(svctm) 以及 I/O 隊(duì)列的長度和 I/O 請(qǐng)求的發(fā)出模式.如果 svctm 比較接近 await,說明 I/O 幾乎沒有等待時(shí)間;如果 await 遠(yuǎn)大于 svctm,說明 I/O 隊(duì)列太長,應(yīng)用得到的響應(yīng)時(shí)間變慢,如果響應(yīng)時(shí)間超過了用戶可以容許的范圍,這時(shí)可以考慮更換更快的磁盤,調(diào)整內(nèi)核 elevator 算法,優(yōu)化應(yīng)用,或者升級(jí) CPU。

隊(duì)列長度(avgqu-sz)也可作為衡量系統(tǒng) I/O 負(fù)荷的指標(biāo),但由于 avgqu-sz 是按照單位時(shí)間的平均值,所以不能反映瞬間的 I/O 洪水。

有時(shí)間的話,我會(huì)單獨(dú)寫幾個(gè)帖子來說說iostat。

iodump

iodump 是一個(gè)統(tǒng)計(jì)每一個(gè)進(jìn)程(線程)所消耗的磁盤I/O工具。這個(gè)一個(gè)perl腳本,其原理時(shí)打開有關(guān)I/O的內(nèi)核記錄消息開關(guān),而后讀取消息然后分析輸出。簡(jiǎn)單使用步驟如下:

首先下載這個(gè)工具:

  1. wget http://aspersa.googlecode.com/svn/trunk/iodump 

然后打開有關(guān)I/O內(nèi)核消息的開關(guān):

  1. echo 1 >/proc/sys/vm/block_dump 

上述開關(guān)打開后,內(nèi)核會(huì)記錄下每一個(gè)I/O操作的消息。我們只需要定時(shí)獲取并分析就好了,比如下面這樣:

  1. while true; do sleep 1; dmesg -c ; done |perl iodump 

等待一段時(shí)間,然后通過ctrl+c來結(jié)束上述腳本,你將獲得下面類似的信息:

  1. TASK  PID   TOTAL   READ   WRITE   DIRTY DEVICES 
  2. postgres   5799    1919    1919   0   0 sda7 
  3. jbd2/sda7-8   1572   35  0  35   0 sda7 
  4. jbd2/sda2-8   250    32  0  32   0 sda2 
  5. flush-8:0     2229   31  0  31   0 sda2, sda7 
  6. postgres   4308     2    0  2    0 sda7 
  7. bash   5804      1   0   1       0 sda2 

上述輸出的單位為塊(block),每塊的大小取決于創(chuàng)建文件系統(tǒng)時(shí)指定的塊大小。比如我這個(gè)里的sda7的block大小是1KB。

iotop

iotop是一個(gè)Python編寫的工具,有類似top工具的UI,包括一些參數(shù)也和top類似。不過它對(duì)系統(tǒng)有一些要求,分別是:

  1. Python ≥ 2.5 or Python ≥ 2.4 with the ctypes module 
  2. Kernel ≥ 2.6.20 
  3. Kernel uses options: 
  4. TASK_DELAY_ACCT 
  5. CONFIG_TASKSTATS 
  6. TASK_IO_ACCOUNTING 
  7. CONFIG_VM_EVENT_COUNTERS 

如果是基于RPM包的系統(tǒng),可以直接下載編譯好的二進(jìn)制包(here)或者二進(jìn)制源代碼包(here)

如果是Debian/Ubuntu系統(tǒng),直接使用:

  1. sudo apt-get install iotop 

即可(不得不說,Debian系統(tǒng)提供的軟件真的是相當(dāng)豐富呀),其他系統(tǒng)則可以通過下面的指令下載源代碼,然后編譯

  1. git clone git://repo.or.cz/iotop.git 

具體的使用方法可以參考iotop(8)手冊(cè),下面是在我機(jī)器上的一個(gè)顯示:

  1. iotop -o -u wgzhao 
  2. Total DISK READ: 2.15 M/s | Total DISK WRITE:  1601.15 K/s 
  3. TID  PRIO  USER  DISK READ  DISK WRITE  SWAPIN  IO COMMAND 
  4. 5984 be/4 wgzhao  2.15 M/s   70.55 K/s  0.00 % 83.67 % postgres: wgzhao pgbench [local] UPDATE 
  5. 4305 be/4 wgzhao  0.00 B/s  227.34 K/s  0.00 %  0.00 % postgres: writer process  
  6. 4308 be/4 wgzhao  0.00 B/s   90.15 K/s  0.00 %  0.00 % postgres: stats collector process 

iopp

iopp是另外一個(gè)統(tǒng)計(jì)每一個(gè)進(jìn)程I/O的工具,使用C語言編寫,理論上應(yīng)該比上述兩個(gè)重狙效率都要高。

安裝方法很簡(jiǎn)單,首先通過下面的指令下載源代碼:

  1. git://github.com/markwkm/iopp.git 

然后分別通過下面的指令編譯安裝:

  1. cmake CMakeLists.txt 
  2. make 
  3. make install DESTDIR=/usr 

下面是一個(gè)使用例子:

  1. iopp -i -c 2 
  2. pid rchar wchar syscr syscw rbytes wbytes cwbytes command 
  3. 2144 0 296 40 8 0 0 0 /usr/sbin/LCDd 
  4. 2284 0 0 2 0 0 0 0 ha_logd: read process 
  5. 2299 0 0 2 0 0 0 0 ha_logd: write process 
  6. 2520 3 3 3 3 0 0 0 /usr/lib/virtualbox/vboxwebsrv 
  7. 2599 2 2 2 2 0 0 0 /usr/lib/virtualbox/VBoxSVC 
  8. 2675 0 0 1 0 0 0 0 runsvdir 
  9. 3177 16 16 4 2 0 0 0 /usr/bin/gnome-shell 
  10. 3192 16 16 4 2 0 0 0 nautilus 
  11. 3305 180 340 100 60 0 0 0 /usr/lib/icedove/icedove-bin 
  12. 3623 1393 1440 1  1 0 0 0 sshd: wgzhao@pts/0 
  13. 4305 0  4603904   0 562 0  4603904 0 postgres: writer process    
  14. 6257 2064384 1892352 252 215 3719168 139264 0 postgres: wgzhao pgbench [local] UPDATE 

上述輸出的各項(xiàng)含義是:

  • pid 進(jìn)程ID
  • rchar 將要從磁盤讀取的字節(jié)數(shù)
  • wchar 已經(jīng)寫入或應(yīng)該要寫入磁盤的字節(jié)數(shù)
  • syscr 讀I/O數(shù)
  • syscw 寫I/O數(shù)
  • rbytes 真正從磁盤讀取的字節(jié)數(shù)
  • wbytes 真正寫入到磁盤的字節(jié)數(shù)
  • cwbytes 因?yàn)榍蹇枕撁婢彺娑鴮?dǎo)致沒有發(fā)生操作的字節(jié)數(shù)
  • command 執(zhí)行的命令

其中rbytes,wbytes,cwbytes會(huì)因給出-k或者-m參數(shù),而顯示為rkb,wkb,cwkb或rmb,wmb,cwmb。command一列如果給出-c的參數(shù)則顯示完整的命令名而不僅僅只是命令本身。

這些參數(shù)的使用和top類似。

更具體的可以參考iopp(8)手冊(cè)。

dstat

dstat 號(hào)稱各種資源統(tǒng)計(jì)工具,其目的是想替代vmstat,iostat,netstat,ifstat等各種單一統(tǒng)計(jì)工具,從而做到All in one。 dstat用Python語言編寫。

dstat能夠清晰顯示每列的信息,特別是單位及大小很明確,不會(huì)在單位換算上犯迷糊和失誤。最重要的是,因?yàn)樗腔谀K化設(shè)計(jì),因此我們可以很容易的寫一個(gè)插件來收集我們需要的統(tǒng)計(jì)信息。

另外,dstat的輸出還可以導(dǎo)出為CSV格式文件,從而可以在電子表格工具里分方便的生成統(tǒng)計(jì)圖形。

目前dstat的插件已經(jīng)相當(dāng)多了,這是我機(jī)器上目前的輸出:

  1. $ dstat  --list 
  2. internal: 
  3. aio, cpu, cpu24, disk, disk24, disk24old, epoch, fs, int, int24, io, ipc, load, lock, mem, net,  
  4. page, page24, proc, raw, socket, swap, swapold, sys, tcp, time, udp, unix, vm 
  5. /usr/share/dstat: 
  6. battery, battery-remain, cpufreq, dbus, disk-tps, disk-util, dstat, dstat-cpu, dstat-ctxt,  
  7. dstat-mem, fan, freespace, gpfs, gpfs-ops, helloworld, innodb-buffer, innodb-io, innodb-ops, lustre,  
  8. memcache-hits, mysql-io, mysql-keys, mysql5-cmds, mysql5-io, mysql5-keys, net-packets, nfs3,  
  9. nfs3-ops, nfsd3, nfsd3-ops, ntp, postfix, power, proc-count, qmail, rpc, rpcd, sendmail, snooze,  
  10. squid, test, thermal, top-bio, top-bio-adv, top-childwait, top-cpu, top-cpu-adv, top-cputime,  
  11. top-cputime-avg, top-int, top-io, top-io-adv, top-latency, top-latency-avg, top-mem, top-oom, utmp,  
  12. vm-memctl, vmk-hba, vmk-int, vmk-nic, vz-cpu, vz-io, vz-ubc, wifi 

下面給出幾個(gè)使用的列子(實(shí)際輸出是帶彩色的,很容易識(shí)別)

dstat的缺省輸出:

  1. wgzhao-nb:~# dstat 
  2. You did not select any stats, using -cdngy by default. 
  3. ----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- 
  4. usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw  
  5. 2   1  87  10   0   0| 816k  385k|   0     0 |   0 0 |2279  7048  
  6. 5   1  78  16   0   0|2600k    0 | 140B  940B|   0 0 |5952    13k 
  7. 5   3  80  12   0   0|2896k  182k|  70B  358B|   0 0 |6074    14k 
  8. 4   2  78  16   0   0|2724k    0 |  70B  374B|   0 0 |5703    15k 
  9. 4   2  81  14   0   0|3008k    0 |  70B  358B|   0 0 |5924    13k 
  10. 5   1  80  14   0   0|1976k   17k|  70B  358B|   0 0 |5819    13k 
  11. 5   2  79  14   0   0|2056k    0 | 198B  374B|   0 0 |5618    13k 
  12. 4   2  79  15   0   0|2416k    0 |  70B  358B|   0 0 |5866    15k 
  13. 5   2  78  15   0   0|2528k    0 |  70B  358B|   0 0 |6356    14k 
  14. 5   2  78  16   0   0|2288k    0 |  70B  358B|   0 0 |6515    15k 
  15. 5   2  79  14   0   0|2656k 8192B|  70B  358B|   0 0 |6490    15k 
  16. 3   2  81  13   0   0|2296k    0 |  70B  374B|   0 0 |5573    15k 
  17. 4   3  76  17   0   1|2224k    0 |  70B  358B|   0 0 |5366    12k 
  18. 5   1  81  13   0   0|2208k    0 | 508B  358B|   0 0 |5403    13k 
  19. 4   2  79  15   0   0|2024k  182k|  70B  358B|   0 0 |5583    13k 
  20. 5   2  79  15   0   0|2148k   17k| 186B  490B|   0 0 |5400    12k 

指定需要顯示的列:

  1. wgzhao-nb:~# dstat  -c --top-cpu -d --top-bio --top-latency 
  2. Module dstat_top_latency failed to load. (Kernel has no scheduler statistics, use at least 2.6.12) 
  3. ----total-cpu-usage---- -most-expensive- -dsk/total- ----most-expensive---- 
  4. usr sys idl wai hiq siq|  cpu process   | read  writ|  block i/o process    
  5. 2 1  87  10 0 0|gnome-shell  0.7| 826k  384k|postgres 692k   52k 
  6. 4 2  79  16 0 0|postgres: wgz3.0|1744k  776k|postgres: w1744k 72k 
  7. 5 3  78  15 0 0|postgres: wgz5.0|3120k  0 |postgres: w3064k  136k 
  8. 6 2  73  19 0 0|postgres: wgz4.2|2608k  285k|postgres: w2608k 136k 
  9. 4 2  77  17 0 0|postgres: wgz3.5|2112k  848k|postgres: w2112k 88k 
  10. 3 2  71  25 0 0|postgres: wgz2.0| 944k 1049k|postgres: w 936k 48k 
  11. 3 2  58  37 0 0|postgres: wgz2.0| 920k 2070k|postgres: w 928k 64k 
  12. 3 2  62  34 0 0|postgres: wgz2.2|1496k  992k|postgres: w1608k 72k 
  13. 3 2  56  38 0 0|postgres: wgz3.0|1840k  645k|postgres: w1856k 88k 
  14. 3 2  78  17 0 0|postgres: wgz3.0|1420k 1200k|postgres: w1292k 80k 
  15. 5 2  80  12 0 1|postgres: wgz4.2|2628k 0 |postgres: w2636k  112k 
  16. 4 3  69  25 0 0|postgres: wgz3.8|2168k  576k|postgres: w2224k 104k 

指定需要顯示的列,并同時(shí)將結(jié)果導(dǎo)出到文件:

  1. wgzhao-nb:~# dstat  --disk --mem --proc --io --sys --filesystem --tcp --vm --output dstat.csv 
  2. -dsk/total- ------memory-usage----- ---procs--- --io/total- ---system-- --filesystem- ----tcp-sockets---- -----virtual-memory---- 
  3.  read  writ| used  buff  cach  free|run blk new| read  writ| int   sw |files  inodes|lis act syn tim clo|majpf minpf alloc  free 
  4. 844k  404k| 829M 19.4M 2920M  124M|  0 0.0 0.7|47.5  38.4 |2336  7185 | 4928  12286 | 11   3   0   0   2|   1   620   602   605  
  5. 2128k 1526k| 828M 19.4M 2915M  130M|  0 2.0   0| 111   157 |4588    14k| 4928  12285 | 11   3   0   0   2|  0  1859   995  2278  
  6. 920k 2151k| 826M 19.4M 2917M  129M|  0 2.0   0|52.0   237 |3091  7540 | 4928  12284 | 11   3   0   0   2|   0  4448  2330  2144  
  7. 2124k 1003k| 826M 19.4M 2921M  126M|1.0 1.0   0| 135   106 |4705    14k| 4928  12284 | 11   3   0   0   2|  0   331   865    1  
  8. 2344k 1024k| 826M 19.4M 2924M  122M|1.0 2.0   0| 121   118 |4074    13k| 4928  12284 | 11   3   0   0   2|  0   249   953    1  
  9. 1572k 1624k| 827M 19.4M 2926M  120M|1.0 2.0   0|87.0   190 |3231    11k| 4928  12284 | 11   3   0   0   2|  0    98   530    1  
  10. 916k  788k| 827M 19.4M 2928M  119M|  0 2.0   0|68.0  92.0 |3452  8709 | 4928  12284 | 11   3   0   0   2|   0   128   383    4  
  11. 2452k 1665k| 826M 19.4M 2931M  116M|1.0 1.0   0| 132   197 |4779    14k| 4928  12284 | 11   3   0   0   2|  0   208   822    1  
  12. 1552k 1328k| 827M 19.4M 2933M  114M|  0 2.0   0|97.0   156 |3762  9117 | 4928  12284 | 11   3   0   0   2|  0   133   473    1  
  13. 1192k 2024k| 827M 19.4M 2934M  112M|  0 2.0   0|81.0   239 |4068    11k| 4928  12284 | 11   3   0   0   2|  0   135   414    2  
  14. 2668k  584k| 827M 19.4M 2937M  109M|  0 2.0   0| 148  71.0 |4415    10k| 4928  12284 | 11   3   0   0   2|  0   174   870    4  
  15. 1712k  960k| 827M 19.4M 2940M  106M|  0 2.0   0| 122   113 |4454    14k| 4928  12284 | 11   3   0   0   2|  0   182   616    2 

更詳細(xì)的用法,可以參考dstat(1)手冊(cè)。

責(zé)任編輯:黃丹 來源: 博客
相關(guān)推薦

2010-09-13 15:40:00

2012-08-24 10:47:33

Linux統(tǒng)計(jì)工具

2013-03-30 21:59:13

系統(tǒng)管理員必備工具iftop

2010-05-07 16:35:44

2010-11-16 14:57:13

系統(tǒng)管理員文檔

2010-11-23 09:24:11

2012-08-01 10:33:35

2015-10-28 09:07:34

GUI工具Linux

2012-11-01 11:33:11

IBMdw

2013-12-09 16:15:08

系統(tǒng)管理員WebminLinux服務(wù)

2012-05-21 10:13:12

Linux系統(tǒng)管理

2018-08-01 08:12:34

Linux管理員網(wǎng)絡(luò)管理

2013-02-28 09:06:04

2014-07-31 14:50:40

Linux系統(tǒng)管理員

2010-04-12 09:33:58

系統(tǒng)管理員

2018-08-15 14:00:18

LinuxBash系統(tǒng)管理員

2013-06-26 09:29:30

系統(tǒng)管理員

2013-09-29 09:50:21

系統(tǒng)管理員Ubuntu JujuJuju

2019-03-15 15:47:43

Linux系統(tǒng)管理員編程技能

2010-07-09 12:52:21

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)