問題タブ [perf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
260 参照

linux - perf record -c オプションとオーバーフロー イベントの関係は?

perf record を使用して、15 個のハードウェア イベントとトレース ポイント イベントを記録しようとしています。

次のことを理解したいです。

  1. イベントベースのサンプリング:ドキュメントから、そのイベントに対応する64ビットカウンターがオーバーフローするたびにperfレコードがサンプリングされることを理解しました。そうですか?このようなイベントが ~ 2^64 回発生すると、カウンターがオーバーフローしますか?

  2. PMU/カウンターの数よりも多くのイベントを測定する場合、多重化を使用するには特定のスイッチを渡す必要がありますか? 多重化が存在する場合、オーバーフロー イベントはどのように動作しますか。

  3. スイッチ「-c」の目的/用途は何ですか? このスイッチを使用して、n イベントごとにカウンターをオーバーフローさせることはできますか?

助けてください。

0 投票する
1 に答える
876 参照

c++ - C++ アプリのウォール クロックのプロファイリングに使用するツールは何ですか?

マルチスレッド C++ アプリのプロファイルを作成し、そのボトルネックを見つける必要があります。問題は、掛け時計のプロファイルを表示する必要があることです。と を使用oprofileperfました。誰も私にそのような情報を提供することはできません。

私は使用しperf record -g -e sched:sched_stat_sleep <cmd>ましたperf recordが、SIGFPE例外で落ちます。これは私を怒らせます。

Valgrindfanotify_markこのツールに実装されていないsyscallを使用しているため、私には適していません。

Googleperftoolsが壁掛け時計のプロファイリングを実行できるかどうかはわかりません。Google のドキュメントには情報がありません。

誰でも提案できますか?ありがとうございました。

0 投票する
3 に答える
939 参照

unix - 2 つのコマンドが同時に関係している場合、出力を 2 つの異なるファイルにリダイレクトする方法は?

ツールを使用perfして sort utility を分析しています。私は次のコマンドを与えました。

/dev/nullsort の出力と perf の出力を perf_data ファイルにリダイレクトしたいと考えています。

これどうやってするの ?

0 投票する
2 に答える
3342 参照

android - システムコール __NR_perf_event_open が Android で動作しないようです

Android アプリで __NR_perf_event_open の syscall を使用したいと考えています。

コードは Linux では正常に動作しますが、Android では動作しません。

ただし、fd は常に値 -1 を返します。「errno.h」を使用すると、「EBADF:不正なファイル記述子」というエラー情報が表示されました。

0 投票する
0 に答える
715 参照

cpu - 異なる NUMA ノードでのパフォーマンス ツールの結果の解釈

perf ツールを使用して、プログラムの興味深い動作を説明したいと思います。

いくつかの背景情報

私のマシンには 4 つの NUMA ノードがあり、メイン アプリケーションはマシン上で実行されています。cpusets を使用してマシンを分割し、アプリケーションに 3 つのノード、システムに 1 つのノードを割り当てています。同じマシンで単体テスト (ログの改善のため) を実行しているときに、perf ツールを使用して調査しようとしている予期しない動作が発生します。

予期しない動作は、アプリケーションが実行されている NUMA ノード (ノード 2 としましょう) で、単体テストでより良い時間を取得することです。ノード 3)。node2のCPU(スピンロックを行わないCPU)で実行しているように見えますが、別のnumaで実行するよりも良い結果が得られます。

ログシステムを改善しようとしているので、テストはアプリケーションによっても行われる作業を行っており、後でディスクにダンプするためにいくつかのログメッセージをキューに書き込みます (別のスレッド)。キューへの競合は、スピンロック (CAS) によって制御されます。unitest は、2 つのループを持つ 1 つのライター スレッドです。100 回、1000 個のログがキューに書き込まれ、RDTSC (私の選択) を使用して各内部ループが測定され、統計が出力されます。キューは十分に大きく、標準偏差を取得し、メモリ操作は最小限に抑えられます (memcpy なし)。リーダーは別のスレッドでディスクにダンプしています。

