2015-09-12 14 views
51

Xcodeの計測器には、実行された命令数や実行回数など、CPUが提供する低レベルのカウンタ情報を表示するツールCountersがあります。キャッシュ・ミス:計測器を使用しないOS Xのパフォーマンスモニタカウンタ(PMイベント)の記録値

screenshot of Counters tool in Instruments

これは、Linux 2.6.32で導入され、Linuxのシステムコールperf_event_openに似ています。 Linuxでは、私はperf_event_openを使用して、私が興味を持っているコードのセクションの周りでプロファイリングを開始/停止することができます。OS Xに同じタイプの統計を記録したいと思います。結果を自動化された方法で得ることができます。 (私はInstruments GUIを使用してデータを分析したくありません)

これを可能にするAPIはありますか(例:dtraceなどを使用していますか?いくつかの検索から、AppleProfileFamily.frameworkが必要なフックを持っているように聞こえるかもしれませんが、リンクする方法や使用する方法は不明です。

+1

一つの電位に基づいて独自のコードをビルドすることができます。

場合は、あなたのデバイス上でコンパイルこのソースは、ジャスト実行しますソリューションは、この情報を公開するIntel PMC kext(http://www.campos.cc/blog/2014/03/15/using-intel-performance-monitor-on-mac-os-x)を使用することです。プロセスごとの情報を提供するようには見えませんが、私にはあまり役に立たない合計だけです。 –

+4

アップルのエンジニア、Kris Markel氏はTwitterで次のように述べています。「現時点では利用できるものはありません。bugreport.apple.comを通じて強化要求を提出してください。 (https://twitter.com/existopher/status/644943616889126912) –

+0

[PAPIはOS Xでコンパイルできます](http://icl.cs.utk.edu/papi/forum/viewtopic.php?f=2&t= 1274)。残念ながら、ハードウェアカウンタはこのプラットフォームではサポートされておらず、ソフトウェアイベントのみがサポートされています。これはずっと役に立たない。 – Sjlver

答えて

1

GNU/Linuxでは、IntelのPCMを使用してCPU使用率を監視しています。私はこれがOSX上でうまく動作するかどうかはわかりませんが、ソースコードにMacMSRDriverディレクトリが含まれていることがわかっている限り、私はOSXデバイスを持っていない、とにかくそれをテストしないでください。

pcm.x -r -- your_program your_program_parameter

をしたり、高度なプロファイリングをしたい場合は、代わりにpcm-core.xを使用するか、pcm-core.cpp

+0

PMC kextがプロセスごとの情報を提供していないとの私の元の質問へのコメントに注目しました。私が何かを逃しているかどうか教えてください。 –

+0

私はPMC kextを使用しません。 Btw、ここではPMCについては言及しませんが、インテルのPCMについては言及しません。マニュアルは、https://software.intel.com/en-us/articles/intel-performance-counter-monitorで参照できます。 –

関連する問題