首页 > 系统运维 > blktrace 深度了解linux系统的IO运作
您的足迹
  • 你没有浏览过任何文章或者你没有开启cookies。

blktrace 深度了解linux系统的IO运作

我们在Linux上总是要保存数据的,数据要么保存在文件系统里(如ext3),要么就在裸设备里面。我们在使用这些数据的时候都是通过文件这个抽象来访问的,操作系统会把我们需要的数据给我们,我们通常无需和块设备打交道。

从下图我们可以很清楚的看到:

linux_io_subsystem_architecture

我们会发现IO是个层次很深的子系统,有很复杂的数据流动线路。

至于操作系统如何去存储和获取这些数据对我们完全是黑盒子的,这通常不是问题。但是如果我们的IO很密集,我们就需要搞清楚IO具体是如何运作的,免的滥用IO和导致设计问题。

这时候你就需要blktrace这样的工具。

blktrace is a block layer IO tracing mechanism which provides detailed information about request queue operations up to user space.

它的作者Jens Axboe, 是内核IO模块的维护者,目前就职于FusionIO, 是个很nice的家伙,同时他还是著名IO评测工具fio的作者。

相关的文档:
users guide: http://pdfedit.petricek.net/bt/file_download.php?file_id=17&type=bug

HP的人写的指南:http://www.gelato.org/pdf/apr2006/gelato_ICE06apr_blktrace_brunelle_hp.pdf

CU上的小伙子写的: http://linux.chinaunix.net/bbs/viewthread.php?tid=1115851&extra=&ordertype=2

目前blktrace在大部分的Linux发行版都支持的,我们可以轻松的安装使用:

[root@puppet ~]# blktrace /dev/sda1 -o – | blkparse -i –

