41

私が見る限り、Linux での DTrace の実装は、ライセンスと政治によって妨げられています。現在、代替手段は何ですか?

4

6 に答える 6

30

Systemtapは、dtrace と同じ種類の問題を解決するように設計されており、同様のユーザー インターフェイスを備えています。ユーザーは、名前付きプローブにアクションをアタッチする小さなスクリプトを記述します。

不安定だと言われています。通常、デフォルトではカーネルにコンパイルされていませんが、動作するようになると問題はありませんでした。

systemtap Web サイトのこの表で、 dtrace との比較を確認できます(党派的かもしれません :-)

Dtrace は、熱心な愛好家である Paul Fox によって部分的に Linux に移植されており、ダウンロードして試すことができます。彼のブログのリンクをチェックしてください。

kprobesは dtrace の代わりになると言われていますが、試したことはありません。

于 2010-01-13T18:49:14.067 に答える
14

SystemTapは、Kprobes 上に構築された高レベルの抽象化です。Kprobes の仕組みの詳細については、LWN に関する私の技術記事を参照してください。

Alex が述べたように、Systemtap は基本的に dtrace と同じ問題を解決しますが、dtrace よりもやや遅く (何をしようとしているのかによっては、そうであるとは認識されない場合があります)、洗練されていないか安全ではない点が異なります。使用する。

SystemTap SDT 開発パッケージをインストールするには、以下を試してください。

yum install systemtap-sdt-devel
于 2010-01-13T19:46:49.130 に答える
12

sysdig今では素晴らしいソリューションです。

いくつかの使用例が含まれます (彼らのウィキには非常に興味深い例がいくつかあります):

ディスク I/O の場合

  • ディスク帯域幅の使用量に関して上位のプロセスを表示する

    sysdig -c topprocs_file

  • 多数のファイルを使用しているプロセスを一覧表示する

    sysdig -c fdcount_by proc.name "fd.type=file"

  • 読み取り + 書き込みバイト数で上位のファイルを表示する

    sysdig -c topfiles_bytes

  • apache が読み取りまたは書き込みを行った上位ファイルを出力します。

    sysdig -c topfiles_bytes proc.name=httpd

  • 基本的な opensnoop: snoop ファイルは発生時に開きます

    sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open

  • R+W ディスク アクティビティの観点からトップ ディレクトリを表示する

    sysdig -c fdbytes_by fd.directory "fd.type=file"

  • /tmp ディレクトリの R+W ディスク アクティビティに関して上位のファイルを表示する

    sysdig -c fdbytes_by fd.filename "fd.directory=/tmp/"

  • 「passwd」という名前のすべてのファイルの I/O アクティビティを観察します。

    sysdig -A -c echo_fds "fd.filename=passwd"

  • I/O アクティビティを FD タイプ別に表示する

    sysdig -c fdbytes_by fd.type

于 2014-07-08T06:51:52.410 に答える
6

Linux( https://github.com/dtrace4linux)とhttp://crtags.blogspot.comにはdtraceが存在します。

于 2012-06-03T09:29:49.643 に答える
4

Oracle は DTrace を Linux に移植しています: https://oss.oracle.com/projects/DTrace/

これが Linux ディストリビューションやその他のディストリビューションでのみ機能するかどうかはわかりません。

于 2013-04-18T13:08:09.400 に答える
1

Linuxにはstrace/ltraceがあります(straceについてはこの投稿を参照してください)。ただし、実際にはDTraceと同等ではなく、DTraceで実行できることのごく一部をカバーしているだけです(実際、DTraceはLinuxが提供するものよりもはるかに優れています)。

于 2010-01-13T19:17:36.647 に答える