控制NVME的制作方法

文档序号:31184049发布日期:2022-08-19 18:37阅读:109来源:国知局
控制NVME的制作方法
控制nvme
tm
设备中的i/o q连接


背景技术:

1.非易失性存储器(nvm)一种类型的计算机存储器,其在电源循环期间保留其内容,因此能够用作存储。与需要电源来保留数据的易失性存储器相比,nvm可以继续存储数据,即使是在计算机电源关闭之后也是如此。关于nvm,nvm express
tm
(nvme
tm
) 是访问nvm的存储接口规范。
附图说明
2.以下具体实施方式参考附图,其中:
3.图1是根据示例的、包括连接至nvme
tm
控制器的多个主机和nvme
tm
存储设备的系统的框图;
4.图2是根据示例的、包括处理资源和机器可读存储介质的计算系统的框图,所述机器可读存储介质编码有示例指令以管理nvme
tm
控制器与多个nvme
tm
存储设备之间的多个i/o q连接;
5.图3是根据示例的、用于管理nvme
tm
控制器与多个nvme
tm
存储设备之间的多个 i/o q连接的方法的流程图;以及
6.图4a、4b、4c和4d是根据另一示例的、用于管理nvme
tm
控制器与多个nvme
tm
存储设备之间的多个i/o q连接的方法的流程图。
具体实施方式
7.nvme
tm
是用于在主机与存储设备(例如,pci express(pcie)总线上的固态驱动器(solid state drive,ssd))之间进行通信的存储接口规范。根据nvme
tm
规范,存储设备可以并行地处理数千个i/o操作。为了向企业级数据中心提供这种优势,nvme
tm
可以在结构上进行扩展,以提高可扩展性和可共享性。就此而言,结构上的nvme
tm
(nvme
‑ꢀ
of
tm
)是灵活的传输抽象层,为nvme
tm
在比如以太网和光纤通道等的广泛的存储网络结构上提供一致的定义。与nvme
tm
规范兼容并且能够处理与nvme规范一致和/或根据其提供的命令(例如,读取命令、写入命令、管理命令等)的存储设备被称为“nvme
tm
存储设备”。“nvme
tm
存储设备”的示例可以包括与nvme
tm
规范兼容的固态驱动器 (ssd)。nvme
tm
在下文中可以被称为“nvme”,并且“nvme
tm
存储设备”在本文中可以被称为“nvme存储设备”或简单地称为“存储设备”。主机可以是可以访问一个或多个nvme存储设备中存储的数据并且将数据写入到一个或多个nvme存储设备中的计算设备。在示例中,主机可以是基于存储在nvme存储设备中的一个或多个处的数据来向(多个)客户端提供数据服务的服务器。
8.nvme规范定义了用于与nvme存储设备通信的接口(例如,寄存器级接口)和命令协议二者。在使用nvme规范的系统中,一个或多个nvme存储设备(例如,包括 (多个)nvme存储设备的(多个)端口)可以被配置成与主机通信。主机与一个或多个nvme存储设备之间的通信可以由nvme控制器实施。nvme控制器,也被称为“头部节点”,可以是在前端的存储阵列控制器,其可以管理后端的一个或多个nvme存储设备,例如ssd。主机可以连接至nvme控制器
上的主机端口,因此将主机端口与主机相关联。在示例中,主机端口可以是物理端口,其用作主机与nvme控制器之间的接口。 nvme控制器与nvme存储设备之间的接口可以基于nvme控制器(例如,包括nvme 控制器的(多个)端口)与nvme存储设备(例如,包括nvme存储设备的(多个)端口)之间共享的若干队列对(即,成对的提交队列和完成队列)。队列对可以位于主机存储器中或位于由nvme存储设备提供的存储器中。在示例中,nvme规范允许每个 nvme存储设备有上至64k个单独的队列对,并且每个队列对可以具有上至64k个条目。一旦配置了队列对,这些队列对可以用于几乎所有使用命令协议的nvme控制器与 nvme存储设备之间的通信。可以使用提交命令经由提交队列来将每条新的条目提交至 nvme存储设备。当处理提交命令时,可以使用完成命令将条目(先前已经与从中检索命令的提交队列相关联)放入完成队列,并且可以生成中断。可以有用于管理操作(例如,创建和删除队列或更新设备上的固件)和用于i/o操作(例如,读取和写入)的独立的队列对。独立的队列对可以避免由于长时间运行管理操作而导致i/o操作的过度延迟。用于nvme控制器与nvme存储设备之间的i/o操作的每个队列对可以被称为nvme 存储设备处的“i/o q连接”。
9.通常,与nvme控制器相比,nvme存储设备可以以更快的速率处理i/o操作。然而,由于单个nvme控制器可以管理后端处的多个nvme存储设备,nvme控制器处的处理负载可能会随多个nvme存储设备中的一个或多个nvme存储设备中的处理负载的增加而成倍增加。因此,nvme控制器可能不能够以最佳速率处理去往和来自多个 nvme存储设备的命令,并且因此前端的nvme控制器与后端的nvme存储设备之间的每秒输入输出操作(iops)可能会减小,从而对性能产生不利影响。因此,nvme控制器可能会成为实现nvme控制器与nvme存储设备之间的高iops的瓶颈。进一步地,在某些情况下,nvme控制器与nvme存储设备之间的i/o q连接的数量可能不足以处理来自主机的传入i/o负载,而这可能会导致nvme存储设备处的i/o操作阻塞。 nvme存储设备处的i/o操作阻塞可能导致nvme存储设备处的时延增加和主机中运行的(多个)应用的超时。
10.本文中描述的示例提供了基于i/o工作负载来动态地扩大或缩小nvme控制器与 nvme存储设备之间的i/o q连接的技术,从而因此提高了存储应用的iops。所述技术可以确定nvme控制器中主机端口的使用时间。主机端口可以与主机相关联并且可以与 nvme存储设备通信。主机端口的使用时间表示主机端口被i/o操作的处理占用的时间段。响应于确定主机端口的使用时间低于主机端口使用阈值并且nvme存储设备处的 i/o q连接的数量小于nvme存储设备的i/o q连接阈值,则nvme控制器可以创建 nvme存储设备的候选列表。i/o q连接阈值表示nvme存储设备可以同时支持以用于服务i/o请求的i/o q连接的最大数量。候选列表可以包括可以考虑进行i/o q连接的选择性调节的nvme存储设备。候选列表中包括的每个nvme存储设备所具有的平均服务时间大于或等于与nvme存储设备相关联的主机端口的平均服务时间。主机端口使用阈值表示主机端口可以被占用用于i/o操作的处理的最大时间量。nvme存储设备的平均服务时间指代nvme存储设备处理i/o操作(例如读取或写入)所花费的平均时间。主机或nvme控制器可以发送i/o请求,包括用于在(多个)nvme存储设备处执行i/o 操作(例如读取或写入)的命令/指令。nvme控制器的主机端口的平均服务时间指代主机端口处理i/o操作所花费的平均时间。对于候选列表中包括的每个nvme存储设备, nvme控制器可以确定nvme存储设备处的i/o请求的处理时间和i/o块大小,并且基于i/o请求的处理时间和i/o块大小选择性地调节nvme存储设备处的i/o q连接的数量。以此
q连接控制指令120可以在控制器110与每个nvme存储设备104-1,

