NCQ是什么
NCQ被称为“全速命令队列(Native Command Queuing,NCQ)”。设计用于改进在日益增加的负荷情况下硬盘的性能和稳定性的技术。当用户的应用程序发送多条指令到用户的硬盘,NCQ硬盘可以优化完成这些指令的顺序,从而降低机械负荷达到提升性能的目的。 NCQ技术是一种使硬盘内部优化工作负荷执行顺序,通过对内部队列中的命令进行重新排序实现智能数据管理,改善硬盘因机械部件而受到的各种性能制约.
如何开启禁用NCQ
硬件和软件的设置缺一不可。用户除了拥有一个支持NCQ技术的硬盘外,还需要留意主板芯片组是否支持。
启用NCQ:
echo 31 > /sys/block/sdX/device/queue_depth
禁用NCQ:
echo 1 > /sys/block/sdX/device/queue_depth
可能用到的地方
报错:failed command: WRITE FPDMA QUEUED
解决办法:关闭NCQ
sudo vi /etc/default/grub在最后添加GRUB_CMDLINE_LINUX="libata.force=noncq"(上面的也可以)
备注:查询了相关的资料,没有权威和可靠的理由,但是客户方验证这个问题是可以使用这个方法来解决的。猜测是兼容性问题导致报错,且跟客户沟通(客户机器io正常情况下在50MB/s以下),关闭ncq之后io没有明显的波动