アプリケーションを停止して、もう一度テストを実行してみました。この場合、テストを実行するために選択した NUMA ノードに関係なく、node3(slow) で実行した場合と同様の結果が得られます。つまり、同じ numa でテストを実行すると、実行中のアプリケーションがテストを高速化しています。アプリケーションが実行されるノード。私にとって非常に直感的ではありません。

次の perf ツール コマンドを使用してデータを取得する

コマンドを使用して分析する

私はいくつかの違いを含むものを抽出しました。 sched-、LLC-、branch-、TLB を疑うべきかどうかはわかりません。相対的な違いが私が見ている動作を説明するかどうかの手がかりがないからです。

これを調査するためのより良い方法の提案はありますか?

0 投票する
1 に答える
2226 参照

linux - コマンド「perf report」に何も表示されないのはなぜですか?

「perf record ./exe」を使用すると、「perf.data」というファイルが作成されます。しかし、「パフォーマンス レポート」を使用してデータを確認すると、何も表示されないのはなぜですか? 私の perf バージョンは「0.0.2.PERF」で、Open suse Linux Enterprise Server 11 (x86_64) を使用しています。

Ubuntuで同じことをするとうまくいきます.Open suseとUbuntuの間に違いはありますか?

0 投票する
1 に答える
122 参照

linux - perfを使用してmutilprocessorコンピューターで各CPUメッセージを取得するにはどうすればよいですか?

私の仕事は、マルチプロセッサ コンピューター (例: 4 コア) の各ノードを を使用して測定することperfです。cache-misses、LLC-loads、LLC-load-misses、LLC-stores、LLC-store-misses などを含め、合計統計データのみを取得します。

それらを区別する方法はありますか?

0 投票する
1 に答える
785 参照

linux-kernel - Executing block of code without context switch

Is there any way to execute a block of code in C without suffering a Context Switch?

I have modified perf stat to sample the counters periodically. While this works, it ends up giving me some bad data points such as 0 cycles x instructions.

I believe that the reason for this happening is because of context switching.

Since my code always pulls cycle counter value before instruction counter, if a context switch were to happen after pulling the cycle counter value, and if the process I was profiling executed for some portion of the scheduling quanta, then when I finally pulled the instruction counter value, it would be 'one ahead' of the cycle counter value that I already pulled.

Is there any way to execute the code-block without allowing a context switch to take place?

0 投票する
3 に答える
115 参照

c++ - 実行時にC++ソフトウェアのクラスを調査する

私はC++ベースのプログラムを起動して実行していますが、私の問題は次のことを知りたいということです。

  • 最もよく呼ばれるtop10、top5、topXメソッドは何ですか
  • 計算に最も重いクラスは何ですか、または最大クロックサイクルを必要とするスレッドは何ですか

Linuxで、、または同様のvalgrindツールを使用してこれを行うことは可能ですか?perf

このアプリケーションが多くのサードパーティライブラリを使用していることはありませんが、変更および改善したいのはアプリ自体のコアであるため、これらのライブラリには興味がありません。可能なすべてのメソッドのリストを実装されたものに減らすことができます。 「実際のアプリケーション」によってのみ。

一般に、分岐とパフォーマンスの低下における最大の障害の原因となるクラスまたはメソッドを検出する方法は?

0 投票する
1 に答える
3075 参照

valgrind - Valgrind と Linux のパフォーマンスの相関関係

perfイベントinstructionsLLC-load-misses、を選択したとしますLLC-store-misses。さらに、入力をprog 変化させてプログラムをテストするとします。valgrind同じ入力と同じカウンターに対して「同じ」機能結果が得られるはずですか? つまり、 の 1 つの値perfが上昇した場合、 の 1 つvalgrindは常に同じようにする必要がありますか? valgrindコードのプロファイリング中に注意すべきシミュレーションであることの影響はありますか?

編集:ところで、人々が私自身を実験していないことで私をグリルする前に、私は(ちょっと)持っていると言わなければなりperfません. パッチがありますが、カーネルを再コンパイルする気がしません...