, 104-p之间创建一对i/o q连接。一对i/o q连接中的一个连接(即,一组提交和完成队列)可以专用于读取操作,而这一对i/o q连接中的另一个连接(另一组提交队列和完成队列)可以专用于写入操作。
17.分析指令118可以确定多个主机端口106-1至106-n中的每个主机端口的使用时间。尽管在下文的描述中,参考主机端口106-1和存储设备104-1来描述操作/功能,但也可以关于其他主机端口106-2至106-n中的每个主机端口和存储设备104中的每个存储设备来执行类似的操作/功能。分析指令118可以基于采样间隔内主机端口106-1处的i/o 请求完成的数量来确定主机端口106-1的吞吐量。主机端口106-1处的i/o请求完成可以指代采样间隔期间主机端口106-1处服务/处理的i/o请求。在示例中,主机端口106-1的吞吐量是主机端口106-1处i/o请求完成的数量与采样间隔的比值。
18.进一步地,分析指令118可以确定主机端口106-1的平均服务时间。平均服务时间表示主机端口106-1处理i/o操作(读取或写入)所花费的平均时间。主机端口106-1的平均服务时间可以计算为主机端口106-1的繁忙时间段与采样间隔内主机端口106-1处的i/o请求完成的数量的比值。主机端口106-1的繁忙时间段指代主机端口106-1保持不可用于处理/接收来自主机102(例如主机102-1)的i/o请求的持续时间。主机端口106
‑ꢀ
1的使用时间可以计算为主机端口106-1的吞吐量与主机端口106-1的平均服务时间的乘积。也可以以类似的方式确定主机端口106-2至106-n中的每个主机端口的使用时间。
19.分析指令118可以将主机端口106-1的使用时间与主机端口使用阈值进行比较。在示例中,主机端口使用阈值可以根据主机端口106-1被使用的采样间隔的百分比来表示,例如采样间隔的98%。进一步地,分析指令118还可以检查nvme存储设备(例如存储设备104-1)处i/o q连接的数量是否小于存储设备104-1的i/o q连接阈值。在示例中,分析指令118可以在某个时间点从存储设备104-1接收包括存储设备104-1处存在的i/oq连接的量(即,i/o q连接的数量)的信息。在一些示例中,存储设备104-1可以向控制器110发送注册命令以向控制器110注册存储设备104-1处的现有i/o q连接的数量。注册命令可以包括包含存储设备104-1的现有i/o q连接的数量和(多个)设备参数的信息。分析指令118可以从注册命令中获得包括现有i/o q连接的数量的信息。存储设备104-1的(多个)设备参数可以包括关于存储设备104-1的i/o q连接阈值的信息。i/o q 连接阈值指示存储设备104-1可以同时支持以用于服务i/o请求的i/o q连接的最大数量。在示例中,存储设备104-1的i/o q连接阈值可以取决于存储设备104-1的设备驱动器配置。分析指令118可以从注册命令中包括的(多个)设备参数中获得包括i/o q连接阈值的信息。分析指令118可以将存储设备104-1处的现有i/o q连接的数量与i/o q连接阈值进行比较。
20.响应于确定主机端口106-1的使用时间低于主机端口使用阈值并且存储设备104-1 处i/o q连接的数量小于存储设备104-1的i/o q连接阈值,分析指令118可以创建存储设备的候选列表。候选列表可以包括可以考虑进行i/o q连接的选择性调节的nvme存储设备。如果存储设备104-1的平均服务时间大于或等于主机端口106-1的平均服务时间,则存储设备104-1可以包括在候选列表中。如果存储设备104-1的平均服务时间小于主机端口106-1的平均服务时间,则存储设备104-1不会被添加至候选列表,并且可以考虑将其他存储设备104添加至候选列表。因此,候选列表中包括的每个nvme存储设备所具有的平均服务时间大于或等于与nvme存储设备相关联的主机端口的平均服务时间。与nvme存储设备相关联的主
机端口可以指代nvme系统(例如系统100)中可以访问nvme存储设备的资源的主机端口。
21.尽管参考控制控制器110与存储设备104-1之间的i/o q连接来描述下文中的技术,但是可以采用类似的技术来控制控制器110与存储设备104中的每个存储设备之间的i/oq连接。在示例中,分析指令118可以确定采样间隔内存储设备104-1处的i/o请求完成的数量。存储设备104-1处的i/o请求完成指代采样间隔期间存储设备104-1处服务/处理的i/o请求。分析指令118还可以确定存储设备104-1的繁忙时间段。繁忙时间段可以指示采样间隔期间存储设备104-1可以保持不可用于处理新的i/o请求的时间段。分析指令118可以将存储设备104-1的平均服务时间确定为存储设备104-1的繁忙时间段与存储设备104-1处i/o请求完成的数量的比值。
22.响应于确定存储设备104-1的平均服务时间大于或等于主机端口106-1的平均服务时间,分析指令118可以将存储设备104-1分组到候选列表中。因此,对于存储设备104
‑ꢀ
1至104-p中的每个存储设备,如果存储设备的平均服务时间大于或等于主机端口106-1 的平均服务时间,则所述存储设备可以添加至候选列表。在示例中,考虑存储设备104-1 和104-2包括在候选列表中。
23.分析指令118还可以确定存储设备104-1的访问率。存储设备104-1的访问率定义为采样间隔的每单位时间内存储设备104-1处的i/o请求完成的数量。进一步地,可以基于访问率确定存储设备104-1的吞吐量。在示例中,存储设备104-1的吞吐量可以计算为存储设备104-1的访问率与主机端口106-1的吞吐量的乘积。分析指令118可以将存储设备104-1的服务需求确定为存储设备104-1的访问率与存储设备104-1的平均服务时间的乘积。进一步地,分析指令118可以将存储设备104-1的使用时间确定为主机端口106-1 的吞吐量与存储设备104-1的服务需求的乘积。同样,还可以确定存储设备104-2(包括在候选列表中)的使用时间。
24.在示例中,i/o q连接控制指令120可以确定采样间隔中存储设备104-1处理读取请求的平均时间。读取请求指代来自主机的从存储设备中的一个存储设备读取数据的i/o请求。i/o q连接控制指令120可以检查两个相继的采样间隔内存储设备104-1处理读取请求的平均时间是否有变化。在示例中,可以将第一采样间隔期间存储设备104-1处理第一组读取请求的平均时间与第二采样间隔中存储设备104-1处理第二组读取请求的平均时间进行比较,其中,第一采样间隔和第二采样间隔是相继的采样间隔。基于比较,i/oq连接控制指令120可以确定处理读取请求的平均时间的变化。在示例中,变化可以指示存储设备104-1处理读取请求的平均时间的增加或减少。进一步地,i/o q连接控制指令120还可以检查存储设备104-1的使用时间是否小于存储使用阈值,例如采样间隔的 95%。存储使用阈值表示存储设备104-1可以被占用用于i/o操作处理的最大时间量。
25.响应于确定存储设备104-1处理读取请求的平均时间增加并且存储设备104-1具有小于存储使用阈值的使用时间,则i/o q连接控制指令120可以确定采样间隔期间每秒接收的小i/o块大小的读取请求的数量是否大于或等于读取i/o阈值。在示例中,具有小于或等于4千字节(kb)的i/o块大小的读取请求可以被称为小i/o块大小的读取请求。读取i/o阈值可以指示采样间隔期间存储设备104-1每秒接收的读取请求的特定量,例如 80%。因此,i/o q连接控制指令120可以检查采样间隔期间每秒接收的小i/o块大小的读取请求的数量是否大于或等于存储设备104-1每秒接收的读取请求的80%。
26.响应于确定采样间隔期间每秒接收的小i/o块大小的读取请求的数量大于或等于读取i/o阈值,则i/o q连接控制指令120可以添加与小i/o块大小的读取请求相关联的具有高优先级的i/o q连接。i/o q连接可以包括控制器110与存储设备104-1之间的提交队列和完成队列。i/o q连接专用于存储设备104-1处接收到的小i/o块大小的读取请求。在示例中,添加的i/o q连接可以具有比存储设备104-1处当前服务于读取请求的i/o q 连接高的优先级。因此,可以以更高的速度处理通过添加的i/o q连接服务的i/o请求。
27.在示例中,i/o q连接控制指令120可以确定采样间隔期间每秒接收的大i/o块大小 (例如512kb的i/o块)的读取请求的数量大于或等于读取i/o阈值。响应于确定采样间隔期间每秒接收的大i/o块大小的读取请求的数量大于或等于读取i/o阈值,则i/o q 连接控制指令120可以添加与大i/o块大小的读取请求相关联的具有正常优先级的i/o q 连接。在示例中,添加的i/o q连接可以具有与存储设备104-1处当前正在服务于读取请求的i/o q连接相同的优先级。添加的i/o q连接专用于存储设备104-1接收到的大i/o 块大小的读取请求。
28.响应于确定两个相继的采样间隔内存储设备104-1处理读取请求的平均时间已经减少,或者存储设备104-1具有大于存储使用阈值的使用时间,则i/o q连接控制指令120 可以检查存储设备104-1与控制器110之间是否存在多于一个i/o q连接。进一步地, i/o q连接控制指令120可以确定两个相继的采样间隔内存储设备104-1的服务需求是否有变化。在示例中,可以将第一采样间隔中存储设备104-1的服务需求与第二采样间隔中存储设备104-1的服务需求进行比较以确定服务需求的变化。第一采样间隔和第二采样间隔可以是两个相继的采样间隔。响应于确定两个相继的采样间隔内存在存储设备 104-1的服务需求的减少、并且存储设备104-1与控制器110之间存在多于一个i/o q连接,则i/o q连接控制指令120可以删除存储设备104-1与控制器110之间的i/o q连接。
29.在示例中,i/o q连接控制指令120可以确定采样间隔期间存储设备104-1处理写入请求的平均时间。写入请求指代来自主机的向存储设备104中的一个存储设备写入数据的请求。i/o q连接控制指令120可以检查两个相继的采样间隔内处理写入请求的平均时间是否有变化。在示例中,可以将第一采样间隔中存储设备104-1处理第一组写入请求的平均时间与第二采样间隔中处理第二组写入请求的平均时间进行比较以确定处理写入请求的平均时间的变化。在示例中,第一采样间隔和第二采样间隔可以是相继的采样间隔。在示例中,变化可以指示存储设备104-1处理写入请求的平均时间的增加或减少。进一步地,i/o q连接控制指令120还检查存储设备104-1的使用时间是否小于存储使用阈值。
30.响应于确定存储设备104-1处理写入请求的平均时间增加并且存储设备104-1具有小于存储使用阈值的使用时间,则i/o q连接控制指令120可以确定采样间隔期间每秒接收的小i/o块大小(例如小于或等于4kb的i/o块大小)的写入请求的数量是否大于或等于写入i/o阈值。写入i/o阈值可以指示采样间隔期间存储设备104-1每秒接收的写入请求的特定量,例如80%。因此,i/o q连接控制指令120可以检查采样间隔期间存储设备104-1每秒接收的写入请求的至少80%是否是小i/o块大小。
31.响应于确定采样间隔期间每秒接收的小i/o块大小的写入请求的数量大于或等于写入i/o阈值,则i/o q连接控制指令120可以添加与写入请求相关联的i/o q连接。添加的i/o q连接专用于处理存储设备104-1处的写入请求。在示例中,i/o q连接控制指令 120可
以确定采样间隔期间每秒接收的大i/o块大小(例如512kb的i/o块)的写入请求的数量大于或等于写入i/o阈值。响应于确定采样间隔期间每秒接收的写入请求的数量大于或等于写入i/o阈值,则i/o q连接控制指令120可以添加与写入请求相关联的完成队列。与写入请求相关联的完成队列可以指代控制器110与存储设备104-1之间的、专用于处理存储设备104-1处的写入请求的完成队列。以此方式,如以上所描述的,i/oq连接控制指令120可以基于存储设备104-1处的i/o请求的处理时间和i/o块大小来选择性地调节存储设备104-1处的i/o q连接的数量。同样,以类似的方式,i/o q连接控制指令120可以选择性地调节存储设备104-2处的被认为包括在候选列表中的i/o q连接的数量。因此,对于候选列表中包括的每个nvme存储设备,确定nvme存储设备处的i/o请求的处理时间和i/o块大小,基于此来选择性地调节nvme存储设备处的i/oq连接的数量。
32.图2是根据示例的、包括处理资源202和机器可读存储介质204的计算系统200的框图,所述机器可读存储介质编码有示例指令206、208、210、和212以控制nvme控制器(例如图1的nvme控制器110)与存储设备(例如图1的存储设备104-1)之间的 i/o q连接。
33.在一些示例中,机器可读存储介质204可以由处理资源202访问。处理资源202可以执行存储在机器可读存储介质204上的指令(即,编程或软件代码)。图2的指令206、 208、210、和212在由处理资源202执行时可以实施选择性地调节nvme控制器与存储设备之间的i/o q连接的各个方面。在示例中,指令206和208可以包括在分析指令118 内,并且指令210和212可以包括在图1的i/o q连接控制指令120内。在一些示例中,计算系统200可以包括在nvme控制器(例如,图1的nvme控制器110)中(例如,是其一部分)。为了便于说明,将参考图1来描述图2。在某些示例中,可以执行指令 206至212来执行nvme控制器110的功能和一个或多个方法,例如图3以及图4a、4b、4c和4d中描述的方法300和400。在某些示例中,作为执行指令206至212的替代方案或补充方案,处理资源202可以包括至少一个ic、其他控制逻辑、其他电子电路、或其包括用于执行本文中描述为由nvme控制器110执行的功能的多个电子部件的组合。
34.指令206在由处理资源202执行时可以确定nvme控制器110中的主机端口106-1 的使用时间。与主机102-1相关联的主机端口106-1将与nvme存储设备104-1通信。
35.响应于确定主机端口106-1的使用时间低于主机端口使用阈值并且存储设备104-1 处i/o q连接的数量小于存储设备104-1的i/o q连接阈值,指令208可以创建nvme 存储设备的候选列表。候选列表中包括的每个nvme存储设备(例如nvme存储设备 104-1)所具有的平均服务时间大于或等于与nvme存储设备相关联的主机端口(例如与 nvme存储设备104-1相关联的主机端口106-1)的平均服务时间。
36.对于候选列表中包括的nvme存储设备104-1,指令210在由处理资源202执行时可以确定nvme存储设备104-1处的i/o请求的处理时间和i/o块大小。指令212在由处理资源202执行时可以基于i/o请求的处理时间和i/o块大小来选择性地调节nvme 存储设备104-1处的i/o q连接的数量。
37.指令206至212可以包括各个指令以执行至少图3至图4a、4b、4c和4d中描述的方法(稍后描述)中的一部分。而且,尽管未在图2中示出,但机器可读存储介质204 还可以包括附加的程序指令以执行图3以及图4a、4b、4c和4d中描述的各个其他方法框。
38.图3以及图4a、4b、4c和4d描绘了用于控制nvme存储设备(例如,图1的 nvme存储设
备104)与nvme控制器(图1的nvme控制器110)之间的i/o q连接的示例方法300和400的流程图。为了便于说明,下面参考图1描述示例方法300和400 的执行。尽管下面的描述是参考图1的nvme控制器110进行描述的,然而也可以使用适用于执行方法300和400的其他应用或设备。此外,尽管下面的描述是参考图1的 nvme存储设备104-1进行描述的,然而方法300和400适用于其他nvme存储设备。在一些示例中,可以针对系统100中存在的每个nvme存储设备单独地执行方法300和 400。图3以及图4a、4b、4c和4d中描绘的各个框处的方法步骤可以由nvme控制器 110执行。在一些示例中,方法300和400可以在每个这种方法框处单独地由计算系统 200经由处理资源202执行,所述处理资源执行存储在非暂态机器可读存储介质204中的指令206至212。另外,方法300和400的实施方式不限制于这种示例。尽管图3以及图4a、4b、4c和4d的流程图单独地示出了执行某些功能的特定顺序,但方法300和 400不限于这种顺序。例如,流程图中连续示出的功能可以以不同顺序执行,可以同时或部分同时或以其组合的形式执行。
39.在图3中,在框302处,方法300可以包括确定nvme控制器110中的主机端口 106-1的使用时间。与主机102-1相关联的主机端口106-1将与nvme存储设备104-1通信。在示例中,可以基于采样间隔内主机端口106-1处的i/o请求完成的数量来确定主机端口106-1处的吞吐量。在示例中,主机端口106-2的吞吐量是主机端口106-1处i/o请求完成的数量与采样间隔的比值。进一步地,可以确定主机端口106-1的平均服务时间。平均服务时间表示主机端口106-1处服务i/o请求所花费的平均时间。主机端口106-1的平均服务时间可以计算为主机端口106-1的繁忙时间段与采样间隔内主机端口106-1处的i/o请求完成的数量的比值。主机端口106-1的繁忙时间段指代主机端口106-1保持不可用于处理/接收来自主机102-1的i/o请求的持续时间。主机端口106-1的使用时间可以计算为主机端口106-1的吞吐量与主机端口106-1的平均服务时间的乘积。
40.响应于确定主机端口106-1的使用时间低于主机端口使用阈值并且存储设备104-1 处i/o q连接的数量小于存储设备104-1的i/o q连接阈值,在框304处,方法300可以包括创建nvme存储设备的候选列表。候选列表中包括的每个nvme存储设备(例如 nvme存储设备104-1)所具有的平均服务时间大于或等于主机端口106-1的平均服务时间。候选列表可以包括可以考虑进行i/o q连接的选择性调节的nvme存储设备。
41.在框306处,方法300可以包括对于候选列表中包括的每个存储设备(例如存储设备104-1)确定存储设备104-1处的i/o请求的处理时间和i/o块大小。在框308处,方法300可以包括对于候选列表中包括的存储设备104-1基于i/o请求的处理时间和i/o块大小来选择性地调节存储设备104-1处的i/o q连接的数量。
42.现在转向图4a、4b、4c和4d,在框402处,方法400可以包括基于用户输入配置采样间隔。在框404处,方法400可以包括确定nvme控制器110中的主机端口106-1 至106-n的数量。在框406处,方法400可以包括确定与nvme控制器110相关联的 nvme存储设备104-1至104-p的数量。在示例中,存储设备104可以使用注册请求向 nvme控制器110注册并且因此与nvme控制器110相关联。
43.在框408处,方法400可以包括在nvme控制器110与nvme存储设备(例如 nvme存储设备104-1)之间创建一对i/o q连接。一对i/o q连接中的每个连接可以包括用于读取和写入操作的提交队列以及完成队列。在框410处,方法400可以包括基于采样间隔内的i/o请求
完成来确定主机端口106-1的吞吐量。在示例中,主机端口106-2的吞吐量是主机端口106-1处i/o请求完成的数量与采样间隔的比值。
44.在框412处,方法400可以包括基于主机端口106-1的繁忙时间段和i/o请求完成来确定主机端口106-1的平均服务时间。在示例中,主机端口106-1的平均服务时间可以计算为主机端口106-1的繁忙时间段与采样间隔内主机端口106-1处的i/o请求完成的数量的比值。主机端口106-1的繁忙时间段指代主机端口106-1保持不可用于处理/接收来自主机102-1的i/o请求的持续时间。在框414处,方法400可以包括将主机端口106-1的使用时间计算为主机端口106-1的吞吐量与主机端口106-1的平均服务时间的乘积,缩写为t(u)
hostport

