次のコマンドを使用して、SSDのキューの深さの値を増やしようとしています。
echo 64 > /sys/block/sda/device/queue_depth
しかし、次のエラーが発生します。
bash: echo: write error: Invalid argument
tee
や、vim
やnano
などのエディターを使用してみましたが、それでもこのエラーが表示されます。このサーバーには4つのSSD(sd [a-d])があり、このエラーはそれらすべてで発生します。
OSはCentOS 7で、カーネルバージョンは.10.0-327.18.2.el7.x86_64です。
SSDはこのキューの深さをサポートしていないのでしょうか?
# hdparm -I /dev/sda
/dev/sda:
ATA device, with non-removable media
Model Number: M4-CT064M4SSD2
[...]
Capabilities:
LBA, IORDY(can be disabled)
Queue depth: 32
または、1
、2
、3
、...を試して、カーネルが使用できる最大キュー深度を見つけてください。
1
より大きい値を設定できない場合は、カーネルで一般的にNCQが無効になっている可能性があります。 /proc/cmdline
でlibata.force=noncq
などを確認してください。
特にSSDに関して、NCQ関連のバグがいくつかありました。いくつかのベンチマークを実行して、NCQが何らかの形でメリットがあるかどうかを確認し、(キューに入れられた)TRIMがデータを破損せずに機能するかどうかをテストする必要があります(現在のカーネルは、一部のデバイスをブラックリストに登録することによってのみこれらの問題を修正します)。