問題タブ [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.
linux - Linuxで定期的にパフォーマンスカウンターを読み取る
Linuxで定期的にパフォーマンスカウンターを読み取る方法はありますか?
Xサイクルごとにサンプリングする機能のようなperf stat
ものが私が探しているものです。
基本的には、あるプログラムのCPUサイクル数X回ごとに命令カウンタ(実行した命令数)を読み取れるようにしたいと思います。
linux - パフォーマンス プロファイラーのコール スタック
次の方法で「perf」を実行しています。
次に、私はこれを見ます:
my_func() を呼び出す関数がわかりません。代わりに「nil」と「0x17f310000000a」が表示されます。私は何か間違ったことをしていますか?表示されるシンボルと表示されないシンボルがあるため、おそらくデバッグ情報の問題ではありません。
より詳しい情報:
- CentOS 6.2 (カーネル 2.6.32-220.4.1) を実行しています。
- perf rpm - perf-2.6.32-279.5.2.el6.x86_64。
linux - IntelPEBSを使用したDTLBミスアドレストレース
ハードウェアパフォーマンスカウンタを使用して、D-TLBミスのアドレストレースを生成しようとしています。Intelプロセッサには、サンプルが取得されるたびにハードウェアレジスタの内容をダンプできる「PreciseEvent Based Sampling」(PEBS)があります。このレジスタダンプを使用して、D-TLBミスの原因となったアドレスを作成する必要があります。ただし、レジスタダンプからアクセスのアドレスを生成するにはどうすればよいかわかりません。
誰かが似たようなことをした経験があり、これについていくつかの指針を教えてくれますか?
ありがとう
アルカ
c - perf キャッシュ イベントの意味は何ですか?
変更された C プログラムが、変更されていない対応する部分よりも高速に実行される理由を理解しようとしています (いくつかの追加作業を実行するために、非常に数行のコードを追加しています)。この文脈では、「キャッシュ効果」が主な説明(命令キャッシュ)であると思われます。したがって、(https://perf.wiki.kernel.org/index.php/Main_Page) プロファイリング ツールに到達しperf
ますが、残念ながらキャッシュ ミスに関する出力の意味を理解できません。
キャッシュに関するいくつかのイベントが提供されます。
これらのフィールドに関する説明はどこにありますか? cache-misses イベントは、常に他のイベントよりも小さくなります。このイベントは何を測定しますか?
次の例では、ls の 26,760 の L1-icache-load-misses と 5,708 の cache-misses をどのように解釈するのですか?
c - perf などを使用して C プログラムの実行時間 (またはその他の統計) を取得する
C プログラムを作成する必要があります (学校の課題でキャッシュ サイズを決定するため)。clock()
タイミング情報を取得する手段として使用しました。しかし、それは不正確な結果につながる可能性があると言われました。
そこで、最近のラボで導入された他のライブラリ、perf または papi を使用してパフォーマンスを記録することを考えていました。しかし、私たちがそれらを使用した方法は、コマンドライン経由でした:
アプリで perf を使用することは可能だと思いますか? 私は C が初めてで、Python/JS/Java などの高水準言語に慣れているので、make ファイルを作成し、ライブラリなどを含める必要があると思います。また、どのような機能がありますか?
http://www.rzg.mpg.de/computing/hardware/BGP/perf.htmlを見ました
どちらを使いましょう?MPI プログラムではありません。では、実際にどのように使用すればよいのでしょうか。私はCとgccを使用しています。これはコンパイルのように見えますが...mpixlf90
linux-kernel - perfコマンドとperfmon2またはlibpfm4の違いは何ですか
最近、パフォーマンスカウンターの周りを掘り下げています。そして、perfmon2とlibpfm4 http://perfmon2.sourceforge.net/をグーグルで検索し、perfコマンドhttps://perf.wiki.kernel.org/index.php/Main_Pageを見つけて、Linuxのカーネルソースコードとともに出荷しました。 libpfm4とperfコマンドの両方を再生したperfソースコードリンク。libpfm4はCPUのサイクル数または命令数しか提供できないようです。
perfを使用して取得できると思われるL1-dcache-loadsなどの情報を取得する方法のサンプルコードや実行可能な例が見つかりません。stackoverflowで調べて、perfコマンドとlibpfm4の関係について説明している記事を見つけました:ハードウェアパフォーマンスの使用Linux Peopleのカウンターによると、libpfm4の作成者は、perfコマンドの寄稿者であるIngoに腹を立てていましたが、後で実際にperfのコードのレビューを手伝っていました。
それで、誰かがperfコマンドでperfmon2またはlibpfm4の間の関係を説明することができます。また、perfコマンドを使用するのと同じように、libpfm4を使用してL1-dcacheなどの情報を取得できますか。どうもありがとうございます!
linux - perf_events/oprofile を使用して Linux で JIT の出力をプロファイリングしますか?
ハードウェア パフォーマンス カウンターを使用して、Linux で JIT によって生成されたコードをプロファイリングしたいと考えています。私が知っているように、最も一般的なプロファイラはoprofile
とperf
です。
JIT と oprofile/perf を統合するにはどうすればよいですか?
私の JIT は、oprofile で既にサポートされている Java ではありません。(パフォーマンス?)
たとえば、LLVM の JIT を考えることができます。したい
- JIT 化されたコードから最もホットな関数 (それらの名前) を参照してください
- すべての命令に割り当てられたパフォーマンス カウンターの統計情報を使用して、最もホットな関数の逆アセンブリを確認します。
performance - 「perf top」コマンドが仮想マシンで正しく実行されない
Linux カーネル 3.2.0-31 で Ubuntu 12.04 を実行している仮想マシンを取得しました。システム全体のプロセスをプロファイリングして情報を収集できるコマンドを実行しようとするsudo perf top
と、情報が何も表示されません。perf stat ls
ただし、 lsコマンドを実行してすべてのパフォーマンス情報を収集するなど、他のコマンドは正常に実行されます。
だから私は疑問に思っています:それはperf top
コマンドが仮想マシンをサポートしていないからですか? 何か案は?
performance - プロセス間の干渉を測定する方法
並列システムでは、すべてのプロセスが他のプロセスに影響を与えます。これは、CPU キャッシュ、メモリ、ディスク I/O、ネットワークなどのいくつかの希少なリソースをすべて競合するためです。
プロセス間の干渉を測定するのに最適な方法は? Process A & B など、それぞれディスクへのアクセスが多くなっています。したがって、それらを並列に実行すると、順次実行するよりもおそらく遅くなります (個々のランタイム)。ボトルネックはハードドライブだからです。
プロセスの動作 (ディスク、メモリ、または CPU を集中的に使用) が正確にわからない場合、それを分析するにはどのような方法が最適でしょうか?
個々の実行時間を測定し、各並列プロセスの相対的なシェアを比較しますか?
プロセス A が平均 30 秒で単独で実行されるように、B と 100% 並列の場合は 45 秒、20% 並列の場合は 35 秒.. など ??
L1 & LLC キャッシュ ミス、ページ フォールトなどのいくつかの指標を比較したほうがよいでしょうか??
profile - perf 出力の「サンプル」とは何を意味しますか?
プログラムのプロファイリングに Linux perf を使用しましたが、結果がわかりません。
上記の例は、'fun' が 2 つのサンプルを持ち、10.5% のオーバーヘッドをもたらすことを意味します。
それらの 80% は ABC から呼び出され、20% は DEF から呼び出されます。私は正しいですか?
サンプルが 2 つしかない場合、'perf' は ABC と DEF の割合をどのように計算するのでしょうか?
なぜ50%じゃないの?用量「perf」は追加情報を使用しますか?