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个事件.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...