マルチスレッド プログラムの負荷分散特性を確認する必要があります。たとえば、これをプロットするための情報を提供するツールはありますか? たとえば、コアごとの情報を提供する単純なものが必要ですが、Intel VTune などは必要ありません...それは非常に肥大化しているため、見ることさえ苦痛です。
4 に答える
Linux Trace Toolkitを見てください-次世代、あなたはそれをセクシーではないものとして使うこともできますがGnu gprof
、それは仕事をします:)
編集gprof
:スレッド環境で使用できます: pthreadでgprofを使用します
EDIT2:Oprofileも役立つかもしれません
私は AMD の CodeAnalyst の機能の表面をなぞっただけですが、これまでに発見したこと、特にすべてのパフォーマンス カウンターとそれらを詳細に把握することは印象的です。スレッドごとのプロファイリングに関しては、私はほとんどの場合、専用コアで長時間実行される超並列アプリケーションを作成しますが、これはあなたのものには適用できない可能性があります。
独自の CPU のニーズに関しては、非常にケチに見えます。Intel CPU でプロファイリングされるかどうかはわかりません。Linux版があります。
やってみよう!
perf
Linux カーネルでパフォーマンス カウンターをサポートするための公式の実装である を使用することもできます。パフォーマンス カウンターの読み取りに加えて、コンテキスト スイッチ、CPU の移行、ページ フォールトなどの他のメトリックにアクセスすることもできます。
残念ながら、公式 wiki にはあまり多くの情報が含まれていません。ただし、perf に含まれるさまざまなツールの使用方法の詳細については、このページを確認してください。
主題を調査するために、次のコマンドを使用しました。
ps -AL -o lwp,fname,psr | grep amp
調査中のアプリケーションはammpで、コアと同じ数のスレッドを使用します。このコマンドは、各スレッドがどのコアにあったかを返します。このコマンドを数回実行すると、特定のスレッドがコア間をどのように移動するか、および負荷分散アルゴリズムがどのように機能するかがわかります。
お役に立てば幸いです。