,2    0        1     0.000000000   570  A   W 123896 + 8 <- (253,0) 123512
  8,0    0        2     0.000000829   570  A   W 332741 + 8 <- (8,2) 123896
  8,1    0        3     0.000000952   570  Q   W 332741 + 8 [kjournald]
  8,1    0        4     0.000020158   570  G   W 332741 + 8 [kjournald]
  8,1    0        5     0.000023450   570  P   N [kjournald]
  8,1    0        6     0.000030783   570  I   W 332741 + 8 [kjournald]
  8,2    0        7     0.000036032   570  A   W 123904 + 8 <- (253,0) 123520
  8,0    0        8     0.000036161   570  A   W 332749 + 8 <- (8,2) 123904
  8,1    0        9     0.000036260   570  Q   W 332749 + 8 [kjournald]
  8,1    0       10     0.000036909   570  M   W 332749 + 8 [kjournald]
  8,2    0       11     0.000039605   570  A   W 123912 + 8 <- (253,0) 123528
  8,0    0       12     0.000039711   570  A   W 332757 + 8 <- (8,2) 123912
  8,1    0       13     0.000039801   570  Q   W 332757 + 8 [kjournald]
  8,1    0       14     0.000039975   570  M   W 332757 + 8 [kjournald]
  8,2    0       15     0.000041137   570  A   W 123920 + 8 <- (253,0) 123536
  8,0    0       16     0.000041239   570  A   W 332765 + 8 <- (8,2) 123920
  8,1    0       17     0.000041329   570  Q   W 332765 + 8 [kjournald]
  8,1    0       18     0.000041488   570  M   W 332765 + 8 [kjournald]
  8,2    0       19     0.000042777   570  A   W 123928 + 8 <- (253,0) 123544
  8,0    0       20     0.000042876   570  A   W 332773 + 8 <- (8,2) 123928
  8,1    0       21     0.000042966   570  Q   W 332773 + 8 [kjournald]
  8,1    0       22     0.000043125   570  M   W 332773 + 8 [kjournald]
  8,2    0       23     0.000044389   570  A   W 123936 + 8 <- (253,0) 123552
  8,0    0       24     0.000044488   570  A   W 332781 + 8 <- (8,2) 123936
  8,1    0       25     0.000044578   570  Q   W 332781 + 8 [kjournald]
  8,1    0       26     0.000044732   570  M   W 332781 + 8 [kjournald]
  8,2    0       27     0.000046089   570  A   W 123944 + 8 <- (253,0) 123560
  8,0    0       28     0.000046191   570  A   W 332789 + 8 <- (8,2) 123944
  8,1    0       29     0.000046278   570  Q   W 332789 + 8 [kjournald]
  8,1    0       30     0.000046437   570  M   W 332789 + 8 [kjournald]
  8,2    0       31     0.000048056   570  A   W 123952 + 8 <- (253,0) 123568
  8,0    0       32     0.000048158   570  A   W 332797 + 8 <- (8,2) 123952
  8,1    0       33     0.000048245   570  Q   W 332797 + 8 [kjournald]
  8,1    0       34     0.000048392   570  M   W 332797 + 8 [kjournald]
  8,2    0       35     0.000061455   570  A   W 123960 + 8 <- (253,0) 123576
  8,0    0       36     0.000061578   570  A   W 332805 + 8 <- (8,2) 123960
  8,1    0       37     0.000061671   570  Q   W 332805 + 8 [kjournald]
  8,1    0       38     0.000062061   570  M   W 332805 + 8 [kjournald]
  8,2    0       39     0.000063644   570  A   W 123968 + 8 <- (253,0) 123584
  8,0    0       40     0.000063752   570  A   W 332813 + 8 <- (8,2) 123968
  8,1    0       41     0.000063842   570  Q   W 332813 + 8 [kjournald]
  8,1    0       42     0.000064022   570  M   W 332813 + 8 [kjournald]
  8,1    0       43     0.000079556   570  D   W 332741 + 80 [kjournald]
  8,1    0       44     0.000688476     0  C   W 332741 + 80 [0]
  8,2    0       45     0.000735084   570  A   W 123976 + 8 <- (253,0) 123592
  8,0    0       46     0.000735300   570  A   W 332821 + 8 <- (8,2) 123976
  8,1    0       47     0.000735426   570  Q   W 332821 + 8 [kjournald]
  8,1    0       48     0.000736577   570  G   W 332821 + 8 [kjournald]
  8,1    0       49     0.000737291   570  P   N [kjournald]
  8,1    0       50     0.000737690   570  I   W 332821 + 8 [kjournald]
  8,1    0       51     0.000740015   570  D   W 332821 + 8 [kjournald]
  8,1    0       52     0.000962947     0  C   W 332821 + 8 [0]
  8,2    0       53     3.171309913   273  A   W 96469648 + 8 <- (253,0) 96469264
  8,0    0       54     3.171310720   273  A   W 96678493 + 8 <- (8,2) 96469648
  8,1    0       55     3.171310844   273  Q   W 96678493 + 8 [pdflush]
  8,1    0       56     3.171318225   273  G   W 96678493 + 8 [pdflush]
  8,1    0       57     3.171321441   273  P   N [pdflush]
  8,1    0       58     3.171323513   273  I   W 96678493 + 8 [pdflush]
  8,2    0       59     3.171329609   273  A   W 96469664 + 8 <- (253,0) 96469280
  8,0    0       60     3.171329723   273  A   W 96678509 + 8 <- (8,2) 96469664
  8,1    0       61     3.171329813   273  Q   W 96678509 + 8 [pdflush]
  8,1    0       62     3.171330876   273  G   W 96678509 + 8 [pdflush]
  8,1    0       63     3.171331152   273  I   W 96678509 + 8 [pdflush]
  8,2    0       64     3.171334633   273  A   W 105120160 + 8 <- (253,0) 105119776
  8,0    0       65     3.171334738   273  A   W 105329005 + 8 <- (8,2) 105120160
  8,1    0       66     3.171334825   273  Q   W 105329005 + 8 [pdflush]
  8,1    0       67     3.171335543   273  G   W 105329005 + 8 [pdflush]
  8,1    0       68     3.171335735   273  I   W 105329005 + 8 [pdflush]
  8,2    0       69     3.171338825   273  A   W 108528016 + 8 <- (253,0) 108527632
  8,0    0       70     3.171338930   273  A   W 108736861 + 8 <- (8,2) 108528016
  8,1    0       71     3.171339017   273  Q   W 108736861 + 8 [pdflush]
  8,1    0       72     3.171339849   273  G   W 108736861 + 8 [pdflush]
  8,1    0       73     3.171362356   273  I   W 108736861 + 8 [pdflush]
  8,1    0       74     3.171382163   273  D   W 96678493 + 8 [pdflush]
  8,1    0       75     3.171515998   273  D   W 96678509 + 8 [pdflush]
  8,1    0       76     3.171540937   273  D   W 105329005 + 8 [pdflush]
  8,1    0       77     3.171564147   273  D   W 108736861 + 8 [pdflush]
  8,2    0       78     3.171596077   273  A   W 108528024 + 8 <- (253,0) 108527640
  8,0    0       79     3.171596227   273  A   W 108736869 + 8 <- (8,2) 108528024
  8,1    0       80     3.171641848   273  C   W 96678493 + 8 [0]
  8,1    0       81     3.171661087   273  C   W 96678509 + 8 [0]
  8,1    0       82     3.171662946   273  C   W 105329005 + 8 [0]
  8,1    0       83     3.171665187   273  C   W 108736861 + 8 [0]
  8,1    0       84     3.171667229   273  Q   W 108736869 + 8 [pdflush]
  8,1    0       85     3.171668264   273  G   W 108736869 + 8 [pdflush]
  8,1    0       86     3.171668883   273  P   N [pdflush]
  8,1    0       87     3.171669127   273  I   W 108736869 + 8 [pdflush]
  8,2    0       88     3.171671895   273  A   W 108528088 + 8 <- (253,0) 108527704
  8,0    0       89     3.171672021   273  A   W 108736933 + 8 <- (8,2) 108528088
  8,1    0       90     3.171672108   273  Q   W 108736933 + 8 [pdflush]
  8,1    0       91     3.171672610   273  G   W 108736933 + 8 [pdflush]
  8,1    0       92     3.171672832   273  I   W 108736933 + 8 [pdflush]
  8,2    0       93     3.171674553   273  A   W 108528096 + 8 <- (253,0) 108527712
  8,0    0       94     3.171674655   273  A   W 108736941 + 8 <- (8,2) 108528096
  8,1    0       95     3.171674745   273  Q   W 108736941 + 8 [pdflush]
  8,1    0       96     3.171675595   273  M   W 108736941 + 8 [pdflush]
  8,2    0       97     3.171677715   273  A   W 108528104 + 8 <- (253,0) 108527720
  8,0    0       98     3.171677817   273  A   W 108736949 + 8 <- (8,2) 108528104
  8,1    0       99     3.171677907   273  Q   W 108736949 + 8 [pdflush]
  8,1    0      100     3.171678111   273  M   W 108736949 + 8 [pdflush]
  8,2    0      101     3.171680147   273  A   W 139723208 + 8 <- (253,0) 139722824
  8,0    0      102     3.171680249   273  A   W 139932053 + 8 <- (8,2) 139723208
  8,1    0      103     3.171680336   273  Q   W 139932053 + 8 [pdflush]
  8,1    0      104     3.171680805   273  G   W 139932053 + 8 [pdflush]
  8,1    0      105     3.171681078   273  I   W 139932053 + 8 [pdflush]
  8,2    0      106     3.171683910   273  A   W 320343992 + 8 <- (253,0) 320343608
  8,0    0      107     3.171684015   273  A   W 320552837 + 8 <- (8,2) 320343992
  8,1    0      108     3.171684105   273  Q   W 320552837 + 8 [pdflush]
  8,1    0      109     3.171684510   273  G   W 320552837 + 8 [pdflush]
  8,1    0      110     3.171684715   273  I   W 320552837 + 8 [pdflush]
  8,1    0      111     3.171685976   273  D   W 108736869 + 8 [pdflush]
  8,1    0      112     3.171710008   273  D   W 108736933 + 24 [pdflush]
  8,1    0      113     3.171740287   273  D   W 139932053 + 8 [pdflush]
  8,1    0      114     3.171771241   273  C   W 108736869 + 8 [0]
  8,1    0      115     3.171775142   273  D   W 320552837 + 8 [pdflush]
  8,1    0      116     3.171827444   273  C   W 108736933 + 24 [0]
  8,1    0      117     3.171838056   273  C   W 139932053 + 8 [0]
  8,2    0      118     3.171843197   273  A   W 320344608 + 8 <- (253,0) 320344224
  8,0    0      119     3.171843326   273  A   W 320553453 + 8 <- (8,2) 320344608
  8,1    0      120     3.171843423   273  Q   W 320553453 + 8 [pdflush]
  8,1    0      121     3.171844263   273  G   W 320553453 + 8 [pdflush]
  8,1    0      122     3.171844825   273  P   N [pdflush]
  8,1    0      123     3.171845065   273  I   W 320553453 + 8 [pdflush]
  8,1    0      124     3.171877443     0  C   W 320552837 + 8 [0]
  8,1    0      125     3.171882602     0  D   W 320553453 + 8 [swapper]
  8,1    0      126     3.171969236     0  C   W 320553453 + 8 [0]
