33.6. 汎用ブロックデバイスのチューニングパラメーター
ここにリストされている一般的なチューニングパラメーターは、/sys/block/sdX/queue/
ディレクトリーにあります。
以下のチューニングパラメーターは、I/O スケジューラーチューニングとは別のパラメーターで、全 I/O スケジューラーに適用されます。
add_random
-
一部の I/O イベントは、
/dev/random
のエントロピープールに貢献します。これらの貢献のオーバーヘッドが測定できるレベルになった場合には、このパラメーターを0
に設定してください。 iostats
デフォルトでは、
iostats
は有効で、デフォルト値は1
です。iostats
値を0
に設定すると、デバイスの I/O 統計の収集が無効になり、I/O パスでのオーバーヘッドが少し削除されます。また、iostats
を0
に設定すると、特定の NVMe ソリッドステートストレージデバイスなど、非常に高性能なデバイスのパフォーマンスが若干向上します。特定のストレージモデルで無効にするようにベンダーからの指示がない限り、iostats
は有効のままにしておくことを推奨します。iostats
を無効にすると、デバイスの I/O 統計が/proc/diskstats
ファイルからなくなります。I/O 情報は、/sys/diskstats
ファイルの内容をソースとしており、sar
やiostats
などの I/O ツールの監視に使用します。したがって、デバイスのiostats
パラメーターを無効にすると、デバイスは I/O 監視ツールの出力に表示されなくなります。max_sectors_kb
I/O 要求の最大サイズを KB 単位で指定します。デフォルト値は
512
KB です。このパラメーターの最小値は、ストレージデバイスの論理ブロックサイズで決まります。このパラメーターの最大値は、max_hw_sectors_kb
の値で決まります。Red Hat は、
max_sectors_kb
を常に最適な I/O サイズと内部消去ブロックサイズの倍数にするように推奨しています。0 が指定されているか、ストレージデバイスによる指定がない場合には、どちらかのパラメーターのlogical_block_size
の値を使用します。nomerges
-
要求をマージは、ほとんどのワークロードで有用です。ただし、デバッグの目的では、マージを無効にすると便利です。デフォルトでは、
nomerges
パラメーターは0
に設定されており、マージが有効です。単純な 1 回だけのマージを無効にするにはnomerges
を1
に設定します。すべてのタイプのマージを無効にするには、nomerges
を2
に設定します。 nr_requests
-
キューに配置可能な最大 I/O 数です。現在の I/O スケジューラーが
none
の場合は、この数値を減らすことができますが、それ以外の場合は数字の増減が可能です。 optimal_io_size
- このパラメーターで最適な I/O サイズを報告するストレージデバイスもあります。この値が報告される場合は、できるだけ報告された最適な I/O サイズに合わせその倍数の I/O をアプリケーションで発行させることを推奨しています。
read_ahead_kb
連続読み込み操作中にオペレーティングシステムが読み取ることができる最大キロバイト数を定義します。その結果、必要な情報は、次の連続読み込みのカーネルページキャッシュにすでに存在するので、読み取り I/O のパフォーマンスが向上します。
read_ahead_kb
の値を大きくすると、デバイスマッパーは効果を得られます。開始点として、各デバイスに対して128
KB の値に指定すると適切です。ディスクのread_ahead_kb
の値を、要求キューのディスクのmax_sectors_kb
まで増やすと、大型のファイルの連続読み込みが行われるアプリケーション環境でパフォーマンスが向上する可能性があります。rotational
-
一部のソリッドステートディスクは、ソリッドステートのステータスを正しく公開せず、従来の回転ディスクとしてマウントされます。スケジューラーで不要なシーク時間短縮ロジックを無効にするには、
rotational
の値を0
に手動で設定します。 rq_affinity
-
rq_affinity
のデフォルト値は1
です。これは、発行した CPU コアと同じ CPU グループにある CPU コア 1 つで I/O 操作を完了します。I/O 要求を発行したプロセッサーでのみ I/O 操作を完了するには、rq_affinity
を2
に設定します。上記の 2 つの機能を無効にするには、0
に設定します。 scheduler
-
特定のストレージデバイスにスケジューラーまたはスケジューラーの優先度を設定するには、
/sys/block/devname/queue/scheduler
ファイルを編集します。ここで、devname は設定するデバイスの名前に置き換えます。