DTraceの改良点
UEK R4u4ではモジュールおよびユーティリティの更新を含む多数のバグ修正および拡張がDTraceに導入され、現行バージョンが0.6.0になりました。 注目すべき変更点は次のとおりです。
-
関数境界トレース(FBT)
関数の境界トレースがDTraceで使用できるようになりました。 機能は次のとおりです。-
メモリー、データおよび命令アクセスのトラップの処理。
-
カーネルOOPSデバッグ用の改善された出力(DTraceプローブ・コンテキストや処理された最後のプローブなど)。
-
一貫性およびページ表のような下位レベル構造へのアクセスを改善するために、カーネル内に新しいユーザー・スタック・ウォーカが実装され、ユーザー・スタックの終了をトラッキングするためのフィールドが追加されました。
-
FBTブラック・リストの関数が更新され、これらはプローブ処理中に呼び出すことができ、この中には、命令分析用の
insn_*やinat_*で始まる関数が含まれています。
-
-
入力されたSDT引数
DTraceモジュールが用意されているカーネル、およびDTraceのユーザー空間ユーティリティに変更が加えられ、入力したSDT引数の操作が容易になりました。 以前のバージョンのDTraceは、SDTおよびperfプローブの追加に伴ってDTraceモジュールを更新することが必要でした。 この更新によって、カーネル開発者はモジュールを更新することなくプローブを追加でき、かわりに、引数型を動的に計算して構造をナビゲートするDTraceの機能を使用します。 また、DTRACE_PROBE()マクロに引数カウント接尾辞が必要なくなったことで、SDTプロバイダDTRACE_PROBE()マクロ・ラッパーの追加が非常に簡単になりました。
-
プロセス・グラブ
DTraceプロセスのグラブを改善するためにいくつかの修正が適用され、たとえば、自己グラブによってバック・トレースをより適切に取得したり、DTraceコンシューマが-pを使用してDTrace以外のコンポーネントの操作を監視できるオプションがあります。
-
追加されたプロバイダ
新しいネットワーク・プロバイダは、
ip:::send,ip:::receive,ip:::drop-inおよびip:::drop-outをサポートするIPプロバイダを含め、その他の実装および適切なトランスレータと互換性のあるパラメータが追加されました。 IPv4とIPv6の両方がサポートされます。 -
有効化されたプローブ
DTraceはis-enabledプローブをサポートしています。これは、プローブが有効になっているときに異なるコードを実行できる条件であるため、それらのプローブが非アクティブであるときに特定のプローブにのみ必要となるコストの高いデータの収集を回避できます。
-
一般的なバグ修正
安定性とパフォーマンスを向上させるために多数のバグ修正が適用されています。