我们的集群系统目前在CentOS7下运行,禁用SSD和NCQ。 在I / O繁重的使用场景中,预计会有什么样的性能下降?
我不是除了一个确切的答案,因为我知道它主要取决于应用程序,硬件和networking,但只是一个想法会很好。
NCQ在这里重新排列队列读/写操作,以最大限度地减less磁头寻找,最大限度地提高性能。 与机械盘和NCQ的一个很好的基准可以在这里find
然而,与通常情况相反,NCQ对固态硬盘更为重要。 原因是,虽然他们没有头,但由于其非常低的延迟命令排队对于提取最高性能变得非常关键。
考虑一下:如果AHCI只有一个32位队列,NVMe有64k队列,每个队列有64k条目。
NCQ是一项技术,可以让驱动器重新sorting读取和写入请求的服务顺序。
固态硬盘为您节省了硬盘驱动器的搜寻时间,但实际上读取和写入NAND芯片并不是特别快。 SSD通过并行读取和写入多个NAND裸片来解决这个问题。
为了实现这种SSD,依靠三种策略:对于大IO请求,将请求分割成多个裸片,通过分割并写入部分数据来并行地分离裸片。 对于读取数据,希望也可以在模具上分割,并且可以并行读回。
对于较小的IO写入负载,SSD通常将一堆内存写入到板载内存中,并将它们全部写入到不同的NAND裸片中。 这就是为什么SSD可以具有如此高的随机写入性能。
对于小型IO读取或混合型工作负载,SSD将在命令队列中按顺序处理请求,尽量保持尽可能多的NAND芯片并行工作。 如果启用NCQ,则SSD只能执行此操作。 这可以在IO繁重的工作负载上产生巨大的差异。 对于AHCI,我已经看到高达10倍的差异,而NVMe超过了100倍。
如果您曾经从基准testing应用程序(如CrystalDiskMark或类似软件)中看过SSD的基准testing结果,则可以看到它们通常会提供4k随机读取结果,包含或不包含队列深度。 如果NCQ被禁用,这两个数字之间的差异很小,而NCQ使能是巨大的。 例如, 这个Bit技术评论 ,把三星950 PRO 512GB(一个NVMe驱动器)的QD1 4k随机读取结果放在60MB / s,但同一驱动器的QD32 4k随机读取结果是1261 MB / s。
NCQ帮助光盘重新排列扇区读/写操作,以支持速度。 以较less的头部动作为目标。 如果您使用的是SSD而不是旋转磁盘,NCQ的速度赢不太明显。