我正在尝试使用以下命令增加 SSD 的队列深度值:
echo 64 > /sys/block/sda/device/queue_depth
但我收到以下错误:
bash: echo: write error: Invalid argument
我尝试使用tee
甚至像vim
and 这样的编辑器,nano
但仍然看到这个错误。此服务器上有 4 个 SSD (sd[ad]),并且所有 SSD 都会发生此错误。
操作系统是操作系统7内核版本是3.10.0-327.18.2.el7.x86_64。
答案1
也许你的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
。
存在一些与 NCQ 相关的错误,尤其是 SSD。您应该做一些基准测试来检查 NCQ 是否对您有任何好处,并进行一些测试(排队的)TRIM 是否可以在不损坏数据的情况下工作(当前内核仅通过将某些设备列入黑名单来修复这些问题)。