45.在框416,方法400可以包括将t(u)
hostport
与主机端口使用阈值(缩写为t(u)
hostport
threshold)进行比较。进一步地,方法400可以包括检查存储设备104-1处的i/oq连接的数量是否小于存储设备104-1的i/oq连接阈值。i/oq连接阈值指示存储设备104-1可以同时支持以用于服务i/o请求的i/oq连接的最大数量。在示例中,存储设备104-1的i/oq连接阈值可以取决于存储设备104-1的设备驱动器配置。包括i/oq连接阈值的信息可以从包括在控制器110从存储设备104-1接收的注册命令中的(多个)设备参数中获得。
46.响应于确定主机端口106-2的t(u)
hostport
几乎等于或大于t(u)
hostport
threshold或存储设备104-1处的i/oq连接的数量大于或等于存储设备104-1的i/oq连接阈值,方法400的步骤410至416可以针对另一个主机端口(例如主机端口106-2)执行。
47.响应于确定主机端口106-1的t(u)
hostport
低于t(u)
hostport
threshold并且存储设备104-1处的i/oq连接的数量小于存储设备104-1的i/oq连接阈值,方法400可以包括创建与主机端口106-1相对应的nvme存储设备的候选列表。候选列表可以包括可以考虑进行i/oq连接的选择性调节的nvme存储设备。在框418处,方法400可以包括确定nvme存储设备104-1处的i/o请求完成的数量。在框420处,方法400可以包括确定nvme存储设备104-1的访问率。存储设备104-1的访问率定义为采样间隔的每单位时间内存储设备104-1的i/o请求完成的数量。
48.在框422处,方法400可以包括基于访问率来确定nvme存储设备104-1的吞吐量。在示例中,存储设备104-1的吞吐量可以计算为存储设备104-1的访问率与主机端口106-1的吞吐量的乘积。在框424处,方法400可以包括基于nvme存储设备104-1的繁忙时间段和i/o请求完成的数量来确定nvme存储设备104-1的平均服务时间。存储设备104-1的繁忙时间段可以指示采样间隔期间存储设备104-1可以保持不可用于处理新的i/o请求的时间段。
49.在框426处,方法400可以包括将nvme存储设备104-1的平均服务时间与主机端口106-1的平均服务时间进行比较。响应于确定nvme存储设备104-1的平均服务时间大于或等于主机端口106-1的平均服务时间,在框430处,方法可以包括将nvme存储设备分组到nvme存储设备的候选列表中。响应于确定nvme存储设备104-1的平均服务时间小于主机端口106-1的平均服务时间,可以针对nvme存储设备104-2执行步骤418至426以检查nvme存储设备104-2是否要被分组到候选列表中。因此,针对nvme存储设备104中的每个nvme存储设备,可以执行步骤418至426以检查nvme存储设备104-2是否要被分组到候选列表中。考虑将nvme存储设备104-1包括在候选列表中。
50.在框432处,方法400可以包括确定nvme存储设备104-1的服务需求。存储设备 104-1的服务需求可以确定为存储设备104-1的访问率与存储设备104-1的平均服务时间的乘积。在框434处,方法400可以包括基于存储设备104-1的服务需求和主机端口106
‑ꢀ
1的吞吐量来确定nvme存储设备104-1的使用时间(t(u)
storage
)。t(u)
storage
可以确定为存储设备104-1的服务需求与主机端口106-1的吞吐量的乘积。
51.在框436处,方法400可以包括将当前采样间隔期间存储设备104-1处理第一组读取请求的平均时间(当前t(r)
avg
)与先前的采样间隔中存储设备104-1处理第二组读取请求的平均时间(先前t(r)
avg
)进行比较。进一步地,在框436处,方法400可以进一步包括检查nvme存储设备104-1的使用时间(t(u)
storage
)是否小于存储使用阈值 (t(u)
storage threshold),例如采样间隔的95%。
52.响应于确定存储设备104-1处理读取请求的平均时间增加并且存储设备104-1具有小于存储使用阈值(t(u)
storage threshold)的使用时间(t(u)
storage)
(框436的

是’分支),在框438处,方法400可以包括检查采样间隔期间存储设备104-1处每秒接收的小i/o块大小的读取请求的数量是否大于或等于读取i/o阈值。读取i/o阈值可以是采样间隔期间存储设备104-1每秒接收的读取请求的80%。
53.响应于确定采样间隔期间每秒接收的小i/o块大小的读取请求的数量大于或等于读取i/o阈值(框438的

是’分支),在框440处,方法400可以包括添加与nvme存储设备104-1处接收的小i/o块大小的读取请求相关联的具有高优先级的i/o q连接。i/o q连接可以包括nvme控制器110与存储设备104-1之间的提交队列和完成队列。 i/o q连接专用于具有小i/o块大小的读取请求。响应于确定采样间隔期间每秒接收的大 i/o块大小(例如512kb的i/o块)的读取请求的数量大于或等于读取i/o阈值(框438 的

否’分支),在框442处,方法400可以包括添加与nvme存储设备104-1处接收的大i/o块大小的读取请求相关联的具有正常优先级的i/o q连接。添加的i/o q连接专用于存储设备104-1接收到的大i/o块大小的读取请求。
54.响应于确定存储设备104-1处理读取请求的平均时间减少或存储设备104-1具有几乎等于或大于存储使用阈值(t(u)
storage threshold)的使用时间(t(u)
storage
)(框 436的

否’分支),在框444处,方法400可以包括检查存储设备104-1与nvme控制器110之间是否存在多于一个i/o q连接。进一步地,在框444处,i/o q连接控制指令120可以检查两个相继的采样间隔内存储设备104-1的服务需求是否有变化。在示例中,可以将第一采样间隔中存储设备104-1的服务需求与第二采样间隔中存储设备104-1 的服务需求进行比较以确定服务需求的变化。第一采样间隔和第二采样间隔可以是两个相继的采样间隔。响应于确定两个相继的采样间隔内存在存储设备104-1的服务需求的减少、并且存储设备104-1与nvme控制器110之间存在多于一个i/o q连接(框444 的

是’分支),在框446处,方法400可以包括删除存储设备104-1与nvme控制器110之间的与读取i/o相关联的i/o q连接。
55.响应于确定两个相继的采样间隔内存储设备104-1的服务需求增加或存储设备104
‑ꢀ
1与nvme控制器110之间存在单个i/o q连接(框444的

否’分支),在框448处,方法400可以包括将当前采样间隔期间存储设备104-1处理第一组写入请求的平均时间 (当前t(w)
avg
)与先前采样间隔中存储设备104-1处理第二组读取请求的平均时间(先前t(w)
avg
)进行比较。进一步地,在框448处,方法400可以进一步包括检查nvme 存储设备104-1的使用时
间(t(u)
storage
)是否小于存储使用阈值(t(u)
storage
threshold),例如采样间隔的95%。
56.响应于确定存储设备104-1处理写入请求的平均时间增加(即,当前t(w)
avg
》先前t(w)
avg
)并且存储设备104-1具有小于存储使用阈值(t(u)
storage
threshold)的使用时间(t(u)
storage
)(框448的

是’分支),在框450处,方法400可以包括确定采样间隔期间每秒接收的小i/o块大小(例如小于或等于4kb的i/o块大小)的写入请求的数量是否大于或等于写入i/o阈值。写入i/o阈值可以是采样间隔期间存储设备104-1每秒接收的写入请求的80%。
57.响应于确定采样间隔期间每秒接收的小i/o块大小的写入请求的数量大于或等于写入i/o阈值(框450的

是’分支),在框452处,方法400可以包括添加与nvme存储设备104-1处接收的写入请求相关联的i/oq连接。i/oq连接可以包括nvme控制器110与存储设备104-1之间的提交队列和完成队列。响应于确定采样间隔期间每秒接收的大i/o块大小(例如512kb的i/o块)的写入请求的数量大于或等于写入i/o阈值(框450的

否’分支),在框454处,方法400可以包括添加与nvme存储设备104-1处接收的写入请求相关联的完成队列。
58.响应于确定存储设备104-1处理写入请求的平均时间减少(即,当前t(w)
avg
《先前t(w)
avg
)或存储设备104-1具有几乎等于或大于存储使用阈值(t(u)
storage
threshold)的使用时间(t(u)
storage
)(框448的

否’分支),在框456处,方法400可以包括检查存储设备104-1与nvme控制器110之间是否存在与写入i/o相关联的多于一个i/oq连接。进一步地,在框456处,方法400可以包括检查两个相继的采样间隔内存储设备104-1的服务需求是否有变化。在示例中,可以将第一采样间隔中存储设备104-1的服务需求与第二采样间隔中存储设备104-1的服务需求进行比较以确定服务需求的变化。第一采样间隔和第二采样间隔可以是两个相继的采样间隔。响应于确定两个相继的采样间隔内存在存储设备104-1的服务需求的减少、并且存储设备104-1与nvme控制器110之间存在多于一个用于写入请求的i/oq连接(框456的

是’分支),在框458处,方法400可以包括删除存储设备104-1与nvme控制器110之间的与写入i/o相关联的i/oq连接。
59.本文中参考图1至图4a、4b、4c和4d描述了示例。应当注意的是,说明书和附图仅说明本主题的原理以及本文中描述的示例,并且不应被解释为限制本主题。尽管本文中可以参考单个nvme存储设备描述一些示例,但示例可以用于若干个nvme存储设备。此外,本文中描述的由系统的部件(例如,nvme控制器、nvme存储设备、或主机)执行的任何功能可以由执行指令(存储在机器可读存储介质上)的部件的至少一个处理资源执行以执行本文中描述的功能。下面已经通过参考几个示例描述了本主题的各种实施方式。
60.本文中使用的术语仅用于描述特定示例的目的,并且不旨在具有限制性。如本文中所使用的,单数形式“一个(a)”、“一种(an)”和“所述(the)”旨在也包括复数形式,除非上下文另外明确指出。如本文中使用的,术语“多个”被定义为两个或两个以上。如本文中所使用的术语“另一”被定义为至少是第二或更多。如本文中使用的,除非另外指示,否则术语“连接的”被定义为联接的或相关联的,无论是没有任何介入元件直接连接还是借助至少一个介入元件间接连接。两个元件可以机械连接、电连接或通过通信信道、路径、网络或系统通信连接。如本文中所使用的术语“和/或”是指并涵盖相关联列举项目的任何和所有可能组合。术语“基于”是指“至少部分地基于”。还应理解的是,尽管术语第一、第二、第三等在本文中可以用于描述各种元件,但是这些元件不应受这些术语的限制,因为这些术语仅用于将一个元件与另一元件区分开,除非另有说明或上下文另有指示。
61.在本文所描述的示例中,被描述为由“指令”执行的功能可以被理解为当由处理资源执行时可以由那些指令执行的功能。在其他示例中,关于指令描述的功能可以通过硬件和编程的任何组合来实施。
62.如本文所使用的,“计算设备”可以是服务器、存储设备、存储阵列、台式计算机或膝上型计算机、交换机、路由器或包括处理资源的任何其他处理设备或装备。在本文所描述的示例中,处理资源可以包括例如包括在单个计算设备中或跨多个计算设备分布的一个处理器或多个处理器。如本文所使用的,“处理器”可以是中央处理单元(cpu)、基于半导体的微处理器、图形处理单元(gpu)、被配置用于取回和执行指令的现场可编程门阵列(fpga)、适用于取回和执行存储于机器可读存储介质上的指令的其他电子电路、或其组合中的至少一者。在本文所描述的示例中,处理资源可以取出、解码和执行存储在存储介质上的指令以执行关于存储在存储介质上的指令所描述的功能。在其他示例中,关于本文所描述的任何指令所描述的功能可以以电子电路的形式、在机器可读存储介质上编码的可执行指令的形式或其组合的形式实施。存储介质可以位于执行机器可读指令的计算设备中或远离计算设备但所述计算设备可访问(例如,经由计算机网络)以供执行。在图1和图4a、4b、4c和4d所示的示例中,nvme控制器110可以由一个机器可读存储介质或多个机器可读存储介质实施。
63.如本文所使用的,“机器可读存储介质”可以是用于包含或存储如可执行指令、数据等信息的任何电子、磁性、光学或其他物理存储装置。例如,本文所描述的任何机器可读存储介质可以是ram、eeprom、易失性存储器、非易失性存储器、闪速存储器、存储驱动器(例如,hdd、ssd)、任何类型的存储盘(例如,压缩盘、dvd等)等中的任何一者或其组合。进一步地,本文所描述的任何机器可读存储介质可以是非暂态的。在本文所描述的示例中,一个或多个机器可读存储介质可以是物品(或制品)的一部分。本说明书(包括任何所附权利要求、摘要和附图)中所公开的全部特征、和/或如此公开的任何方法或过程的所有元素都可以组合为除了至少一些这种特征和/或元素相互排他的组合之外的任何组合。
64.出于说明和描述的目的,已经呈现了各种示例的前述描述。前述描述并非旨在穷举的或限于所公开的示例,并且鉴于以上教导,修改和变型是可能的或者是可以从各种示例的实践中获取的。选择并描述本文所讨论的示例以便解释本公开的各种示例的原理和性质及其实际应用,以使得本领域技术人员能够在各种示例中以及在适合于设想的特定用途的各种修改的情况下利用本公开。本文描述的示例的特征可以以方法、装置、系统和计算机程序产品的所有可能组合来组合。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1