Linux可以比较每线程性能吗?

时间:2014-07-09 08:53:30

标签: performance perf

我知道perf可以使用perf stat -p tid/pidperf top -p tid/pid来分析单个进度或单线程。

但是我想分析每个线程的进度,并比较事件,获取高消耗的线程,然后进行优化。可以这样做吗?如果没有,哪些工具可以做到这一点?

感谢。

2 个答案:

答案 0 :(得分:1)

建议将补丁添加到perf stat的--per-thread选项(并且使用间隔模式-I 1000,可以每秒查看每个线程的当前计数器):https://lwn.net/Articles/649001/ “perf stat:Introduce --per-thread option”来自:Jiri Olsa,日期:星期二,2015年6月23日

  

添加显示每个线程的统计数据的可能性。

     

允许以下命令和输出:

     

$ perf stat -e cycles,instructions --per-thread -p 30190,30242 ^ C.   流程ID'30190,30242'的性能计数器统计信息:

           cat-30190                     0      cycles
           yes-30242         3,842,525,421      cycles
           cat-30190                     0      instructions
           yes-30242        10,370,817,010      instructions

     1.143155657 seconds time elapsed
     

也可以在间隔模式下工作:

     

$ perf stat -e cycles,instructions --per-thread -p 30190,30242 -I   1000

#           time             comm-pid                  counts   unit events
   1.000073435              cat-30190                89,058      cycles
   1.000073435              yes-30242         3,360,786,902      cycles                     (100.00%)
   1.000073435              cat-30190                14,066      instructions
   1.000073435              yes-30242         9,069,937,462      instructions
   2.000204830              cat-30190                     0      cycles
   2.000204830              yes-30242         3,351,667,626      cycles
   2.000204830              cat-30190                     0      instructions
   2.000204830              yes-30242         9,045,796,885      instructions   
  ^C
   2.771286639              cat-30190                     0      cycles
   2.771286639              yes-30242         2,593,884,166      cycles
   2.771286639              cat-30190                     0      instructions
   2.771286639              yes-30242         7,001,171,191      instructions
     

此处可用:
  混帐://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
  PERF / per_thread

答案 1 :(得分:-1)