私が見る限り、Linux での DTrace の実装は、ライセンスと政治によって妨げられています。現在、代替手段は何ですか?
6 に答える
Systemtapは、dtrace と同じ種類の問題を解決するように設計されており、同様のユーザー インターフェイスを備えています。ユーザーは、名前付きプローブにアクションをアタッチする小さなスクリプトを記述します。
不安定だと言われています。通常、デフォルトではカーネルにコンパイルされていませんが、動作するようになると問題はありませんでした。
systemtap Web サイトのこの表で、 dtrace との比較を確認できます(党派的かもしれません :-)
Dtrace は、熱心な愛好家である Paul Fox によって部分的に Linux に移植されており、ダウンロードして試すことができます。彼のブログのリンクをチェックしてください。
kprobesは dtrace の代わりになると言われていますが、試したことはありません。
SystemTapは、Kprobes 上に構築された高レベルの抽象化です。Kprobes の仕組みの詳細については、LWN に関する私の技術記事を参照してください。
Alex が述べたように、Systemtap は基本的に dtrace と同じ問題を解決しますが、dtrace よりもやや遅く (何をしようとしているのかによっては、そうであるとは認識されない場合があります)、洗練されていないか安全ではない点が異なります。使用する。
SystemTap SDT 開発パッケージをインストールするには、以下を試してください。
yum install systemtap-sdt-devel
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
Linux( https://github.com/dtrace4linux)とhttp://crtags.blogspot.comにはdtraceが存在します。
Oracle は DTrace を Linux に移植しています: https://oss.oracle.com/projects/DTrace/
これが Linux ディストリビューションやその他のディストリビューションでのみ機能するかどうかはわかりません。
Linuxにはstrace/ltraceがあります(straceについてはこの投稿を参照してください)。ただし、実際にはDTraceと同等ではなく、DTraceで実行できることのごく一部をカバーしているだけです(実際、DTraceはLinuxが提供するものよりもはるかに優れています)。