成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Linux系統管理員應該了解的一些I/O統計工具

系統 Linux
作為一個Linux系統管理員,統計各類IO是一項必不可少的工作。本文介紹了一些Linux系統管理員應該了解的一些I/O統計工具,希望對您的工作有所幫助。

作為一個Linux系統管理員,統計各類IO是一項必不可少的工作。其統計工具中iostat顯然又是最重要的一個統計手段。但是這里iostat不是本文的重點,因為這個工具的使用在網絡上已經有大量的教程,可以供大家參考。這里主要是想介紹一些其他統計工具以來滿足不同的需求。

iostat

iostat的功能異常強大,輸出項也特別多,比如下面這個例子:

  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 

其各項的含義分別是:

  • rrqm/s: 每秒進行 merge 的讀操作數目.即 delta(rmerge)/s
  • wrqm/s: 每秒進行 merge 的寫操作數目.即 delta(wmerge)/s
  • r/s: 每秒完成的讀 I/O 設備次數.即 delta(rio)/s
  • w/s: 每秒完成的寫 I/O 設備次數.即 delta(wio)/s
  • rsec/s: 每秒讀扇區數.即 delta(rsect)/s
  • wsec/s: 每秒寫扇區數.即 delta(wsect)/s
  • rkB/s: 每秒讀K字節數.是 rsect/s 的一半,因為每扇區大小為512字節.(需要計算)
  • wkB/s: 每秒寫K字節數.是 wsect/s 的一半.(需要計算)
  • avgrq-sz: 平均每次設備I/O操作的數據大小 (扇區).delta(rsect+wsect)/delta(rio+wio)
  • avgqu-sz: 平均I/O隊列長度.即 delta(aveq)/s/1000 (因為aveq的單位為毫秒).
  • await: 平均每次設備I/O操作的等待時間 (毫秒).即 delta(ruse+wuse)/delta(rio+wio)
  • svctm: 平均每次設備I/O操作的服務時間 (毫秒).即 delta(use)/delta(rio+wio)
  • %util: 一秒中有百分之多少的時間用于 I/O 操作,或者說一秒中有多少時間 I/O 隊列是非空的.即 delta(use)/s/1000 (因為use的單位為毫秒)

如果 %util 接近 100%,說明產生的I/O請求太多,I/O系統已經滿負荷,該磁盤可能存在瓶頸。

idle小于70% IO壓力就較大了,一般讀取速度有較多的wait。

同時可以結合vmstat查看查看b參數(等待資源的進程數)和wa參數(IO等待所占用的CPU時間的百分比,高過30%時IO壓力高),另外 await 的參數也要多和 svctm 來參考。差的過高就一定有 IO 的問題。

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

svctm 一般要小于 await (因為同時等待的請求的等待時間被重復計算了),svctm 的大小一般和磁盤性能有關,CPU/內存的負荷也會對其有影響,請求過多也會間接導致 svctm 的增加.await 的大小一般取決于服務時間(svctm) 以及 I/O 隊列的長度和 I/O 請求的發出模式.如果 svctm 比較接近 await,說明 I/O 幾乎沒有等待時間;如果 await 遠大于 svctm,說明 I/O 隊列太長,應用得到的響應時間變慢,如果響應時間超過了用戶可以容許的范圍,這時可以考慮更換更快的磁盤,調整內核 elevator 算法,優化應用,或者升級 CPU。

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

有時間的話,我會單獨寫幾個帖子來說說iostat。

iodump

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

首先下載這個工具:

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

然后打開有關I/O內核消息的開關:

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

上述開關打開后,內核會記錄下每一個I/O操作的消息。我們只需要定時獲取并分析就好了,比如下面這樣:

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

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

  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),每塊的大小取決于創建文件系統時指定的塊大小。比如我這個里的sda7的block大小是1KB。

iotop

