web-dev-qa-db-ja.com

Linux上のDTraceの代替は何ですか?

私が見ることができることから、LinuxでのDTraceの実装は、ライセンスと政治によって支えられています。現在代替案は何ですか?

40
JanePhanie

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

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

systemtap Webサイトのこのテーブル でdtraceと比較する方法を見ることができます(おそらく党派かもしれません:-)

Dtraceは、愛好家のPaul Foxによって一部Linuxに移植されており、ダウンロードして試してみることができます。彼の blog のリンクを確認してください。

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

30
Alex Brown

SystemTap は、Kprobesに基づいて構築されたより高いレベルの抽象化です。 Kprobesの動作の詳細については、LWNの 技術記事 を参照してください。

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

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

yum install systemtap-sdt-devel
14
Sudhanshu

sysdig は現在、優れたソリューションです。

いくつかの使用例には以下が含まれます(それらの wikiには非常に興味深い例があります ):

ディスク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

12
ylluminate

linux( https://github.com/dtrace4linux )および http://crtags.blogspot.com にはdtraceが存在します。

6
Paul Fox

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

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

4
Christian

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

1
Pascal Thivent