クイックスタート |貢献する
このプロジェクトは、Linux perf イベント API のライブラリを保持します。その中心には、そのまま使用できるperf_event_open (2)
システムコールの実装があります。
このライブラリには、API を安定して使用するために必要ないくつかのユーティリティも含まれています。このユーティリティは、エラー処理、検証のサポートなどを提供します。
このライブラリの焦点は、測定中にオーバーヘッドを発生させない高精度の結果です。つまり、測定のセットアップにはコストがかかる可能性がありますが、測定の実行には、このライブラリによって追加されるオーバーヘッドは不要です。これには、UX を犠牲にして、可能な限り正確な結果を達成し、可能な限り柔軟になるという大きな利点が伴います。
プロジェクトをビルドするには、まずlibcap
をインストールします。
sudo apt install libcap-dev
sudo yum install libcap-devel
sudo zapper install libcap-devel
次に、プロジェクトをビルドするだけです。
make build
サンプルは、 examples
ディレクトリにあり、 build/examples
ディレクトリに出力されます。
./build/examples/full
クイックスタート
特徴
ドキュメント
貢献する
CAP_PERFMON
) Linux で利用できるプロファイリング ツールは数多くあります。 Valgrind (および Callgrind) などのツールは、メモリとコールスタックのパフォーマンス分析を実行する優れた正確な方法です。ただし、ネイティブ ハードウェアを測定しないため、CPU サイクルや命令などの値については簡略化された測定値が生成されます。 gprof、prof、gperftools などの他のツールはハードウェアに非常に近いものですが、カーネル イベントやアイドル イベントの測定をサポートしていません。 SUPERCOP、Papi などで使用される命令とサイクルを測定する他の方法は、CPU コアによって実行される全体のサイクルを単にカウントするだけなので、不正確になる可能性があります。ここで Linux perf API が威力を発揮します。 API は、ソフトウェア定義のブレークポイントまたはハードウェア カウンターを介して、ユーザー イベントとカーネル イベントを測定するための包括的なツール セットを提供します。
perf
CLI ツールは、これらの API の使用方法を提供することに優れていますが、プログラム全体の実行を測定します。基礎となるシステム コールperf_event_open (2)
には glibc ラッパーがないため、特に大量の測定を実行する場合には非常に冗長になります。
このライブラリは、バイナリ内の特定のコードを高精度に測定するこの小さなニッチなギャップを埋めることを目的としています。
API が安定したら継続します。
あらゆる貢献を歓迎します。自分でコーディングできない場合は、おそらく他の誰かがコーディングできるので、何か気になることがあれば問題を投稿してください。
次の前提条件を満たしていることを確認してください。
$CC
gcc
8 以降を指しますlibcap
がインストールされているclang-format
がインストールされている (コードをフォーマットしたい場合)compiledb
がインストールされている (コードをフォーマットするか、他の llvm ツールで分析する場合) # Clone the repository
git clone https://github.com/AlexGustafsson/perf && cd perf
# Format the code
make format
# Build the library
make library
# Build examples
make examples
サンプルは Docker を使用してテストできます。
docker build -t perf .
docker run -it --rm --privileged perf ./pi
mmap
ed イベントのサポートを追加