日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
WITNESS(4) FreeBSD カーネルインタフェースマニュアル WITNESS(4) 名称 witness -- ロック検証機能 書式 options WITNESS options WITNESS_COUNT options WITNESS_KDB options WITNESS_NO_VNODE options WITNESS_SKIPSPIN 解説 witness モジュールは、各スレッドによるロックの取得と開放の経過を追いま す。それは、また、互いに取得されるロックの順序の経過を追います。ロックが 取得されるたびに、witness は、ロックが間違った順序で取得されていないかを 確かめるためにこれらの 2 つのリストを使用します。ロックの順序違反が検出さ れるなら、メッセージは、問題となっているロックの関連と位置の詳細をカーネ ルコンソールまたはログ記録に出力します。また、witness は、順序違反が起こ るとき、カーネルデバッガに落とすように設定することもできます。 また、witness コードは、非再帰的なロックで再帰的に処理しないことを検証す るような、他の様々な状態をチェックするか、または別のスレッドによって保持 される共有されるロックでアップグレードを試みます。これらのチェックのどれ かが失敗するなら、カーネルは、パニックします。 WITNESS_COUNT カーネルオプションは、カーネルで追跡される witness エントリ の最大の数を制御します。エントリの最大の数は、debug.witness.count sysctl を通して問い合わすことができます。また、それは、debug.witness.count 環境 変数を通して loader(8) から設定することができます。 WITNESS_NO_VNODE カーネルオプションは、vnode(9) オブジェクトの間のロック 問題を無視するように witness に伝えます。 ロック順序違反が検出されるとき、カーネルデバッガに入るかどうかを制御する フラグは、さまざまな方法で設定することができます。デフォルトで、フラグ は、オフですが、WITNESS_KDB カーネルオプションが指定されるなら、フラグ は、デフォルトでオンです。また、debug.witness.kdb 環境変数またはカーネル が debug.witness.kdb sysctl を通してブートした後に loader(8) からそれを設 定することができます。フラグが 0 に設定されるなら、デバッガには入りませ ん。フラグが 0 でなければ、デバッガに入ります。 また、witness コードは、スピンミューテックス (mutex) でのすべてのチェック をスキップするために設定することができます。デフォルトでは、このフラグ は、デフォルトでオフですが、WITNESS_SKIPSPIN カーネルオプションを指定する ことによって、変更することができます。また、loader(8) 環境変数 debug.witness.skipspin を通してフラグを設定することができます。変数が 0 以外の値に設定されるなら、スピンミューテックス (mutex) は、スキップされま す。カーネルがいったんブートすると、このフラグの状態は、検査できますが、 読み込み専用 sysctl debug.witness.skipspin を通して設定することはできませ ん。 sysctl debug.witness.watch は、システムの目撃の関与のレベルを指定します。 1 の値は、目撃が有効にされると指定します。0 の値は、目撃が無効にされると 指定しますが、再びそれを有効にすることができます。これは、システムに少量 のオーバヘッドをもたらします。-1 の値は、witness が永久に無効にされると指 定し、再び有効にすることができません。sysctl debug.witness.watch は、 loader(8) を通して設定することができます。 sysctl debug.witness.output_channel は、witness によって発行される警告を 表示するために使用される出力チャネルを指定します。指定できる値は、警告 が、システムコンソールに印刷 (表示) されることを示す、`console'、警告が log(9) を通してログ記録されることを示す、`log' と `none' です。この sysctl は、loader(8) によって設定することができます。 また、witness コードは、witness と ddb(4) の両方がカーネルにコンパイルさ れるなら、3 つの特別の ddb(4) コマンドを提供します: show locks [thread] 各ロックがスレッドによって最後に獲得されたファイル名と行番号とともに、ス レッドによって保持されたロックのリストをカーネルコンソールに出力します。 オプションの thread 引数は、TID、PID またはスレッドの構造体へのポインタの いずれかを指定できます。thread が指定されないなら、現在のスレッドによって 保持されたロックが表示されます。 show all locks システム中のすべてのスレッドによって保持されたロックのリストをカーネルコ ンソールに出力します。 show witness 現在の順序リストをカーネルコンソールにダンプします。コードは、スリープ ロックのすべてのためのロック順序ツリーを最初に表示します。そして、スピン ロックのすべてのためのロック順序ツリーを表示します。最終に、まだ取得され ていないロックのリストを表示します。 関連項目 ddb(4), loader(8), sysctl(8), mutex(9) 歴史 witness コードは、BSD/OS 5.0 ではじめて登場し、そこから FreeBSD 5.0 に取 り込まれました。 FreeBSD 11.4 November 18, 2015 FreeBSD 11.4