查出来的三个值:
INST_RETIRED.ANY : 表示指令的有效执行的计数
CPU_CLK_UNHALTED.CORE: 表示非停机状态花费的机器周期
CPI = CPU_CLK_UNHALTED.CORE / INST_RETIRE.ANY, 表示一段代码(函数,模块)平均每条指令花费的机器周期.自然是愈小愈好.
所谓Hot Spot就是:CPU_CLK_UNHALTED.CORE大的函数,且CPI也大的函数
一般来说,CPI = CPU_CLK_UNHALTED.CORE / INST_RETIRE.ANY, 表示一段代码(函数,模块)平均每条指令花费的机器周期.自然是愈小愈好. 这样你就可以找到那些CPU_CLK_UNHALTED.CORE大的函数,且CPI也大的函数,去关注(通常称之为热点函数).
第二个层次,你需要用其他的事件计数器去了解-CPU.UNHALTED.CORE的值是怎么来的?下面给出一个公式,下次具体展开。
CPU_CLK_UNHALTED.CORE = Resource_Stalls + RS_UOPS_DISPATCHED + UOPS_RETIRED