問題タブ [oprofile]
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.
profiling - _CPU_ 1ではなく、この関数で費やされる_real_時間(syscallの待機を含む)を測定するためにどのプロファイラーを使用する必要がありますか
アプリケーションは計算を行いませんが、I / O、ファイルの読み取り、ネットワークの使用を行います。プロファイラーに表示してほしい。
私は、callgrindのように、問題ごとにclock_gettimeを呼び出すようなものを期待しています。
または、アプリケーションを中断するoprofileのように(スリープ中またはソケット/ファイルなどを待機している間)、アプリケーションが何をしているのかを確認します。
「read」、「connect」、「nanosleep」、「send」、特に「fsync」(およびそのすべての呼び出し元)を太字にします(計算を実行する文字列や数値関数などではありません)。
プラットフォーム:GNU / Linux @ i386
c++ - OProfile出力をどのように解釈する必要がありますか?
最近、OProfileを使用してアプリケーションのプロファイリングを試みました。収集されたデータはすでに私にとって非常に貴重ですが、その正確な解釈に苦労しています。oprofileを設定して実行してアプリを実行した後、レポートを生成して次の情報を取得しました。
root @ se7xeon:src#opreport image:test -l -t 1
オーバーフロー統計は使用できません
CPU:P4 / Xeon、2つのハイパースレッド、速度3191.66 MHz(推定)
カウントされたGLOBAL_POWER_EVENTSイベント(プロセッサが停止していない時間) 0x01のユニットマスク(必須)カウント750000
サンプル%シンボル名
215522 84.9954 cci :: Image :: interpolate(unsigned char *、cci :: Matrix const&)const
17998 7.0979 cci :: Calc :: diff(unsigned char const *、unsigned char const *)
13171 5.1942 cci :: Image :: getIRect(unsigned char *、int、int)const
5519 2.1765 cci :: Image :: getFRect(unsigned char *、double、double)const
さて、私の補間関数は、アプリケーションの(長すぎる)実行時間の84%を占めています。それからそれを調べるのは良い考えのようです:
root @ se7xeon:src#opannotate image:test --source
[...]
私が正しく理解していれば、if条件はプログラムの実行時間の22%以上を占めています。冒頭の中括弧と関数宣言には時間がかかるようですが、これは関数呼び出しのオーバーヘッド(「スタック、ジャンプ、ポップパラメーターのプッシュパラメーター」シーケンス)に対応するはずですか?
ソース内のいくつかの変更(ifを最適化する方法がわからなかったため、後のボトルネックに関連)、再コンパイル、oprofileの再実行(opcontrol --resetを忘れないでください)。これで、注釈付きのコードは同じ場所で次のようになります。
今回はifは基本的に全く時間がかからず(?)、最も高価な命令は「col1 = col0 + 1」であり、時間のかかるブロック全体が上にシフトしているようです。どうすればいいの?これは、ソースのボトルネックを特定するためにまったく信頼できますか?
もう1つの疑問点は、opcontrolを設定したときに、トレースされたイベントをGLOBAL_POWER_EVENTSとして入力し、サンプル数が750kであったことです。出力では、補間関数は84%を占めるように見えますが、その中に記録されたサンプルの数は200kを少し上回っています。それは要求された数の50%でもありません。残りの約500kのサンプルは、出力にリストされていないアプリケーション(カーネル、Xorgなど)によって取得されたことを理解していますか?
linux - oprofile はハードウェア パフォーマンス カウンターを使用できません
2 つの Xeon E5504 プロセッサを搭載した IBM HS22 ブレード上に debian 5.0 Linux サーバーがあります。このセットアップでは、oprofile がハードウェア パフォーマンス カウンターを認識できず、タイマー割り込みしか利用できないことがわかりました。
システム情報は次のとおりです。
oprofile は、apt を使用して debian リポジトリからインストールされました。
ハードウェア パフォーマンス カウンターを有効にするにはどうすればよいですか? ありがとう!
c - Linux でのコンテキスト スイッチの監視
プロファイラーを使用せずにコンテキスト スイッチがいつ発生するかを判断する方法はありますか? プログラム内のさまざまなプロセスが実行を完了するのにかかる時間を監視する C プログラムを作成しました。プロセス/スレッド コンテキストの切り替えも示したいと思います。切り替えが行われる時刻とprev_id -> curr_id
. この3つの情報は役に立ちます。
c++ - oprofile でプロファイリング可能
cent os 5.5 を使用しています。
Linux localhost.localdomain 2.6.18-164.el5xen #1 SMP Thu Sep 3 04:03:03 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux
c++ で記述された oprofile を使用してプロジェクト (サーバー) のプロファイルを作成しようとしています。
そのために、私はEclipse Helios Service Release 2を使用しており、oprofile用のプラグインがあります。私は日食を通してプラグインをインストールしました。しかし、oprofile でプロファイリングしようとすると、bos というメッセージが表示され、
「エラーが発生しました。詳細については、エラー ログを参照してください。java.lang.ExceptionInInitializerError」
私はEclipseプラグインgprofも試しました。gmon.out ファイルが作成されますが、残念ながらサンプルは取得されませんでした。qa関数が呼び出された回数のみを表示できますが、関数の実行時間は表示できませんでした。なぜこれが起こっているのか誰か教えてもらえますか?
cent os カーネルが oprofile によるプロファイリングをサポートしているかどうか教えてください。
私のプロジェクトは、c++ で書かれたサーバーです。共有ライブラリがあり、マルチスレッドです。あまり効率的ではありません。だから私はそれが多くの時間を費やしている場所とCPUに過負荷をかけている場所を見つけようとしています.
eclipseでoprofileまたはgprofを使用してサーバーを適切な方法でプロファイリングする方法を誰かが教えてくれれば、gr8の助けになります。gmon.outまたはoprofileの出力がはるかにわかりやすい方法で表示されるため、Eclipseを好みます
ありがとうございました
oprofile - 削除されたバイナリの oprofile
ストリップされたバイナリで oprofile を使用する方法を見つけようとしていますが、後でシンボル テーブルが利用可能になったときに詳細な情報を取得できますが、これまでのところ解決策が見つかりません。
これが私の状況です: 私たちのソフトウェアはストリップされた状態で顧客に出荷されますが、ビルド マシンにはストリップされていないバージョンがあります。ソフトウェア クラッシュが発生した場合、バックトレースを送り返すことができ、それをローカルのストリップされていないビルドで解釈できます。
oprofile はサンプルの取得とサンプルの解釈に関するものですが、このプロセスを切り離す方法はありますか? oprofile/opreport が 16 進アドレス ベースのプロファイル情報を生成し、すべてのシンボルが利用可能な別のマシンで解釈できる方法はありますか。サンプルファイルをコピーして戻すことで、そうすることができますか?
可能だと確信しているので、専門家にアドバイスを求めています。詳細な手順はいいでしょう。
前もって感謝します。
linux - oprofile は今も健在ですか?
oprofile プロジェクトは今も健在ですか?
デフォルトの Linux カーネルではまだサポートされており、ユーザー空間ユーティリティが (少なくとも私が実行している Arch Linux では) 動作することはわかっていますが、それに関するドキュメントの大部分は古くなっているように見えますか?
Linux で oprofile と同じ仕事をする他のプロファイラーはありますか? それとも、過去数年間、すべてがうまく機能していたというだけですか? それとも、誰もが Intel Core iGezillion プロセッサーを持っていますか?
linux - /root/.oprofile 以外のディレクトリを使用するように oprofile を作成できますか?
oprofileを使用して、サーバー クラスターのパフォーマンスの問題を追跡しようとしています。ただし、問題のサーバーには読み取り専用のファイル システムがあり、書き込み可能なディレクトリは /var/tmp だけです。
OProfile は、実行するたびに と の 2 つのディレクトリを作成しようとし/root/.oprofile
ます/var/lib/oprofile
が、ファイルシステムが読み取り専用であるため作成できません。コマンド ライン オプションを使用して、--session-dir
以外の場所にログを書き込むこと/var/lib
ができますが、 以外のディレクトリを使用するようにするオプションが見つかりません/root/.oprofile
。
ファイルシステムは書き込み不可のメディア上にあるため読み取り専用であり、アクセス許可のためではありません。つまり、スーパーユーザーでさえそれらのディレクトリに書き込むことはできません。ファイルシステムの新しい ROM イメージをクックすることはできますが (これは明らかに oprofile をインストールした方法です)、スーパーユーザーであるかどうかにかかわらず、実行時プログラムが /root に書き込む方法はありません。
ROM に /root/.oprofile -> /var/tmp/oprofile を指すシンボリック リンクを作成しようとしましたが、どうやら oprofile はこのシンボリック リンクをディレクトリとして認識せず、実行時に失敗します。
この特定のシステムでプロファイラーを実行する必要があります。調査しようとしているパフォーマンスの問題は、開発サーバーでアプリをビルドして実行すると明らかにならないからです。プログラマーのワークステーションでテストを実行し、そこでアプリをプロファイリングすることはできません。問題は発生しないからです。
oprofile を使用しないように設定する方法はあります/root
か?
amazon-ec2 - EC2 での実行時に OProfile / Xenoprof でイベント カウンターを使用するにはどうすればよいですか?
各インスタンスで OProfile を実行してデータを収集するように設計された、EC2 用のクラスター全体のプロファイリング ツールを作成しています。最終的には、opreport によって生成された XML 出力を集約し、後で分析したいと考えています。
現在、OProfile にハードウェア イベントを表示させることに行き詰まっています。できることは、タイマー割り込みモードでプロファイルを作成することだけです。これは、OProfile がハードウェア イベントを参照できない仮想化環境で EC2 インスタンスが実行されていることが原因であると感じています。
私はこの予感を少し調べて、考えられる解決策として Xenoprof を思いつきましたが、EC2 でそれを起動して実行する方法に関するドキュメントは非常に限られています。
誰かが EC2 で Xenoprof を実行して成功した場合 (それについてはいくつかの論文があるので、いくつかの成功があるに違いないことはわかっています)、何が問題なのか教えていただけますか?
yum install oprofile を実行すると
そしてman opcontrol
インスタンスでは、xen のオプションが表示されます。これは、Xenoprof をインストールする必要があることを意味すると思います。ハードウェア イベントをサンプルとして取得する方法がわかりません。
どんなアドバイスでも大歓迎です!ありがとう。
linux - oprofileはLLC_MISSESキャッシュイベントをサンプリングしていません
大規模なリアルタイムアプリでキャッシュミスを記録するためにoprofileを使用しようとしています。
しかし、レポートを見ると、キャッシュミスについては言及されていません。CPU_CLK_UNHALTEDのみをサンプリングします。
しかし、-statusは、oprofileがL2ミスをサンプリングしていると主張しています。
私は何が間違っているのですか?どちらかにリストされている他のカウンターをサンプリングすることはできませんophelp
。
これは、Ubuntuのカーネルバージョン2.6.38のoprofile0.9.6で使用されます。