On Sun, Sep 14, 2014 at 1:09 PM, Ryusuke Konishi <konishi.ryusuke@xxxxxxxxxxxxx> wrote: > 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.hitoshi@xxxxxxxxxxxxx> >> --- >> 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. Thanks a lot for your review and pushing. The change for tracepoints doesn't need to be sent to upstream immediately. I'll enhance the feature for a while on the tracepoints branch. Thanks, Hitoshi > > [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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html