On Sun, 14 Sep 2014 00:14:36 +0900, Mitake Hitoshi wrote: > 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. > > Of course the tracepoint added by this patch is very limited, so we > need to add more points for detailed analysis. This patch is something > like demonstration. If this concept is acceptable for the nilfs > community, I'd like to add more tracepoints and prepare analysis > tools. > > Signed-off-by: Hitoshi Mitake <mitake.hito...@lab.ntt.co.jp> > --- > fs/nilfs2/segment.c | 71 > +++++++++++++++++++++++++++++++------------ > fs/nilfs2/segment.h | 3 +- > include/trace/events/nilfs2.h | 50 ++++++++++++++++++++++++++++++ > 3 files changed, 103 insertions(+), 21 deletions(-) > create mode 100644 include/trace/events/nilfs2.h > > v3: undo rename > > v2: correct the email address of author > <snip>
Looks good. I pushed out this patch as "tracepoints" branch of nilfs2.git[1]. If you hope it to be sent to upstream separately at this time, please let me know. (In that case, the following description should be revised to be ready for mainline merge). > Of course the tracepoint added by this patch is very limited, so we > need to add more points for detailed analysis. This patch is something > like demonstration. If this concept is acceptable for the nilfs > community, I'd like to add more tracepoints and prepare analysis > tools. Otherwise, I'll keep it in the tracepoints branch for now. [1] https://github.com/konis/nilfs2.git Thanks, Ryusuke Konishi -- To unsubscribe from this list: send the line "unsubscribe linux-nilfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html