問題タブ [dtrace]
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.
c++ - C プログラムから dtrace プローブにアクセスする
各プロセッサの実行キューを出力する runocc.d dtrace スクリプトがあります。Mac OS X の C++ プログラムで実行キューの長さを取得する必要があります。どうにかして dtrace 構造を C++ プログラムに埋め込むことは可能ですか?
node.js - node js restify アプリケーションを heroku にデプロイ中にエラーが発生しました
Restify アプリケーションを Heroku にデプロイする際に問題が発生しています。
Heroku には、restify が使用する dtrace に問題があるようですが、必須ではありませんが、restify の package.json ファイルから dtrace を削除することでこれを回避できることを読みましたが、これを試みましたが成功しませんでした.
私はノードが初めてで、Heroku と git を使用しているので、不足しているものがあると確信しています。restify の package.json ファイルには次のものが含まれています。
これらの行を削除しましたが、git にコミットして Heroku にプッシュした後も、上記と同じエラー メッセージが表示されます。
誰かが私が見逃しているものを見ることができますか?
macos - コマンド ライン ツールを使用して、OSX でプロセスをブロックしているものを特定しますか?
タイトルはそれを最もよく表しています。Linux では、 and おそらくorで簡単に実行できます。また、OSX Leopard から が削除されるまで、OSX では簡単でした。また、基盤となるシステム コール (afaik) も同様です。strace
lsof
/proc
truss
明らかなアプローチは でこの問題に取り組むことですが、悲しいことにdtrace
、イベントが発生したときにイベントをキャッチするため、私が理解している限りでdtrace
はうまくいきません。私の場合、ブロッキングシステムコールはすでに開始されています。ちなみに、これが解決できる場合は、修正したいと思いますdtrace
。
XcodeのInstrumentsには、プロセスのスタックの定期的なサンプルを取得することで同様のことを実現するモニターがあることがわかりました(それを行うためにどのシステムコールが依存しているかはわかりません!)、おそらくコマンドラインで同様のもので十分です(システム コールをラップするライブラリ コールまでのスタックを表示します)。私のユースケースに役立つように、この「サンプリングコマンドラインツール」は、スタック上で見つかった引数を見つけて解析し、ブロックされているファイル/ファイル記述子を特定するのに役立つ必要があります。
最後にもう 1 つ - Linux では、通常、通常のユーザーとしてこれを行うことができます (ptrace_scope
トリックがない場合)。OSX ソリューションが root を必要としないのも素晴らしいことです。
javascript - Linux での Node.JS (コード) 実行時間のプロファイリング
Linux でスクリプトの実行時間を正確にNode.JS
プロファイリングする方法を探しています。
NodeTime.com Performance Profilerのような興味深いプロジェクトがありますが、これはコード行の実行時間ではなく、I/O httprequest などのタイミングをプロファイルします。
Javascript を最適化できる場所、ほとんどの時間が費やされている場所などを正確に把握する方法を探しています。
私が見た興味深い方法の 1 つは、DTraceを使用して Node.JS をプロファイリングする FlameGraph を作成しようとすることです。
ただし、dtrace
非常に Solaris 固有です。
- Linux (Debian/Ubuntu) の場合、パッケージ
dtrace
に含まれています。sytemtap-sdt-dev
ただし、stap dtrace
同じではなく、関連するすべてのフック/プローブがありません。 - Paul Fox が Unix 版から移植しました。より完全な機能ですが、どういうわけか、フック/プローブはユーザー空間で Solaris のように機能せず、ノードのプロファイルにも使用できません。
ftp://crisp.dyndns-server.com/pub/release/website/dtrace/ (ビルドは非常に簡単です。README を参照してください。) Oracle
ポートもありますが、誰もお勧めしません。どうやら、Paul Fox ポートのプローブの約 0.1% しかありません。(皮肉なことOracle
に、以前はforSun
の元の作者だったので)dtrace
Solaris
Linux で、ターミナルまたは Eclipse を使用して、Node.JS スクリプトのコードをプロファイルするにはどうすればよいですか? Zend Profiler が PHP スクリプトのコード内の各コマンドの実行時間を表示するなど、特定のものを探しています。
linux - dtruss の出力を理解する
dtruss (mac) または dtrace によって出力されたレポートを理解/解釈する方法についてのリファレンスを教えてもらえますか?
簡単なプログラムで dtruss を試してみました。たとえば、次の出力が得られました。
これらすべてのシステム コールが 16 進パラメータを使用していることがわかります。しかし、これらをどのようにデコードすればよいのでしょうか? たとえば、実際に開こうとしているファイルをどのように見つけることができますか?
c - dtraceを使用して、時間の経過に伴う平均および最大ディスク読み取り/書き込みキューを計算する例
Mac OSXでディスクキューの長さを(読み取り操作と書き込み操作で別々に)読み取る必要があります。私はすでに、これはdtraceを介してのみ実行できるという結論に達しました(ここで間違っていることを嬉しく思いますが、これを別の方法で実行する方法は見つかりませんでした)。この情報を提供する唯一の方法は、iopendingdtraceスクリプトです。Cプログラムで提供される情報にアクセスできる(またはロジックを実装できる)必要があります。libdtraceの使用法は、dtraceビジネス全体として、非常にわかりにくいものです(プライベートAPIを考慮)。私の質問に答えない例がありますか(私の質問に答えないものがいくつかあります-libdtraceバッファリングされた出力とhttp://www.osdevcon.org/2008/files/osdevcon2008-petr.pdf)私を助けることができますか?
gcc - dtrace: スクリプトのコンパイルに失敗しました プリプロセッサが見つかりません
このスクリプトをオラクルからテストして、Ubuntu 10.04 でアクティブな NFS クライアントを取得しようとしていますが、実行できません。
それを実現するために、まずこれらの指示に従ってdtrace をインストールしました。これは私が正確にやったことです:
ただし、コンパイル時に次の警告が表示されます。
と をインストールlibdw-dev
しましbinutils-dev
たが、makefile を見ると、 を探しているようで、libdwarf.so
私libdw
のシステムでは という名前になっていlibdw.so
ます。
これを回避するために、でシンボリックリンクを作成しln -s /usr/lib/libdw.so /usr/lib/libdwarf.so
ます。その後、コンパイルは失敗します。
では、元に戻しましょう。シンボリックリンクを削除し、再度コンパイルして実行make install
しmake load
、すべてがうまくいくことを願っています。そして、すべてがうまくいくようです。
しかし、その後、上記のスクリプトを実行しようとすると失敗します。
何が起こっているのかわかりません。念のため、gccをインストールしました。
macos - 「psynch_cvwait(...)= -1 Err#316」のようなdtruss出力を解釈します
dtruss
OS Xでのアプリケーションの(誤)動作を分析するための便利なツールのようです。Linuxで私の最愛の人に近いものを見つけましたstrace
。ただし、その出力を解釈するには、それが参照するシステムコールを理解する必要があり、場合によっては、それらが生成する可能性のあるエラー状態を理解する必要があります。たとえば、次の行を見てください
このシステムコールが何を意図しているのか、そのパラメータが何を意味しているのか、そしてこのエラーコードが何を表しているのかを知ることができるドキュメントのソースに興味があります。libc関数のマンページに期待するのとほとんど同じです。上記および同様のエラーを含む、上記および同様のシステムコールを説明するリファレンスを求めています。ですから、私が理解できるようにしたい出力の種類の例として、この行を取り上げてください。
このようなOSXシステムコールについて学ぶための適切なリファレンスドキュメントは何ですか?
参照がカバーするシステムコールが多いほど、優れています。
aggregation - DTrace が集計を出力しない
OS X 10.8 の端末から、次の非常に単純な DTrace の使用を実行しようとしています。
sudo dtrace -n 'syscall:::entry { @counts["System Call Entry"] = count(); }'
^CI を押すと、集計@counts
が出力されることを期待していますが、代わりに空白行が出力されます。集計が印刷されない理由を教えてください。
次のスクリプトを実行すると、集計の出力が表示されるため、集計には値が格納されているため、これは非常に奇妙です。
sudo dtrace -n 'syscall:::entry { @counts[probefunc] = count(); } tick-1sec { printa(@counts); exit(0); }'
python - Python Dtrace にパッチが適用されましたが、テスト スクリプトを実行すると「無効なプローブ指定子」が引き続き取得されます
問題 13405でPython 2.7.3 にパッチを適用し、--with-dtrace
構成オプションを使用して python をコンパイルしました。
test_dtrace スクリプトを実行すると、テストは次のエラーで失敗します。
無効なプローブ指定
以下に示すように: