問題タブ [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.

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

c++ - C プログラムから dtrace プローブにアクセスする

各プロセッサの実行キューを出力する runocc.d dtrace スクリプトがあります。Mac OS X の C++ プログラムで実行キューの長さを取得する必要があります。どうにかして dtrace 構造を C++ プログラムに埋め込むことは可能ですか?

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

node.js - node js restify アプリケーションを heroku にデプロイ中にエラーが発生しました

Restify アプリケーションを Heroku にデプロイする際に問題が発生しています。

Heroku には、restify が使用する dtrace に問題があるようですが、必須ではありませんが、restify の package.json ファイルから dtrace を削除することでこれを回避できることを読みましたが、これを試みましたが成功しませんでした.

私はノードが初めてで、Heroku と git を使用しているので、不足しているものがあると確信しています。restify の package.json ファイルには次のものが含まれています。

これらの行を削除しましたが、git にコミットして Heroku にプッシュした後も、上記と同じエラー メッセージが表示されます。

誰かが私が見逃しているものを見ることができますか?

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

macos - コマンド ライン ツールを使用して、OSX でプロセスをブロックしているものを特定しますか?

タイトルはそれを最もよく表しています。Linux では、 and おそらくorで簡単に実行できます。また、OSX Leopard から が削除されるまで、OSX では簡単でした。また、基盤となるシステム コール (afaik) も同様です。stracelsof/proctruss

明らかなアプローチは でこの問題に取り組むことですが、悲しいことにdtrace、イベントが発生したときにイベントをキャッチするため、私が理解している限りでdtraceはうまくいきません。私の場合、ブロッキングシステムコールはすでに開始されています。ちなみに、これが解決できる場合は、修正したいと思いますdtrace

XcodeのInstrumentsには、プロセスのスタックの定期的なサンプルを取得することで同様のことを実現するモニターがあることがわかりました(それを行うためにどのシステムコールが依存しているかはわかりません!)、おそらくコマンドラインで同様のもので十分です(システム コールをラップするライブラリ コールまでのスタックを表示します)。私のユースケースに役立つように、この「サンプリングコマンドラインツール」は、スタック上で見つかった引数を見つけて解析し、ブロックされているファイル/ファイル記述子を特定するのに役立つ必要があります。

最後にもう 1 つ - Linux では、通常、通常のユーザーとしてこれを行うことができます (ptrace_scopeトリックがない場合)。OSX ソリューションが root を必要としないのも素晴らしいことです。

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

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の元の作者だったので)dtraceSolaris

Linux で、ターミナルまたは Eclipse を使用して、Node.JS スクリプトのコードをプロファイルするにはどうすればよいですか? Zend Profiler が PHP スクリプトのコード内の各コマンドの実行時間を表示するなど、特定のものを探しています。

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

linux - dtruss の出力を理解する

dtruss (mac) または dtrace によって出力されたレポートを理解/解釈する方法についてのリファレンスを教えてもらえますか?

簡単なプログラムで dtruss を試してみました。たとえば、次の出力が得られました。

これらすべてのシステム コールが 16 進パラメータを使用していることがわかります。しかし、これらをどのようにデコードすればよいのでしょうか? たとえば、実際に開こうとしているファイルをどのように見つけることができますか?

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

c - dtraceを使用して、時間の経過に伴う平均および最大ディスク読み取り/書き込みキューを計算する例

Mac OSXでディスクキューの長さを(読み取り操作と書き込み操作で別々に)読み取る必要があります。私はすでに、これはdtraceを介してのみ実行できるという結論に達しました(ここで間違っていることを嬉しく思いますが、これを別の方法で実行する方法は見つかりませんでした)。この情報を提供する唯一の方法は、iopendingdtraceスクリプトです。Cプログラムで提供される情報にアクセスできる(またはロジックを実装できる)必要があります。libdtraceの使用法は、dtraceビジネス全体として、非常にわかりにくいものです(プライベートAPIを考慮)。私の質問に答えない例がありますか(私の質問に答えないものがいくつかあります-libdtraceバッファリングされた出力http://www.osdevcon.org/2008/files/osdevcon2008-petr.pdf)私を助けることができますか?

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

gcc - dtrace: スクリプトのコンパイルに失敗しました プリプロセッサが見つかりません

このスクリプトをオラクルからテストして、Ubuntu 10.04 でアクティブな NFS クライアントを取得しようとしていますが、実行できません。

それを実現するために、まずこれらの指示に従ってdtrace をインストールしました。これは私が正確にやったことです:

ただし、コンパイル時に次の警告が表示されます。

と をインストールlibdw-devしましbinutils-devたが、makefile を見ると、 を探しているようで、libdwarf.solibdwのシステムでは という名前になっていlibdw.soます。

これを回避するために、でシンボリックリンクを作成しln -s /usr/lib/libdw.so /usr/lib/libdwarf.soます。その後、コンパイルは失敗します。

では、元に戻しましょう。シンボリックリンクを削除し、再度コンパイルして実行make installmake load、すべてがうまくいくことを願っています。そして、すべてがうまくいくようです。

しかし、その後、上記のスクリプトを実行しようとすると失敗します。

何が起こっているのかわかりません。念のため、gccをインストールしました。

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

macos - 「psynch_cvwait(...)= -1 Err#316」のようなdtruss出力を解釈します

dtrussOS Xでのアプリケーションの(誤)動作を分析するための便利なツールのようです。Linuxで私の最愛の人に近いものを見つけましたstrace。ただし、その出力を解釈するには、それが参照するシステムコールを理解する必要があり、場合によっては、それらが生成する可能性のあるエラー状態を理解する必要があります。たとえば、次の行を見てください

このシステムコールが何を意図しているのか、そのパラメータが何を意味しているのか、そしてこのエラーコードが何を表しているのかを知ることができるドキュメントのソースに興味があります。libc関数のマンページに期待するのとほとんど同じです。上記および同様のエラーを含む、上記および同様のシステムコールを説明するリファレンスを求めています。ですから、私が理解できるようにしたい出力の種類の例として、この行を取り上げてください。

このようなOSXシステムコールについて学ぶための適切なリファレンスドキュメントは何ですか?

参照がカバーするシステムコールが多いほど、優れています。

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

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); }'

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

python - Python Dtrace にパッチが適用されましたが、テスト スクリプトを実行すると「無効なプローブ指定子」が引き続き取得されます

問題 13405でPython 2.7.3 にパッチを適用し、--with-dtrace構成オプションを使用して python をコンパイルしました。

test_dtrace スクリプトを実行すると、テストは次のエラーで失敗します。

無効なプローブ指定

以下に示すように: