This patch set add a new command 'graph stat', this is useful to get how much time each function spends in a top style view. For a simple glance, we can see that our event_loop is doing too much. $ collie trace graph stat Function Name | Time(ms) -------------------------------------------------- eventfd_xread | 110817.996257 do_process_work | 87415.051934 do_push_object | 84434.906931 push_cache_object | 84426.040582 gateway_create_and_write_obj | 82382.884469 exec_local_req | 82038.293182 gateway_forward_request | 81968.317720 event_loop | 48661.499542 do_event_loop | 48650.993934 xpwrite | 38091.275768 sheep_do_op_work | 36608.988329 peer_create_and_write_obj | 36608.802587 default_create_and_write | 36607.231493 object_cache_push | 28783.994126 do_background_push | 27332.938972 local_release_vdi | 3455.208848 object_cache_flush_vdi | 3452.805846 read_cache_object_noupdate | 2309.550495 ... Liu Yuan (5): collie: ranme SUBCMD_FLAG_XXX as CMD_XXX collie/trace: move trace_cat to graph subcommand util: add list_sort() collie/trace: add graph stat function collie/trace: use macro for the width of thread name collie/cluster.c | 12 ++-- collie/collie.c | 4 +- collie/collie.h | 4 +- collie/common.c | 5 +- collie/node.c | 16 ++--- collie/trace.c | 173 ++++++++++++++++++++++++++++++++++++++++++++++----- collie/vdi.c | 36 +++++------ include/list.h | 3 + include/sheep.h | 4 +- lib/util.c | 137 ++++++++++++++++++++++++++++++++++++++++ sheep/trace/graph.c | 1 + 11 files changed, 337 insertions(+), 58 deletions(-) -- 1.7.9.5 |