このセクションでは、このリリースで新しく追加された、プラットフォームとパフォーマンスの拡張機能について説明します。これらの機能により、Oracle Solaris を SPARC ベースおよび x86 ベースのシステム用に最適化できるため、パフォーマンスが向上し、システムのより優れた診断が可能になります。
Oracle Solaris 11.4 リリースでは、Oracle Solaris システムが発行する SCSI コマンドやタスク管理関数を追跡するように設計された新しい DTrace SCSI プロバイダを導入しています。SCSI プロバイダには次の利点があります。
内部構造を知らなくても Oracle Solaris システム上の SCSI コマンドを追跡できます
SCSI T10 標準にできるだけ準拠したプローブおよび構造が含まれています
別の層にある I/O トラフィックを追跡する DTrace I/O プロバイダに同等の機能を提供します
新しいプローブを使用する scsitrace スクリプトを提供します
次の例は、SCSI ターゲットのリセットを特定する 1 行形式のトレースを示しています。
# dtrace -n 'scsi:::tmf-request /(args[1] == SCSI_TMF_TARGET_RESET) && (args[0]->addr_path != "NULL")/ { printf("Target Reset sent to %s", args[0]->addr_path);}'
詳細は、Oracle Solaris 12 DTrace (動的トレース) ガイド の iscsi Providerを参照してください。
fileops プロバイダは、Oracle Solaris の開発者よりも管理者をより対象とした標準の UNIX ファイル操作のプローブをすべて公開します。たとえば、このプロバイダではすべてのファイルシステム (擬似ファイルシステムを含む) に関する read または write の待機時間情報を表示できます。
fileops プローブは、open、close、read、write などのファイル操作に関連しています。これらのプローブは、ファイルシステムタイプに固有のものでも、外部ストレージデバイスへの I/O に依存するものでもありません。たとえば、fileops:::read プローブは、データがディスクから取得されようが、メモリーにキャッシュされようが、ファイルからのすべての読み取りに対して発行されます。
read プローブを使用すると、さまざまなファイルシステムタイプで読み取り待機時間を監視できます。たとえば、次のように設定できます。
fileops:::read { @[args[0]->fi_fs] = quantize(args[1]); }
結果となる出力は、システム上のすべてのファイルシステムタイプを対象にした読み取り回数と読み取り待機時間のグラフになります。
詳細は、Oracle Solaris 12 DTrace (動的トレース) ガイド の fileops Providerを参照してください。
Oracle Solaris 11.4 リリースでは、プロトコル情報が含まれるネットワークスタック内のイベントを監視するための既存の DTrace MIB プロバイダが拡張され、TCP、UDP、および IP 接続を特定できるようになりました。
詳細は、Oracle Solaris 12 DTrace (動的トレース) ガイド の mib Providerを参照してください。
新しいアクション pcap() が DTrace に追加されました。pcap() アクションでは次のいずれかを実行します。
tracemem() で行われるようにパケットデータを表示しますが、データは 1 つにまとめられて連続するバッファーに入れられます。
freopen() に取得ファイルが指定されている場合、pcap() アクションは libpcap 関数の pcap_dump() を介してパケットデータを取得し、パケット取得ファイルに書き込みます。DTrace では、そのパケットデータを使用して次を実行します。
プローブコンテキストでパケットデータを収集します。
パケットデータを 1 つにまとめて連続するバッファーに入れます (パケットデータが連続するバッファーにまだ入っていない場合)。
データの収集時に呼び出されていた pcap_dump() 関数を介してデータを指定されたファイルにダンプします。
次の pcap() アクションでは、tracemem() で行われるように、メモリーを stdout にダンプします。
pcap(mblk, protocol);
次の呼び出しでは、パケットデータに現在の pid を指定するサフィックスを付けて取得ファイルにダンプします。
freopen("/tmp/cap.%d", pid); pcap(mblk, protocol);
これにより、パケットトレースをプロセス順やサービス順などに並べることができます。freopen() は破壊アクションに分類されるため、上記のスクリプトでは –w (「destructive」) dtrace オプションを指定する必要があります。pcap() アクションは破壊アクションではありません。
DTrace には、次の例に示すように、任意のタイプを表示する新しい print() アクションがあります。
# dtrace -q -n 'fop_close:entry {print(*args[0]);exit(0)}' vnode_t { v_lock = { _opaque = [ NULL ] } v_flag = 0x0 v_count = 0x1 v_data = 0xffffc10054425378 v_vfsp = specfs`spec_vfs v_stream = 0xffffc100623354e8 v_type = VCHR v_rdev = 0xee00000026 v_vfsmountedhere = NULL v_op = 0xffffc10029d98040 v_pages = NULL v_filocks = NULL v_shrlocks = NULL v_nbllock = { _opaque = [ NULL ] } v_cv = { _opaque = 0x0 } v_pad = 0xbadd v_count_dnlc = 0x0 v_locality = NULL v_femhead = NULL v_path = "/devices/pseudo/udp@0:udp" v_rdcnt = 0x0 v_wrcnt = 0x0 v_mmap_read = 0x0 v_mmap_write = 0x0 v_mpssdata = NULL v_fopdata = NULL v_vsd_lock = { _opaque = [ NULL ] } v_vsd = NULL v_xattrdir = NULL v_fw = 0xbaddcafebaddcafe } #
詳細は、Oracle Solaris 12 DTrace (動的トレース) ガイド の print Actionを参照してください。
カーネル統計 (kstats) v2 フレームワークは、以前の kstat フレームワークと比べて、パフォーマンスが向上し、いくつかの最適化機能が追加されました。追加された新しい重要なコンポーネントの一部は次のとおりです。
v2 kstats を作成および操作するための機能を提供するカーネル API。kstats は一意の URI で識別され、kstat と、kstat に含まれる名前と値のペアの両方に対するメタデータが含まれています。この API では、kstat で報告する値を記述できます。
カーネルで作成された v2 kstats にアクセスできる libkstat2 ライブラリ。kstats は一意の URI によって検索され、ハッシュマップで表示されます。開発者は特定の kstat URI レベルにあるイベントにサブスクライブでき、URI ツリー内のそれらの下にある kstats が URI ツリー内のそれらよりも下位で追加または削除されたときに通知を受け取ります。
kstat に CLI でアクセスできる /usr/bin/kstat2 ユーティリティー。この新しいユーティリティーは、システムで使用できる kstats を調べ、コマンド行に指定された条件に一致するそれらの統計情報を報告します。その後、一致する各統計が、その URI および実際の値とともに出力されます。人間が判読可能な形式、構文解析可能な形式、JavaScript Object Notation (JSON) 形式など、いくつかの異なる出力形式がサポートされています。
カーネル API については、kstat2_create(9F)、kstat2_create_with_template(9F)、および kstat2_create_histogram(9F) の各マニュアルページを参照してください。libkstat2 ライブラリについては、libkstat2(3LIB) および kstat2(3KSTAT2) のマニュアルページを参照してください。kstat2 ユーティリティーについては、kstat2(8) のマニュアルページを参照してください。
Oracle Solaris 11.4 にはコアファイル診断機能が含まれており、この機能では、ユーザーランドのコアファイルから基本的な遠隔測定情報のサマリーを提供し、FMA アラートを発してユーザーに通知し、診断コア保持ポリシーや SMF ケースの関連付けを提供します。
診断コアファイルには必要なコンテンツのみが含まれるため、コンテンツのサイズは小さくなります。コアファイルは、テキストサマリーファイルの生成後に削除され、それによってディスク容量が削減されます。FMA では、スタック診断など、その他の新しい機能を使用して、Oracle データベースのサマリーファイル内のスタックで既知の問題を検索できます。保持ポリシーを使用すると、coreadm コマンドで診断コアポリシーを設定できます。coreadm コマンドには、コアを即座に削除したり、一定数のコアをしばらくの間保持したりするなどの機能もあります。ケースの関連付け機能は、sw-diag-response 診断エンジン用です。ソフトウェアサービスのエラーにつながるコア診断のすべてのアラートは、各イベントのスタックデータと環境データのセットとともに表示できます。
ユーザーは診断コアをこれまで以上に制御できるようになりました。ソフトウェアサービスが正しく動作せず、サービス停止になった場合、管理者はサービスのエラーにつながったすべてのイベントを簡単かつ迅速に表示したり、エラーが発生したプロセスやそのコードの実行のどこで各プロセスのエラーが発生したかについてより優れた通知を受け取ったりできます。
詳細は、coreadm(8) のマニュアルページを参照してください。
Oracle Solaris 11.4 では、pfiles コマンドでコアファイル名を引数として受け入れたり、コアダンプを実行するプロセスによって開かれたファイル記述子に関する情報を表示したりできます。この機能は、プロセスのコアダンプをデバッグしてダンプの根本原因を特定する場合にさらに役立ちます。
以前の Oracle Solaris リリースとは異なり、Oracle Solaris 11.4 では、pfiles コマンドによって実行中のターゲットプロセス内で開いているファイルのデータの取得中にそのプロセスが停止することがなくなりました。
詳細は、proc(1) のマニュアルページを参照してください。
fsstat コマンドには、read、write、および readdir の各操作の待機時間情報を報告する新しい –l オプションが含まれています。この待機時間情報は物理的な I/O 操作とは無関係であるため、アプリケーションの観点からファイルシステムのパフォーマンスを表すものとなります。この機能を使用すると、ファイルシステムのタイプまたは個々のファイルシステムでのファイルシステム待機時間を監視できます。この機能は、ファイルシステムのパフォーマンスに関する問題のトラブルシューティングに役立ちます。
詳細は、fsstat(8) のマニュアルページを参照してください。
Oracle Solaris 11.4 では、可観測性を高めるために、SCSI I/O 応答時間または I/O 待機時間の分布情報を提供するようになりました。I/O 応答時間の分布を使用すると、応答時間の外れ値を特定できます。分布は、linear、log2-based、および log10-basedという 3 つの異なる x スケールオプションを使用してヒストグラムに格納されます。分布を表示するには、iostat コマンドを使用します。–L オプションを –x および –Y オプションと組み合わせて追加すると、ヒストグラムを表示できます。分布情報は、パフォーマンスに関する問題の調査で使用できます。