大佬教程收集整理的这篇文章主要介绍了为什么Linux性能计数器中的指令数不确定,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
$(perf stat -c -- sleep 1 2>&1 && perf stat -c -- sleep 1 2>&1) |grep instructions 669218 instructions # 0,61 insns per cycle 682286 instructions # 0,58 insns per cycle
1)这种非决定论的来源是什么?这是否源于cpu中的低级分支预测和其他引擎.
1)非确定性是由睡眠1命令的变化引起的,而不是来自分支预测或其他微架构特征.
2)如果cpu支持,您可以使用硬件偶数计数器找到获取的指令数.但是,这将比退役指令的数量变化更多(这是perf通常报告的指令).
细节:
如果您想要执行确定数量的指令,则sleep命令不是一个好的测试用例.它将执行非确定数量的指令,因为内核正在做的事情会有一些细微的变化.
您可以使用以下指令指定是收集用户模式还是内核模式指令计数:u表示用户模式或指令:k表示内核模式.两次运行:
perf stat -e instructions:k,instructions:u,instructions sleep 1
我得到以下结果:
PerfoRMANce counter stats for 'sleep 1': 373,044 instructions:k # 0.00 insns per cycle 199,795 instructions:u # 0.00 insns per cycle 572,839 instructions # 0.00 insns per cycle 1.001018153 seconds time elapsed
和
PerfoRMANce counter stats for 'sleep 1': 379,722 instructions:k # 0.00 insns per cycle 199,970 instructions:u # 0.00 insns per cycle 579,519 instructions # 0.00 insns per cycle 1.000986201 seconds time elapsed
以上是大佬教程为你收集整理的为什么Linux性能计数器中的指令数不确定全部内容,希望文章能够帮你解决为什么Linux性能计数器中的指令数不确定所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。