微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

android – 使用’perf record’设置样本分析的速率

据我了解,Linux性能计数器子系统使用 perf record命令来执行cpu和硬件计数器的基于样本的分析(例如缓存未命中).

>如何指定perf记录的采样率?我从手册页中看到的最接近的是一个有点神秘的选项“-c,– count =要抽样的事件期间”,但是不清楚这是指时段为持续时间还是反时速率时段(如果是后者,它预期的单位).
>在移动Android设备上为应用程序采样的“良好”采样率是多少?什么比率太低而无用,什么比率过高?

解决方法

首先,您需要获取具有perf列表的事件列表.我没有使用android的经验,所以,如果可以,请展示此列表中最有趣的部分.

1)-c是将采样之间的事件计数. (仅对第一个事件进行采样,1个采样全部,100000个采样每第100000个事件)例如.如果有一个cpu tick事件(像TSC那样smth),那么count是ticks的数量,我建议你设置的采样时间不要超过1毫秒.要获得滴答计数,请使用公式:cpu_Freq_in_MHz * 1000.这是每毫秒获取样本的事件计数,例如对于800 MHz cpu和tick事件使用-c 800000.

对于其他事件,您应该估计,他们会多久做一次.如果您不知道,您可以从计数值开始计算,然后检查是否收集了足够的样本.如果没有,请将计数降低十次并再次检查.刻度的计数将是安全的,因为刻度线是任何cpu中最常见的事件之一.

2)各种PMU的良好速率不同,使用“-e”或“–event =”选项选择.如果事件很少,每秒不超过1000,您甚至可以对每个事件进行采样.如果事件就像缓存未命中,您应该尝试几种变体,因为良好的值取决于采样的代码.采样率太低会使您获得少量样本,结果将不可靠且噪声很大.但是对于太高的速率,结果也会被噪声化,因为每个PMU都会影响跟踪的程序.我建议你平均每秒使用不超过1000个事件.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