iotop是一個Python編寫的工具,有類似top工具的UI,包括一些參數也和top類似。不過它對系統有一些要求,分別是:

  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包的系統,可以直接下載編譯好的二進制包(here)或者二進制源代碼包(here)

如果是Debian/Ubuntu系統,直接使用:

  1. sudo apt-get install iotop 

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

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

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

  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是另外一個統計每一個進程I/O的工具,使用C語言編寫,理論上應該比上述兩個重狙效率都要高。

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

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

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

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

下面是一個使用例子:

  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 

上述輸出的各項含義是:

  • pid 進程ID
  • rchar 將要從磁盤讀取的字節數
  • wchar 已經寫入或應該要寫入磁盤的字節數
  • syscr 讀I/O數
  • syscw 寫I/O數
  • rbytes 真正從磁盤讀取的字節數
  • wbytes 真正寫入到磁盤的字節數
  • cwbytes 因為清空頁面緩存而導致沒有發生操作的字節數
  • command 執行的命令

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

這些參數的使用和top類似。

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

dstat

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

dstat能夠清晰顯示每列的信息,特別是單位及大小很明確,不會在單位換算上犯迷糊和失誤。最重要的是,因為它是基于模塊化設計,因此我們可以很容易的寫一個插件來收集我們需要的統計信息。

另外,dstat的輸出還可以導出為CSV格式文件,從而可以在電子表格工具里分方便的生成統計圖形。

目前dstat的插件已經相當多了,這是我機器上目前的輸出:

  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 

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

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 

指定需要顯示的列,并同時將結果導出到文件:

  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 

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

責任編輯:黃丹 來源: 博客
相關推薦

2010-09-13 15:40:00

2012-08-24 10:47:33

Linux統計工具

2013-03-30 21:59:13

系統管理員必備工具iftop

2010-05-07 16:35:44

2010-11-16 14:57:13

系統管理員文檔

2010-11-23 09:24:11

2015-10-28 09:07:34

GUI工具Linux

2012-08-01 10:33:35

2012-11-01 11:33:11

IBMdw

2013-12-09 16:15:08

系統管理員WebminLinux服務

2012-05-21 10:13:12

Linux系統管理

2018-08-01 08:12:34

Linux管理員網絡管理

2018-08-15 14:00:18

LinuxBash系統管理員

2013-06-26 09:29:30

系統管理員

2013-09-29 09:50:21

系統管理員Ubuntu JujuJuju

2010-04-12 09:33:58

系統管理員

2013-02-28 09:06:04

2014-07-31 14:50:40

Linux系統管理員

2010-06-10 14:23:01

2014-08-14 09:47:43

Linux管理員
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品蜜桃一区二区三区 | 91精品国产91久久综合桃花 | 国产超碰人人爽人人做人人爱 | 99视频在线免费观看 | 在线三级网址 | 99免费在线视频 | av中文在线| 成年人在线观看 | 在线一区| 性色av一区二区三区 | 精品国产高清一区二区三区 | 亚洲 欧美 日韩 在线 | 欧美一区免费 | 激情欧美日韩一区二区 | 成人在线国产 | 久久国产精品99久久久大便 | 午夜视频在线观看一区二区 | 91精品国产一区 | www.日本精品 | 视频在线日韩 | 亚洲人成人一区二区在线观看 | 91精品久久久久久久久中文字幕 | av中文字幕在线观看 | 欧美一区二区三区在线 | 请别相信他免费喜剧电影在线观看 | 一区二区三区免费 | 美女久久 | 免费成人在线网站 | 亚洲一区在线播放 | 精品一区二区视频 | 欧美一级大片免费观看 | 欧美精品tv | 日韩久久成人 | 亚洲 欧美 日韩 在线 | 欧美一区二区三区在线播放 | 欧美日产国产成人免费图片 | 在线观看a视频 | a在线视频观看 | 亚洲成人久久久 | 亚洲人成人一区二区在线观看 | 久久久久久网站 |