CPU0 (8,1):
 Reads Queued:           0,        0KiB  Writes Queued:          22,       88KiB
 Read Dispatches:        0,        0KiB  Write Dispatches:       11,       88KiB
 Reads Requeued:         0               Writes Requeued:         0
 Reads Completed:        0,        0KiB  Writes Completed:       11,       88KiB
 Read Merges:            0,        0KiB  Write Merges:           11,       44KiB
 Read depth:             0               Write depth:             4
 IO unplugs:             0               Timer unplugs:           0

Throughput (R/W): 0KiB/s / 27KiB/s
Events (8,1): 126 entries
Skips: 0 forward (0 -   0.0%)

利用这些信息我们可以很清楚的知道我们IO设备在做什么,花了多少时间,透过它了解我们系统的运作。如何解读这些信息我们可以看手册有详细的解释:
$ man blkparse

同时如果你觉得这些信息太原始,类似btt, seekwatcher这样的工具在blktrace的信息的基础上更深入的挖掘了系统的行为,使用起来也更简单。

我们在实际工作的过程中用blktrace定位了很多问题,比如fsync的延时问题和IO调度器的问题,确实是很实用的一个工具。

转自:http://blog.yufeng.info/archives/751


相关博文

  1. 还没有评论
评论提交中, 请稍候...

留言

可以使用的标签: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>
Trackbacks & Pingbacks ( 0 )
  1. 还没有 trackbacks
Feed