基于Linux系统的HMB开关实现方法、装置和计算机设备与流程


基于linux系统的hmb开关实现方法、装置和计算机设备
技术领域
1.本发明涉及固态硬盘技术领域,特别是涉及一种基于linux系统的hmb开关实现方法、装置、计算机设备和存储介质。


背景技术:



2.随着固态硬盘技术的发展,当前nvme ssd(solid state disk,固态硬盘)已广泛使用于笔记本电脑、台式机、部分手机,ssd配套的外部dram(dynamic random access memory,动态随机存取存储器)可以用作读写的缓冲区或存放ftl数据,从而实现高速读写。但是部分ssd优先考虑芯片尺寸或者成本因素,并没有配套外部dram,这些dram-less的ssd访问速度慢,性能较差(尤其是随机访问性能)。
3.为了解决这个问题,nvme协议添加了一个标准作为选项,允许无dram的ssd从主机设备借用dram(host memory)并将它们用作缓冲区(buffer),这就是使用host memory buffer(hmb)功能,是否使能hmb对于dram-less的ssd性能表现差异大。


技术实现要素:



4.基于此,有必要针对上述技术问题,提供一种基于linux系统的hmb开关实现方法、装置、计算机设备和存储介质。
5.一种基于linux系统的hmb开关实现方法,所述方法包括:
6.查看主机为ssd分配的hmb大小,判断当前hmb功能是否已经被打开;
7.获取程序卸载命令并卸载当前的nvme驱动程序
8.修改nvme驱动程序的配置参数,重新加载已修改参数的nvme驱动程序;
9.再次查看主机为ssd分配的hmb的大小确定hmb功能是否已被关闭。
10.在其中一个实施例中,所述查看主机为ssd分配的hmb大小,判断当前hmb功能是否已经被打开的步骤包括:
11.若主机为ssd分配的hmb大小不为0,则表示当前hmb功能已经被打开;
12.获取程序卸载命令,卸载当前的nvme驱动程序;
13.设置驱动配置参数值为0,重新加载已修改参数的nvme驱动程序。
14.在其中一个实施例中,所述查看主机为ssd分配的hmb大小,判断当前hmb功能是否已经被打开的步骤还包括:
15.若主机为ssd分配的hmb大小为0,则表示当前hmb功能已经被关闭;
16.获取程序卸载命令,卸载当前的nvme驱动程序;
17.设置驱动配置参数值为ssd分配一定大小的hmb空间,重新加载已修改参数的nvme驱动程序。
18.在其中一个实施例中,在所述查看主机为ssd分配的hmb大小,判断当前hmb功能是否已经被打开的步骤之前还包括:
19.获取主机nvme驱动支持的hmb最大值。
20.一种基于linux系统的hmb开关实现装置,所述基于linux系统的hmb开关实现装置包括:
21.第一查看模块,所述第一查看模块用于查看主机为ssd分配的hmb大小,判断当前hmb功能是否已经被打开;
22.卸载模块,所述卸载模块用于获取程序卸载命令并卸载当前的nvme驱动程序;
23.加载模块,所述加载模块用于修改nvme驱动程序的配置参数,重新加载已修改参数的nvme驱动程序;
24.第二查看模块,所述第二查看模块再次查看主机为ssd分配的hmb的大小确定hmb功能是否已被关闭。
25.在其中一个实施例中,所述装置还包括功能关闭模块,所述功能关闭模块用于:
26.若主机为ssd分配的hmb大小不为0,则表示当前hmb功能已经被打开;
27.获取程序卸载命令,卸载当前的nvme驱动程序;
28.设置驱动配置参数值为0,重新加载已修改参数的nvme驱动程序。
29.在其中一个实施例中,所述装置还包括功能打开模块,所述功能打开模块用于:
30.若主机为ssd分配的hmb大小为0,则表示当前hmb功能已经被关闭;
31.获取程序卸载命令,卸载当前的nvme驱动程序;
32.设置驱动配置参数值为ssd分配一定大小的hmb空间,重新加载已修改参数的nvme驱动程序。
33.在其中一个实施例中,所述装置还包括获取模块,所述获取模块用于:
34.获取主机nvme驱动支持的hmb最大值。
35.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一项方法的步骤。
36.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项方法的步骤。
37.上述基于linux系统的hmb开关实现方法、装置、计算机设备和存储介质,对于支持hmb功能的nvme ssd,在上电加载nvme驱动时,主机会主动使能hmb功能,进入linux系统后可以实现关闭或者重新开启hmb功能,该方案便于ssd hmb功能的测试与开发,可以有效地提高测试开发的效率。
附图说明
38.图1为一个实施例中基于linux系统的hmb开关实现方法的流程示意图;
39.图2为另一个实施例中基于linux系统的hmb开关实现方法的流程示意图;
40.图3为再一个实施例中基于linux系统的hmb开关实现方法的流程示意图;
41.图4为一个实施例中基于linux系统的hmb开关实现装置的结构框图;
42.图5为另一个实施例中基于linux系统的hmb开关实现装置的结构框图;
43.图6为再一个实施例中基于linux系统的hmb开关实现装置的结构框图;
44.图7为又一个实施例中基于linux系统的hmb开关实现装置的结构框图;
45.图8为一个实施例中计算机设备的内部结构图。
具体实施方式
46.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
47.目前,ssd配套的外部dram可以用作读写的缓冲区或存放ftl数据,从而实现高速读写。但是部分ssd优先考虑芯片尺寸或者成本因素,并没有配套外部dram,这些dram-less的ssd访问速度慢,性能较差。为了解决这个问题,nvme协议添加了一个标准作为选项,允许无dram的ssd从主机设备借用dram并将它们用作缓冲区,这就是使用host memory buffer功能,是否使能hmb对于dram-less的ssd性能表现差异大。
48.基于此,本发明提出了一种基于linux系统的hmb开关实现方法,旨在可以实现在linux系统下通过驱动开关hmb功能。
49.在一个实施例中,如图1所示,提供了一种基于linux系统的hmb开关实现方法,该方法包括:
50.步骤102,查看主机为ssd分配的hmb大小,判断当前hmb功能是否已经被打开;
51.步骤104,获取程序卸载命令并卸载当前的nvme驱动程序;
52.步骤106,修改nvme驱动程序的配置参数,重新加载已修改参数的nvme驱动程序;
53.步骤108,再次查看主机为ssd分配的hmb的大小确定hmb功能是否已被关闭。
54.在本实施例中,提供了一种基于linux系统的hmb开关实现方法,该方法对于支持hmb功能的nvme ssd,在上电加载nvme驱动时,主机会主动使能hmb功能,进入linux系统后实现闭和重新开启hmb功能,具体包括如下步骤:
55.首先,查看主机为ssd分配的hmb大小,判断当前hmb功能是否已经被打开。具体地,可通过发送命令查看当前主机为ssd分配的hmb大小,如果显示为0则便是hmb功能被关闭,若显示为非0例如64m,这表示hmb功能打开。
56.在一个实施例中,在查看主机为ssd分配的hmb大小,判断当前hmb功能是否已经被打开的步骤之前还包括:获取主机nvme驱动支持的hmb最大值。具体地,可以先通过命令获取主机nvme驱动支持的hmb最大值,例如,若显示结果为128mb,则表示该ssd支持最大获取128m的hmb空间。在后续对配置参数修改的时候,不能超过该数值大小。
57.接着,获取程序卸载命令并卸载当前的nvme驱动程序。然后,修改nvme驱动程序的配置参数,重新加载已修改参数的nvme驱动程序。具体地,若要关闭hmb功能则将参数修改为0,若要重新打开hmb功能,则将参数修改为非0,例如64或者128。最后,再次查看主机为ssd分配的hmb的大小确定hmb功能是否已被关闭。
58.在上述实施例中,对于支持hmb功能的nvme ssd,在上电加载nvme驱动时,主机会主动使能hmb功能,进入linux系统后可以实现关闭或者重新开启hmb功能,该方案便于ssd hmb功能的测试与开发,可以有效地提高测试开发的效率。
59.在一个实施例中,如图2所示,提供了一种基于linux系统的hmb开关实现方法,该方法还包括:
60.步骤202,若主机为ssd分配的hmb大小不为0,则表示当前hmb功能已经被打开;
61.步骤204,获取程序卸载命令,卸载当前的nvme驱动程序;
62.步骤206,设置驱动配置参数值为0,重新加载已修改参数的nvme驱动程序。
63.在一个实施例中,如图3所示,提供了一种基于linux系统的hmb开关实现方法,该方法还包括:
64.步骤302,若主机为ssd分配的hmb大小为0,则表示当前hmb功能已经被关闭;
65.步骤304,获取程序卸载命令,卸载当前的nvme驱动程序;
66.步骤306,设置驱动配置参数值为ssd分配一定大小的hmb空间,重新加载已修改参数的nvme驱动程序。
67.在本实施例中,分别提供了关闭hmb功能的实现过程和打开hmb功能的实现过程。
68.关闭hmb功能的实现过程:打开命令行终端,发送命令modprobe-r nvme卸载nvme驱动。重新加载已修改参数的nvme驱动。命令为modprobe nvme max_host_mem_size_mb=0。这里的参数值为0,表示主机关闭hmb功能,主机分配0mb空间给ssd使用。
69.打开hmb功能的实现过程:打开命令行终端,发送命令modprobe-r nvme卸载nvme驱动。重新加载已修改参数的nvme驱动。命令:modprobe nvme max_host_mem_size_mb=128。这里的参数值为128,表示主机打开hmb功能,主机分配128mb空间给ssd使用。
70.下面以一个具体的示例进行说明:
71.测试环境包括:测试机为台式机或笔记本电脑,安装linux操作系统;ssd为支持hmb功能的nvme ssd;nvme驱动为linux系统自带的原生驱动;使用的命令为linux系统自带命令。具体地执行步骤如下:
72.1、获取主机nvme驱动支持的hmb最大值,显示结果为128mb。
73.2、查看主机为ssd分配的hmb的大小,显示为这款ssd分配64mb。
74.3、卸载nvme驱动程序。
75.4、加载已修改参数的nvme驱动,设置参数值为0。
76.5、查看ssd获取的hmb大小,显示已被限制为0mb,此时hmb功能已被关闭。
77.6、查看驱动支持的hmb大小,显示为0,再次表示hmb已被关闭。
78.7、如果需要重新打开hmb功能,先卸载nvme驱动,再加载参数值为64的驱动。
79.8、查看ssd获取的hmb大小,显示ssd再次获得了64mb hmb空间,表示hmb已被重新打开。
80.应该理解的是,虽然图1-3的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-3中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
81.在一个实施例中,如图4所示,提供了一种基于linux系统的hmb开关实现装置400,该装置包括:
82.第一查看模块401,所述第一查看模块用于查看主机为ssd分配的hmb大小,判断当前hmb功能是否已经被打开;
83.卸载模块402,所述卸载模块用于获取程序卸载命令并卸载当前的nvme驱动程序;
84.加载模块403,所述加载模块用于修改nvme驱动程序的配置参数,重新加载已修改
参数的nvme驱动程序;
85.第二查看模块404,所述第二查看模块再次查看主机为ssd分配的hmb的大小确定hmb功能是否已被关闭。
86.在一个实施例中,如图5所示,提供了一种基于linux系统的hmb开关实现装置400,该装置还包括功能关闭模块405,用于:
87.若主机为ssd分配的hmb大小不为0,则表示当前hmb功能已经被打开;
88.获取程序卸载命令,卸载当前的nvme驱动程序;
89.设置驱动配置参数值为0,重新加载已修改参数的nvme驱动程序。
90.在一个实施例中,如图6所示,提供了一种基于linux系统的hmb开关实现装置400,该装置还包括功能打开模块406,用于:
91.若主机为ssd分配的hmb大小为0,则表示当前hmb功能已经被关闭;
92.获取程序卸载命令,卸载当前的nvme驱动程序;
93.设置驱动配置参数值为ssd分配一定大小的hmb空间,重新加载已修改参数的nvme驱动程序。
94.在一个实施例中,如图7所示,提供了一种基于linux系统的hmb开关实现装置400,该装置还包括获取模块407,用于:
95.获取主机nvme驱动支持的hmb最大值。
96.关于基于linux系统的hmb开关实现装置的具体限定可以参见上文中对于基于linux系统的hmb开关实现方法的限定,在此不再赘述。
97.在一个实施例中,提供了一种计算机设备,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器以及网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于linux系统的hmb开关实现方法。
98.本领域技术人员可以理解,图8中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
99.在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以上各个方法实施例中的步骤。
100.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以上各个方法实施例中的步骤。
101.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom
(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
102.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
103.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。

技术特征:


1.一种基于linux系统的hmb开关实现方法,所述方法包括:查看主机为ssd分配的hmb大小,判断当前hmb功能是否已经被打开;获取程序卸载命令并卸载当前的nvme驱动程序;修改nvme驱动程序的配置参数,重新加载已修改参数的nvme驱动程序;再次查看主机为ssd分配的hmb的大小确定hmb功能是否已被关闭。2.根据权利要求1所述的基于linux系统的hmb开关实现方法,其特征在于,所述查看主机为ssd分配的hmb大小,判断当前hmb功能是否已经被打开的步骤包括:若主机为ssd分配的hmb大小不为0,则表示当前hmb功能已经被打开;获取程序卸载命令,卸载当前的nvme驱动程序;设置驱动配置参数值为0,重新加载已修改参数的nvme驱动程序。3.根据权利要求2所述的基于linux系统的hmb开关实现方法,其特征在于,所述查看主机为ssd分配的hmb大小,判断当前hmb功能是否已经被打开的步骤还包括:若主机为ssd分配的hmb大小为0,则表示当前hmb功能已经被关闭;获取程序卸载命令,卸载当前的nvme驱动程序;设置驱动配置参数值为ssd分配一定大小的hmb空间,重新加载已修改参数的nvme驱动程序。4.根据权利要求1-3任一项所述的基于linux系统的hmb开关实现方法,其特征在于,在所述查看主机为ssd分配的hmb大小,判断当前hmb功能是否已经被打开的步骤之前还包括:获取主机nvme驱动支持的hmb最大值。5.一种基于linux系统的hmb开关实现装置,其特征在于,所述基于linux系统的hmb开关实现装置包括:第一查看模块,所述第一查看模块用于查看主机为ssd分配的hmb大小,判断当前hmb功能是否已经被打开;卸载模块,所述卸载模块用于获取程序卸载命令并卸载当前的nvme驱动程序;加载模块,所述加载模块用于修改nvme驱动程序的配置参数,重新加载已修改参数的nvme驱动程序;第二查看模块,所述第二查看模块再次查看主机为ssd分配的hmb的大小确定hmb功能是否已被关闭。6.根据权利要求5所述的基于linux系统的hmb开关实现装置,其特征在于,所述装置还包括功能关闭模块,所述功能关闭模块用于:若主机为ssd分配的hmb大小不为0,则表示当前hmb功能已经被打开;获取程序卸载命令,卸载当前的nvme驱动程序;设置驱动配置参数值为0,重新加载已修改参数的nvme驱动程序。7.根据权利要求6所述的基于linux系统的hmb开关实现装置,其特征在于,所述装置还包括功能打开模块,所述功能打开模块用于:若主机为ssd分配的hmb大小为0,则表示当前hmb功能已经被关闭;获取程序卸载命令,卸载当前的nvme驱动程序;设置驱动配置参数值为ssd分配一定大小的hmb空间,重新加载已修改参数的nvme驱动程序。
8.根据权利要求5-7任一项所述的基于linux系统的hmb开关实现装置,其特征在于,所述装置还包括获取模块,所述获取模块用于:获取主机nvme驱动支持的hmb最大值。9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至4中任一项所述方法的步骤。10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至4中任一项所述的方法的步骤。

技术总结


本申请涉及一种基于Linux系统的HMB开关实现方法、装置、计算机设备和存储介质,其中该方法包括:查看主机为SSD分配的HMB大小,判断当前HMB功能是否已经被打开;获取程序卸载命令并卸载当前的NVME驱动程序;修改NVME驱动程序的配置参数,重新加载已修改参数的NVME驱动程序;再次查看主机为SSD分配的HMB的大小确定HMB功能是否已被关闭。本发明对于支持HMB功能的NVME SSD,在上电加载NVME驱动时,主机会主动使能HMB功能,进入Linux系统后可以实现关闭或者重新开启HMB功能,该方案便于SSD HMB功能的测试与开发,可以有效地提高测试开发的效率。率。率。


技术研发人员:

吴斌 石骁 孙克庆

受保护的技术使用者:

苏州忆联信息系统有限公司

技术研发日:

2022.06.17

技术公布日:

2022/8/16

本文发布于:2024-09-20 18:32:32,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/27500.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:功能   所述   驱动程序   主机
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议