日本語 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
NVME(4) FreeBSD カーネルインタフェースマニュアル NVME(4) 名称 nvme -- NVM Express コアドライバ 書式 このドライバをカーネルにコンパイルするためには、次の行を利用者のカーネル 設定ファイルに置きます: device nvme または、ブート時にモジュールとしてドライバをロードするためには、次の行を loader.conf(5) に置きます: nvme_load="YES" また、ほとんどのユーザは、パーティション化することができる、ディスクデバ イスとして NVM Express 名前空間を公開するために nvd(4) と nda(4) を有効に すべきです。NVM Express 規約では、名前空間は、SCSI LUN とほぼ等価であるこ とに注意してください。 解説 nvme ドライバは、次のように、NVM Express (NVMe) コントローラのサポートを 行います: • ハードウェアの初期化 • CPU ごとの IO キューのペア (pair) • nvd(4) または nda(4) のような NVMe 名前空間の消費者を登録するための API • 名前空間に NVM コマンドを提示するための API • コントローラのための ioctl と名前空間の設定と管理 nvme ドライバは、形式 /dev/nvmeX でコントローラのデバイスノードを作成し、 形式 /dev/nvmeXnsY で名前空間デバイスノードを作成します。NVM Express の仕 様は、0 ではなく 1 で名前空間の番号付けを開始します、そしてこのドライバ は、その仕様に従うことに注意してください。 設定 デフォルトで、nvme は、十分な MSI-X ベクトルと NVMe キューのペアを割り付 けることができるなら、CPU ごとに I/O キューのペアを作成します。十分なベク トルまたはキューのペアが利用可能でないなら、nvme(4) は、キューのペアの小 さな数を使用し、キューのペアごとに複数の CPU を割り当てます。 すべての CPU によって共有される単一の I/O キューのペアを強制するために は、loader.conf(5) で次の調整変数の値を設定します: hw.nvme.per_cpu_io_queues=0 I/O キューのペアごとに複数の CPU を割り当てるために、それによって、デバイ スによって消費された MSI-X ベクトルの数を減少して、loader.conf(5) の次の 調整変数の値を設定します。 hw.nvme.min_cpus_per_ioq=X すべての nvme ドライバのインスタンスのために古い割り込みを強制するために は、loader.conf(5) で次の調整変数の値を設定します: hw.nvme.force_intx=1 INTx の使用は、CPU ごとの I/O キューのペアを無効にすることを意味すること に注意してください。 能力があるデバイスのためのホストメモリバッファ (Host Memory Buffer) とし て使用するためにバイト単位のシステム RAM の最大の量の制御するためには、次 の調整変数を設定します: hw.nvme.hmb_max デフォルト値は、デバイスごとの物理的メモリサイズの 5% です。 nvd(4) ドライバは、デフォルトでシステムにディスクドライバを提供するために 使用されます。nda(4) ドライバは、また、代わりに使用することができます。 nvd(4) ドライバは、小さなトランザクションと少しの TRIM コマンドでよりよく 実行します。それは、すぐにすべてのコマンドをドライブに直接送ります。 nda(4) ドライバは、大きなトランザクションでよりよく実行して、またよりよい 性能を与える TRIM コマンドを崩壊させます。それは、ドライブにコマンドを キューにいれることができます。BIO_DELETE コマンドを単一の trip に統合しま す。そして、別のものに 1 つのタイプの操作をバイアスするために、CAM I/O ス ケジューラを使用します。nda(4) ドライバを選択するために、loader.conf(5) の次の調整変数値を設定します: hw.nvme.use_nvd=0 この値は、また、次のカーネル設定ファイルに設定されます。 options NVME_USE_NVD=0 エラーがあるとき、nvme は、デフォルトで、コマンドに関する最も関連した情報 だけを印刷 (表示) します。コマンドに関するすべての情報のダンプを有効にす るために、loader.conf(5) の次の調整変数の値を設定します: hw.nvme.verbose_cmd_dump=1 ドライバの以前のバージョンは、ブート時にカードを 2 回リセットしていまし た。これは、不必要で非効率であることがわかったので、ドライバは、現在ドラ イブのコントローラを一度だけリセットしています。古い振る舞いは、次で、 カーネル設定ファイルで復元されます。 options NVME_2X_RESET SYSCTL 変数 次のコントローラレベルの sysctl が現在実装されています: dev.nvme.0.num_cpus_per_ioq (R) 各 I/O キューのペアに関連する CPU の数。 dev.nvme.0.int_coal_time (R/W) マイクロ秒単位で合体タイマ期間に割り込みます。無効にするた めには、0 に設定します。 dev.nvme.0.int_coal_threshold (R/W) コマンド完了の数で合体しきい値に割り込みます。無効にするた めには、0 に設定します。 次のキューのペアのレベル sysctl が現在実装されています。admin キュー sysctl は、dev.nvme.0.adminq の形式をとり、I/O キュー sysctl は、 dev.nvme.0.ioq0 の形式をとります。 dev.nvme.0.ioq0.num_entries (R) このキューのペアのコマンドと完了キューのエントリの数。 dev.nvme.0.ioq0.num_tr (R) このキューのペアに現在割り付けられた nvme_tracker 構造体の 数。 dev.nvme.0.ioq0.num_prp_list (R) このキューのペアに現在割り付けられた nvme_prp_list 構造体の 数。 dev.nvme.0.ioq0.sq_head (R) ドライバによって観測されるようなサブミッションキューのヘッド ポインタの現在の位置。ヘッドポインタは、それがサブミッション キューのコマンドから取り除かれるようにコントローラによって増加さ れます。 dev.nvme.0.ioq0.sq_tail (R) ドライバによって観測されるようなサブミッションキューのテール (tail) ポインタの現在の位置。ドライバは、新しいコマンドが処理され る準備ができていることをシグナルするためにサブミッションキューに コマンドを書き込んだ後にテールポインタを増加します。 dev.nvme.0.ioq0.cq_head (R) ドライバによって観測されるような完了キューのヘッドポインタの 現在の位置。ドライバは、コントローラによって知らされた完了エント リで終了した後にヘッドポインタを増加します。 dev.nvme.0.ioq0.num_cmds (R) このキューのペアで提示されたコマンドの数。 dev.nvme.0.ioq0.dump_debug (W) この sysctl に 1 を書き込むことは、サブミッションの満杯の内容 とコンソールへの完了キューをダンプします。 通常の pci アタッチメントに加えて、nvme ドライバは、ahci(4) デバイスへの アタッチをサポートします。Intel の急速記憶域テクノロジ (Rapid Storage Technology; RST) は、Windows の制限のために AHCI デバイスの後ろに nvme デ バイスを隠します。しかしながら、これは、FreeBSD カーネルからそれを効果的 に隠します。この制限のまわりで動作するために、FreeBSD は、AHCI デバイスが RST をサポートし、それが有効にされるとき、検出します。詳細については、 ahci(4) を参照してください。 関連項目 nda(4), nvd(4), pci(4), nvmecontrol(8), disk(9) 歴史 nvme デバイスドライバは、FreeBSD 9.2 ではじめて登場しました。 作者 nvme ドライバは、Intel によって開発され、EMC の Joe Golio からの貢献と共 に、Jim Harris <jimharris@FreeBSD.org> によって最初に書かれました。 このマニュアルページは、Jim Harris <jimharris@FreeBSD.org> によって書かれ ました。 FreeBSD 13.2 June 6, 2020 FreeBSD 13.2