最初に、でイベントのリストを取得する必要がありますperf list
。私はAndroidの経験がないので、できれば、このリストの最も興味深い部分を示してください。
1)-c
サンプル間のイベントのカウントが取得されます。(count番目のイベントのみがサンプリングされます。1はすべてをサンプリングし、100000は100000番目のイベントごとにサンプリングします)たとえば、cpuティック(TSCのようなsmth)のイベントがある場合、countはティック数です。サンプリングを1ミリ秒以内に実行するように設定します。ティックカウントを取得するには、次の式を使用しますCPU_Freq_in_MHz * 1000
。これは、ミリ秒ごとにサンプルを取得するイベントの数です。たとえば、800MHzCPUおよびティックイベントの使用の場合-c 800000
です。
他のイベントについては、どのくらいの頻度で行うかを見積もる必要があります。わからない場合は、ダニのカウント値から始めて、十分なサンプルが収集されているかどうかを確認できます。そうでない場合は、カウントを10回減らして、もう一度確認してください。ティックはCPUで最も頻繁に発生するイベントの1つであるため、ティックのカウントは安全です。
2)「-e」または「--event =」オプションで選択されたPMUによって、良好なレートは異なります。イベントがまれで、1秒あたり1000を超えない場合は、各イベントをサンプリングすることもできます。イベントがキャッシュミスのようなものである場合、適切な値はサンプリングされたコードに依存するため、いくつかのバリエーションを試す必要があります。サンプリングレートが低すぎると、サンプル数が少なくなり、結果の信頼性が低くなり、ノイズが多くなります。ただし、レートが高すぎると、すべてのPMUがトレースされるプログラムに影響を与える可能性があるため、結果にもノイズが発生します。平均して1秒あたり1000イベント以下を使用することをお勧めします。