Skip to content
  • Hitoshi Mitake's avatar
    nilfs2: add a tracepoint for tracking stage transition of segment construction · 58497703
    Hitoshi Mitake authored
    This patch adds a tracepoint for tracking stage transition of block
    collection in segment construction.  With the tracepoint, we can analysis
    the behavior of segment construction in depth.  It would be useful for
    bottleneck detection and debugging, etc.
    
    The tracepoint is created with the standard trace API of linux (like ext3,
    ext4, f2fs and btrfs).  So we can analysis with existing tools easily.  Of
    course, more detailed analysis will be possible if we can create nilfs
    specific analysis tools.
    
    Below is an example of event dump with Brendan Gregg's perf-tools
    (https://github.com/brendangregg/perf-tools
    
    ).  Time consumption between
    each stage can be obtained.
    
    $ sudo bin/tpoint nilfs2:nilfs2_collection_stage_transition
    Tracing nilfs2:nilfs2_collection_stage_transition. Ctrl-C to end.
            segctord-14875 [003] ...1 28311.067794: nilfs2_collection_stage_transition: sci = ffff8800ce6de000 stage = ST_INIT
            segctord-14875 [003] ...1 28311.068139: nilfs2_collection_stage_transition: sci = ffff8800ce6de000 stage = ST_GC
            segctord-14875 [003] ...1 28311.068139: nilfs2_collection_stage_transition: sci = ffff8800ce6de000 stage = ST_FILE
            segctord-14875 [003] ...1 28311.068486: nilfs2_collection_stage_transition: sci = ffff8800ce6de000 stage = ST_IFILE
            segctord-14875 [003] ...1 28311.068540: nilfs2_collection_stage_transition: sci = ffff8800ce6de000 stage = ST_CPFILE
            segctord-14875 [003] ...1 28311.068561: nilfs2_collection_stage_transition: sci = ffff8800ce6de000 stage = ST_SUFILE
            segctord-14875 [003] ...1 28311.068565: nilfs2_collection_stage_transition: sci = ffff8800ce6de000 stage = ST_DAT
            segctord-14875 [003] ...1 28311.068573: nilfs2_collection_stage_transition: sci = ffff8800ce6de000 stage = ST_SR
            segctord-14875 [003] ...1 28311.068574: nilfs2_collection_stage_transition: sci = ffff8800ce6de000 stage = ST_DONE
    
    For capturing transition correctly, this patch adds wrappers for the
    member scnt of nilfs_cstage.  With this change, every transition of the
    stage can produce trace event in a correct manner.
    
    Signed-off-by: default avatarHitoshi Mitake <mitake.hitoshi@lab.ntt.co.jp>
    Signed-off-by: default avatarRyusuke Konishi <konishi.ryusuke@lab.ntt.co.jp>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    58497703