为什么队列深度 32 的 SSD 的 mb/s 比队列深度 1 的高(很多)?

use*_*666 5 performance ssd

所以基本上在课堂上(在数据库课程期间)我们必须安装并运行 CrystalDiskMark 并分析数字。

我唯一不太明白的是,我的计算机(使用 SSD)在队列深度 32 时的 mb/s 数高于队列深度 1 时的 mb/s 数。

如果我没有记错的话,队列深度是等待处理的任务量,其中 1 通常适用于普通用户,而 32 则更多适用于服务器。

在 4Kb 队列深度 1 时,读取速度为 31,74 mb/s,写入速度为 24,13 mb/s。在 4Kb 队列深度为 32 时,读取速度为 163,6 mb/s,写入速度为 60,68 mb/s。

对于阅读来说,这个数字是写作的五倍以上,甚至是写作的两倍以上。为什么在 32 队列深度时它具有更多的 mb/s?我认为队列深度为 1 时会更高

Zan*_*ynx 6

我认为这个问题实际上没有得到解答,所以这里进行了一个简单的尝试。

SSD 在队列深度较高时速度更快,原因如下:

  1. 它们由多个闪存芯片构建而成。简单的说他们里面都是RAID 0,但是还是有些相似的。多个闪存芯片可以同时为请求队列提供服务。

  2. 闪存速度如此之快,以至于响应请求和获取新请求之间的延迟是该过程的重要组成部分。对于硬盘来说,与旋转延迟和磁头寻道时间相比,响应/请求延迟是微不足道的。但对于 SSD,等待的比例要大得多。拥有请求队列可以让 SSD 在响应早期工作后完成更多工作。


Ƭᴇc*_*007 3

\n

要测试的最常见的队列深度是队列深度 1,这是典型的轻量消费者工作负载,以及队列深度 32,这代表在服务器(例如 Web 服务器、数据库服务器等)。SSD 在该范围内的最佳性能取决于驱动器\xe2\x80\x99s 固件算法。针对高或低队列深度进行优化,或者反之亦然不一定是坏事,而是一个设计决策。

\n
\n\n

来源

\n\n

因此,如果您正在测试的驱动器已针对服务器使用进行了优化,那么它可能/将会/应该在更长/更深的队列中比具有浅队列的驱动器(如低端台式机驱动器)表现得更好。

\n\n

另请记住,驱动器控制器本身也在 QD 的处理方式以及一次可以访问队列的深度方面发挥着作用。

\n\n

有关队列深度和驱动控制器的更多信息

\n\n

一个好的驱动控制器可以确定哪些请求依赖于哪些请求以及请求的类型。然后,它可以使用此信息来决定命令传递到驱动器的顺序,从而优化吞吐量。

\n\n

因此,一般来说,排队允许驱动子系统(操作系统、控制器、驱动器等)确定运行命令的最佳顺序。如果队列深度仅为 1,则它一次仅处理 1 个命令,而这些命令无法进行优化。

\n