CN116795298B - 一种Linux下NVME存储器的IO优化方法及系统 - Google Patents
一种Linux下NVME存储器的IO优化方法及系统 Download PDFInfo
- Publication number
- CN116795298B CN116795298B CN202311084741.8A CN202311084741A CN116795298B CN 116795298 B CN116795298 B CN 116795298B CN 202311084741 A CN202311084741 A CN 202311084741A CN 116795298 B CN116795298 B CN 116795298B
- Authority
- CN
- China
- Prior art keywords
- memory
- nvme
- linux
- timer
- flow
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000015654 memory Effects 0.000 title claims abstract description 297
- 238000000034 method Methods 0.000 title claims abstract description 35
- 238000005457 optimization Methods 0.000 title claims abstract description 15
- 238000003860 storage Methods 0.000 claims abstract description 62
- 238000011084 recovery Methods 0.000 claims abstract description 51
- 238000012545 processing Methods 0.000 claims abstract description 32
- 238000012544 monitoring process Methods 0.000 claims description 33
- 238000005070 sampling Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 12
- 230000007246 mechanism Effects 0.000 claims description 9
- 230000008569 process Effects 0.000 claims description 6
- 230000003993 interaction Effects 0.000 claims description 4
- 230000009191 jumping Effects 0.000 claims description 3
- 238000013461 design Methods 0.000 abstract description 13
- 230000006870 function Effects 0.000 description 21
- 238000004064 recycling Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007334 memory performance Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000000087 stabilizing effect Effects 0.000 description 1
- 230000009469 supplementation Effects 0.000 description 1
- 230000001502 supplementing effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种Linux下NVME存储器的IO优化方法及系统,本发明方法包括基于NVME存储器、Linux通用块层之间的请求记录并通过定时器定时统计各个NVME存储器的IO流量,若定时器溢出则进行启发式数据处理,包括根据定时统计得到的IO流量判断对应的NVME存储器的应用访问模式为IO存储模式还是普通模式,并通过Linux内存回收模块根据应用访问模式为NVME存储器分配的内存页动态执行内存回收,且IO存储模式下进行内存回收的时间快于普通模式。本发明旨在解决Linux通用操作系统中部分没有体现出局部性的设计需求的IO存储型应用不能完美发挥NVME存储器加持的期望吞吐量的问题。
Description
技术领域
本发明涉及计算机存储领域的IO负载监控技术,具体涉及一种Linux下NVME存储器的IO优化方法及系统。
背景技术
近些年来,伴随着存储技术的快速发展,以往性能瓶颈的底层存储器的存储性能也得到了飞速发展,尤其伴随NVME(Non-Volatile Memory Express,非易失性存储器标准)存储技术的迭代发展,其存储性能显著优于SATA存储器,在Linux存储模型中已经逐步改观了性能瓶颈的映像。在Linux内核中对NVME存储器进行最佳适配已经成了一个火热的研究主题,Linux逐步引入了多对列,轮询等技术已经将NVME存储器得到了充分的提升,但在部分IO存储型应用的场景下,由于部分IO存储型应用没有遵循局部性设计原则(程序在执行时呈现出局部性规律,即在一段时间内,整个程序的执行仅限于程序中的某一部分。相应地,执行所访问的存储空间也局限于某个内存区域,具体来说,局部性通常有两种形式:时间局部性和空间局部性。时间局部性:被引用过一次的存储器位置在未来会被多次引用,通常在循环中;空间局部性:如果一个存储器的位置被引用,那么将来他附近的位置也会被引用),结合Linux惰性内存分配机制等问题,造成该部分IO存储型应用在NVME存储性能的加持下,没有发挥最大的性能期望吞吐量(NVME存储器的性能没有得到最大的发挥),依旧存在一定的性能问题,其主要体现在:由于大部分应用遵从局部性设计原则,则Linux更多的倾向于暂存更多的数据在缓存中,以满足局部性设计原则应用更高的命中率,从而减小因缓存未命中而需要的存储盘和内存的交互时延;但对于部分IO存储型应用,没有体现出局部性的设计需求,其更多的需求分配内存页以短暂存储数据后同步到存储磁盘。所以基于Linux为满足局部性设计的更多的内存保活,加上Linux惰性内存分配机制(遵从于程序设计的局部性原则,Linux尽可能的保持应用进程相关访问内存的持续性,避免被交换或回写等手段回收,减少内存换入换出的消耗;另外对程序访问的下一个地址则懒惰分配指在实际需要资源之前不分配资源,等到真实使用时进行分配内存),对这类应用则需要更多的内存分配时延,因为需要耗费更多的时间来回收内存页来满足新的分配需求(回收局部性内存分配页,回收的步骤也包括暂存内存页的二次机会问题等)。由于在Linux内存回收模块中耗费更多的分配时延,对该类应用存在一定的内存回收耗费,从而不能完美发挥NVME存储器加持的期望吞吐量(NVME存储器的性能没有得到最大的发挥)。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,提供一种Linux下NVME存储器的IO优化方法及系统,本发明旨在解决Linux通用操作系统中部分没有体现出局部性的设计需求的IO存储型应用不能完美发挥NVME存储器加持的期望吞吐量的问题。
为了解决上述技术问题,本发明采用的技术方案为:
一种Linux中NVME存储器的IO优化的方法,包括:
S101,基于NVME存储器、Linux通用块层之间的请求记录各个NVME存储器的IO流量,并通过定时器定时统计各个NVME存储器的IO流量,若定时器溢出则跳转步骤S102;
S102,根据定时统计得到的IO流量进行启发式数据处理,包括:根据定时统计得到的IO流量判断对应的NVME存储器的应用访问模式为IO存储模式还是普通模式,并通过Linux内存回收模块根据应用访问模式为NVME存储器分配的内存页动态执行内存回收,且IO存储模式下进行内存回收的时间快于普通模式下进行内存回收的时间。
可选地,步骤S102中根据定时统计得到的IO流量判断对应的NVME存储器的应用访问模式为IO存储模式还是普通模式包括:将以往指定数量次统计得到的IO流量进行折权,然后再和本次统计得到的IO流量求和得到组合IO流量;判断组合IO流量是否超过该NVME存储器的预设值,若超过该NVME存储器的预设值,则判定该NVME存储器的应用访问模式为IO存储模式,否则判定该NVME存储器的应用访问模式为普通模式。
可选地,步骤S102之前还包括为各个NVME存储器设置独立的预设值,且读写速度快的NVME存储器的预设值大于读写速度慢的NVME存储器的预设值。
可选地,步骤S102中通过Linux内存回收模块根据应用访问模式为NVME存储器分配的内存页动态执行内存回收包括:若应用访问模式为IO存储模式,则标记为NVME存储器分配的内存页,并在为NVME存储器分配的内存页回写完成后立即完成对为NVME存储器分配的内存页的回收;若应用访问模式为普通模式,则通过Linux内存回收模块默认的内存回收机制完成为NVME存储器分配的内存页的回收,以使得IO存储模式下进行内存回收的时间快于普通模式下进行内存回收的时间。
可选地,步骤S101中通过定时器定时统计各个NVME存储器的IO流量时,还包括检测定时器的响应是否发生超时,若发生超时,则执行容错处理,包括复位定时器,清空以往指定数量次统计得到的IO流量的统计数据。
可选地,步骤S101中通过定时器定时统计各个NVME存储器的IO流量包括:
S201,初始启动定时器;
S202,根据定时器的计时值检测定时器的响应是否发生超时,若定时器的计时值超过了预设的最大采样阈值,则判定定时器的响应发生超时,则执行容错处理,包括复位定时器,清空以往指定数量次统计得到的IO流量的统计数据;
S203,根据定时器的计时值是否超过预设的采样周期,若尚未超过采样周期,则读取各个NVME存储器的IO流量并分别累加至各个NVME存储器本次统计得到的IO流量,否则,保存各个NVME存储器本次统计得到的IO流量,并重置各个NVME存储器本次统计得到的IO流量,根据采样周期重新设定定时器下次响应的时间,跳转步骤S202。
可选地,步骤S101中基于NVME存储器、Linux通用块层之间的请求记录各个NVME存储器的IO流量,并通过定时器定时统计各个NVME存储器的IO流量为通过监控模块实现,且所述监控模块随NVME存储器的驱动注册生成块设备后进行注册并启动。
可选地,所述监控模块随NVME存储器的驱动注册生成块设备后进行注册并启动包括:
S301,随传入的NVME存储器参数进行监控模块的初始化;
S302,监控模块注册NVME存储器相关的Linux通用块层的请求数据记录接口;
S303,设定监控模块的预设值参数,并启动监控的定时器,使得在Linux通用块层、NVME存储器的交互过程中,基于NVME存储器、Linux通用块层之间的请求记录各个NVME存储器的IO流量,并通过定时器定时统计各个NVME存储器的IO流量。
此外,本发明还提供一种Linux中NVME存储器的IO性能优化的系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述Linux中NVME存储器的IO优化的方法。
此外,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行所述Linux中NVME存储器的IO优化的方法。
和现有技术相比,本发明主要具有下述优点:本发明通过根据定时统计得到的IO流量进行启发式数据处理,包括根据定时统计得到的IO流量判断对应的NVME存储器的应用访问模式为IO存储模式还是普通模式,并通过Linux内存回收模块根据应用访问模式为NVME存储器分配的内存页动态执行内存回收,且IO存储模式下进行内存回收的时间快于普通模式下进行内存回收的时间,能够针对性地解决在Linux通用操作系统中该类IO型存储应用不能完美发挥NVME存储器加持的期望吞吐量,能够有效解决Linux通用操作系统中部分没有体现出局部性的设计需求的IO存储型应用不能完美发挥NVME存储器加持的期望吞吐量的问题,实现没有体现出局部性的设计需求的IO存储型应用在NVME存储器上的IO性能优化、使其完美发挥NVME存储器加持的期望吞吐量,使该类应用更多的处于内存分配、数据同步、写入到NVME存储器的流程,最小化减少Linux内存回收模块的影响,提升该类应用在NVME存储器加持下的IO性能。
附图说明
图1为本发明实施例方法的基本原理示意图。
图2为本发明实施例中启发式数据处理的流程示意图。
具体实施方式
本发明Linux中NVME存储器的IO优化的方法限定在装有NVME存储器和Linux通用操作系统的硬件下,该方法的原理如下:针对没有局部性设计需求的IO应用,其通过NVME存储器的负载监控及启发式处理进而得出的当前系统IO模式,辅以Linux内存回收策略的补充,加快Linux内存回收,可以减小该类应用受Linux惰性内存分配机制的影响,更多的处于内存快速分配,内存页写入,数据同步的流程中,从而极大的提高该类IO型存储应用的性能。下面参照附图对本发明的实施例进行详细的说明,在描述过程中省略了对于本发明来说不必要的细节和功能,以防止对本发明的理解造成混淆。
如图1所示,本实施例提供一种Linux中NVME存储器的IO优化的方法,包括:
S101,基于NVME存储器、Linux通用块层之间的请求记录各个NVME存储器的IO流量,并通过定时器定时统计各个NVME存储器的IO流量,若定时器溢出则跳转步骤S102;
S102,根据定时统计得到的IO流量进行启发式数据处理,包括:根据定时统计得到的IO流量判断对应的NVME存储器的应用访问模式为IO存储模式还是普通模式,并通过Linux内存回收模块根据应用访问模式为NVME存储器分配的内存页动态执行内存回收,且IO存储模式下进行内存回收的时间快于普通模式下进行内存回收的时间。启发式是心理学名词,原本释义为:启发式是减少心理消耗的潜在捷径,用迅速且不怎么费力的方式来做出复杂的决定,或做出推论的简单的规则。对应延伸后,理解为以一个相对简单的原则为基础来做出一定预判。本实施例中根据定时统计得到的IO流量判断对应的NVME存储器的应用访问模式为IO存储模式还是普通模式,并通过Linux内存回收模块根据应用访问模式为NVME存储器分配的内存页动态执行内存回收,且IO存储模式下进行内存回收的时间快于普通模式下进行内存回收的时间,为以一个相对简单的原则为基础来做出一定预判,故称其为启发式数据处理。
参见图1,本实施例步骤S101为通过NVME IO流量监控模块(简称监控模块)实现,整个方法主要涉及NVME IO流量监控模块、NVME存储器的驱动、Linux通用块层以及Linux内存回收模块。其中,NVME IO流量监控模块为本实施例方法独有的模块,NVME存储器的驱动、Linux通用块层以及Linux内存回收模块为现有模块,但是需要针对最后通过新增编译的监控模块;修改内核中NVME存储器的驱动,增加调用NVME IO流量监控模块的注册接口;辅以Linux内存回收模块制的补充修改,使其调用监控模块当前应用访问模式的接口以对IO存储模式的加快内存回收。
本实施例步骤S102中根据定时统计得到的IO流量判断对应的NVME存储器的应用访问模式为IO存储模式还是普通模式包括:将以往指定数量次统计得到的IO流量进行折权,然后再和本次统计得到的IO流量求和得到组合IO流量;判断组合IO流量是否超过该NVME存储器的预设值,若超过该NVME存储器的预设值,则判定该NVME存储器的应用访问模式为IO存储模式,否则判定该NVME存储器的应用访问模式为普通模式。通过将以往指定数量次统计得到的IO流量进行折权,然后再和本次统计得到的IO流量求和得到组合IO流量,可以剔除突刺的IO流量情况,得到一个可评估整体IO负载流量的值,通过对该值的和预设值进行判断,得到对应的NVME存储器的应用访问模式为IO存储模式(大规模的IO读写操作)还是普通模式,供Linux内存回收模块调用判断后进行内存页的不同处理,对于IO存储模式则加快内存回收,对于普通模式则按通常的流程处理。进而在IO存储应用的情况下,由于内存的加快回收,加快和节约了IO存储应用在通常情况下内存回收的时间,进而整体加快了NVME下的IO读写操作速度。
由于Linux系统为非实时性操作系统,所以存在定时器周期超时的情况,比如响应处理的时候发现已经是规定的两个周期数据了,则需要将记录的流量数据均分处理,且参考启发式的模型,需要考虑之前周期数据对当前周期的影响,因此需要将以往指定数量次统计得到的IO流量进行折权综合历史周期的流量数据迭代折算成一个叠加的流量数据,用这个叠加的流量数据反应IO的整体流量情况,防止突刺等情况的发生<突然的大IO或者没有IO的情况>,可以理解为用这个算法平抑了突刺情况,更均衡准确的反应IO流量的一个整体情况。将以往指定数量次统计得到的IO流量进行折权时,可根据需要选择所需的指定数量,假定所需的指定数量n,则组合IO流量的计算函数表达式为:
T=Ti+ ai-1Ti-1+ ai-2Ti-2+ … + ai-nTi-n
上式中,T表示组合IO流量,Ti表示本次统计得到的IO流量,Ti-1~Ti-n表示前n次统计得到的IO流量,ai-1~ai-n为前n次统计得到的IO流量的折权系数(小于1,可根据需要取值),且ai-1~ai-n的值递减。作为一种特例,指定数量为1时,组合IO流量的计算函数表达式为:
T=Ti+ ai-1Ti-1
上式中,T表示组合IO流量,Ti表示本次统计得到的IO流量,Ti-1表示上一次统计得到的IO流量,ai-1为折权系数(小于1,可根据需要取值)。若响应的跨度达到两个采样周期,则需要进行当前任务量的计算时,需要将采样周期的负载数据进行均衡后进行迭代加权的两次周期的折算,以更精确的水准评估NVME存储器的负载水平,以及当前系统IO模式。
本实施例中,步骤S102之前还包括为各个NVME存储器设置独立的预设值,且读写速度快的NVME存储器的预设值大于读写速度慢的NVME存储器的预设值,通过对应不同的NVME存储器进行内核参数传递后进行相应预设值的设定,以最优匹配不同硬件性能的NVME存储器,从而能够实现对不同硬件性能的NVME存储器的自适应匹配。作为一种可选的实施方式,可通过检测NVME存储器的读写速度并映射确定对应的预设值,然后再设定给监控模块,监控模块可以启发式的快速识别出没有局部性设计需求的IO型存储应用场景的进入和退出,并在Linux回收机制的配合下,在该类应用进入时,加快内存回收,提高该类应用的IO性能,在该类应用退出时,回归Linux原生的内存回收策略。
本实施例中,步骤S102中通过Linux内存回收模块根据应用访问模式为NVME存储器分配的内存页动态执行内存回收包括:若应用访问模式为IO存储模式,则标记为NVME存储器分配的内存页,并在为NVME存储器分配的内存页回写完成后立即完成对为NVME存储器分配的内存页的回收;若应用访问模式为普通模式,则通过Linux内存回收模块默认的内存回收机制完成为NVME存储器分配的内存页的回收,以使得IO存储模式下进行内存回收的时间快于普通模式下进行内存回收的时间。Linux内存回收模块制通过获取当前的应用访问模式,若为IO存储模式,则会进入加快内存回收的辅助路径,以减少内存回收的耗时,提高该类型应用的IO性能。相对于Linux内存回收模块的原本功能的基础上,只需要增加一个IO存储模式的处理功能即可,普通模式则直接调用Linux内存回收模块的原本功能(惰性回收机制)即可,代码改动较小。
考虑到Linux操作系统为非实时性操作系统,中断或任务的响应会随着系统负载和其他竞争因素导致得不到及时响应,本实施例进一步加入了相关容错处理。具体地,步骤S101中通过定时器定时统计各个NVME存储器的IO流量时,还包括检测定时器的响应是否发生超时,若发生超时,则执行容错处理,包括复位定时器,清空以往指定数量次统计得到的IO流量的统计数据。系统默认超过三个采样周期,若定时器的计时值超过三个采样周期仍未被重置,则判定定时器的响应发生超时。
本实施例中,步骤S101中通过定时器定时统计各个NVME存储器的IO流量包括:
S201,初始启动定时器;
S202,根据定时器的计时值检测定时器的响应是否发生超时,若定时器的计时值超过了预设的最大采样阈值,则判定定时器的响应发生超时,则执行容错处理,包括复位定时器,清空以往指定数量次统计得到的IO流量的统计数据;
S203,根据定时器的计时值是否超过预设的采样周期,若尚未超过采样周期,则读取各个NVME存储器的IO流量并分别累加至各个NVME存储器本次统计得到的IO流量,否则,保存各个NVME存储器本次统计得到的IO流量,并重置各个NVME存储器本次统计得到的IO流量,根据采样周期重新设定定时器下次响应的时间,跳转步骤S202。
本实施例中,步骤S101中基于NVME存储器、Linux通用块层之间的请求记录各个NVME存储器的IO流量,并通过定时器定时统计各个NVME存储器的IO流量为通过监控模块(即 NVME IO流量监控模块)实现,且所述监控模块随NVME存储器的驱动注册生成块设备后进行注册并启动。如图1所示,本实施例中监控模块随NVME存储器的驱动注册生成块设备后进行注册并启动包括:
S301,随传入的NVME存储器参数进行监控模块的初始化;
S302,监控模块注册NVME存储器相关的Linux通用块层的请求数据记录接口;
S303,设定监控模块的预设值参数(用于判断应用访问模式用),并启动监控的定时器,使得在Linux通用块层、NVME存储器的交互过程中,基于NVME存储器、Linux通用块层之间的请求记录各个NVME存储器的IO流量,并通过定时器定时统计各个NVME存储器的IO流量。
参见图1,本实施例步骤S302中监控模块注册NVME存储器相关的Linux通用块层的请求数据记录接口包括:注册Linux通用块层统计函数,并注册IO流量统计函数,Linux通用块层统计函数,利用Linux通用块层统计函数、IO流量统计函数结合实现记录各个NVME存储器的IO流量,以及统计各个NVME存储器的IO流量。统计函数可以自身临时缓存一段时间的数据,每一次读取统计函数的统计数据,都需要清空统计函数的临时缓存数据以避免统计函数的重复计数。为细化启发式数据处理,参见图2,可以看出先对应采样数据有效性进行甄别,并进行容错处理。数据有效时,需要叠加历史负载数据进行启发式处理,可拟合出NVME负载数据的斜率和增长量以及当前拟合出的速率。参见图2,启发式数据处理包括:1)读取统计函数的统计数据,并清空统计函数的临时统计数据;2)判断是否发生定时器超时,若发生定时器超时,则进行容错处理,复位重新统计,结束并退出;否则,进入步骤3);3)判断是否超过采样周期,若是则进入步骤5)进行负载周期均衡迭代处理;否则进入步骤4);4)保存各个NVME存储器本次统计得到的IO流量,并重置各个NVME存储器本次统计得到的IO流量,将以往指定数量次统计得到的IO流量进行折权(已经经过了一段时间,消减其影响力),然后再和本次统计得到的IO流量求和得到组合IO流量;5)则读取各个NVME存储器的IO流量并分别累加至各个NVME存储器本次统计得到的IO流量;6)根据采样周期重新设定定时器下次响应的时间。判断组合IO流量是否超过该NVME存储器的预设值,若超过该NVME存储器的预设值,则判定该NVME存储器的应用访问模式为IO存储模式,否则判定该NVME存储器的应用访问模式为普通模式。若应用访问模式为IO存储模式,则标记为NVME存储器分配的内存页,并在为NVME存储器分配的内存页回写完成后立即完成对为NVME存储器分配的内存页的回收;若应用访问模式为普通模式,则通过Linux内存回收模块默认的内存回收机制完成为NVME存储器分配的内存页的回收,以使得IO存储模式下进行内存回收的时间快于普通模式下进行内存回收的时间。
综上所述,本实施例Linux中NVME存储器的IO优化的方法实现效果明显,通过针对Linux通用操作系统下不遵从局部性设计的IO型存储应用的NVME存储器监控和Linux回收策略的补充,可以有效快速适应对IO型存储应用的进行识别,并在最短两个采样周期中做出回收策略的调整,缩短了内存分配的时延,从而显著提升该类型应用的IO性能。
此外,本实施例还提供一种Linux中NVME存储器的IO性能优化的系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述Linux中NVME存储器的IO优化的方法。此外,本实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序用于被微处理器编程或配置以执行所述Linux中NVME存储器的IO优化的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可读存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (8)
1.一种Linux下NVME存储器的IO性能优化方法,其特征在于,包括:
S101,基于NVME存储器、Linux通用块层之间的请求记录各个NVME存储器的IO流量,并通过定时器定时统计各个NVME存储器的IO流量,若定时器溢出则跳转步骤S102;
S102,根据定时统计得到的IO流量进行启发式数据处理,包括:根据定时统计得到的IO流量判断对应的NVME存储器的应用访问模式为IO存储模式还是普通模式,并通过Linux内存回收模块根据应用访问模式为NVME存储器分配的内存页动态执行内存回收,且IO存储模式下进行内存回收的时间快于普通模式下进行内存回收的时间;所述根据定时统计得到的IO流量判断对应的NVME存储器的应用访问模式为IO存储模式还是普通模式包括:将以往指定数量次统计得到的IO流量进行折权,然后再和本次统计得到的IO流量求和得到组合IO流量;判断组合IO流量是否超过该NVME存储器的预设值,若超过该NVME存储器的预设值,则判定该NVME存储器的应用访问模式为IO存储模式,否则判定该NVME存储器的应用访问模式为普通模式;所述通过Linux内存回收模块根据应用访问模式为NVME存储器分配的内存页动态执行内存回收包括:若应用访问模式为IO存储模式,则标记为NVME存储器分配的内存页,并在为NVME存储器分配的内存页回写完成后立即完成对为NVME存储器分配的内存页的回收;若应用访问模式为普通模式,则通过Linux内存回收模块默认的内存回收机制完成为NVME存储器分配的内存页的回收,以使得IO存储模式下进行内存回收的时间快于普通模式下进行内存回收的时间。
2.根据权利要求1所述的Linux下NVME存储器的IO性能优化方法,其特征在于,步骤S102之前还包括为各个NVME存储器设置独立的预设值,且读写速度快的NVME存储器的预设值大于读写速度慢的NVME存储器的预设值。
3.根据权利要求1所述的Linux下NVME存储器的IO性能优化方法,其特征在于,步骤S101中通过定时器定时统计各个NVME存储器的IO流量时,还包括检测定时器的响应是否发生超时,若发生超时,则执行容错处理,包括复位定时器,清空以往指定数量次统计得到的IO流量的统计数据。
4.根据权利要求3所述的Linux下NVME存储器的IO性能优化方法,其特征在于,步骤S101中通过定时器定时统计各个NVME存储器的IO流量包括:
S201,初始启动定时器;
S202,根据定时器的计时值检测定时器的响应是否发生超时,若定时器的计时值超过了预设的最大采样阈值,则判定定时器的响应发生超时,则执行容错处理,包括复位定时器,清空以往指定数量次统计得到的IO流量的统计数据;
S203,根据定时器的计时值是否超过预设的采样周期,若尚未超过采样周期,则读取各个NVME存储器的IO流量并分别累加至各个NVME存储器本次统计得到的IO流量,否则,保存各个NVME存储器本次统计得到的IO流量,并重置各个NVME存储器本次统计得到的IO流量,根据采样周期重新设定定时器下次响应的时间,跳转步骤S202。
5.根据权利要求1所述的Linux下NVME存储器的IO性能优化方法,其特征在于,步骤S101中基于NVME存储器、Linux通用块层之间的请求记录各个NVME存储器的IO流量,并通过定时器定时统计各个NVME存储器的IO流量为通过监控模块实现,且所述监控模块随NVME存储器的驱动注册生成块设备后进行注册并启动。
6.根据权利要求5所述的Linux下NVME存储器的IO性能优化方法,其特征在于,所述监控模块随NVME存储器的驱动注册生成块设备后进行注册并启动包括:
S301,随传入的NVME存储器参数进行监控模块的初始化;
S302,监控模块注册NVME存储器相关的Linux通用块层的请求数据记录接口;
S303,设定监控模块的预设值参数,并启动监控的定时器,使得在Linux通用块层、NVME存储器的交互过程中,基于NVME存储器、Linux通用块层之间的请求记录各个NVME存储器的IO流量,并通过定时器定时统计各个NVME存储器的IO流量。
7.一种Linux下NVME存储器的IO性能优化系统,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~6中任意一项所述Linux下NVME存储器的IO性能优化方法。
8.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其特征在于,所述计算机程序用于被微处理器编程或配置以执行权利要求1~6中任意一项所述Linux下NVME存储器的IO性能优化方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311084741.8A CN116795298B (zh) | 2023-08-28 | 2023-08-28 | 一种Linux下NVME存储器的IO优化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311084741.8A CN116795298B (zh) | 2023-08-28 | 2023-08-28 | 一种Linux下NVME存储器的IO优化方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116795298A CN116795298A (zh) | 2023-09-22 |
CN116795298B true CN116795298B (zh) | 2023-11-24 |
Family
ID=88046804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311084741.8A Active CN116795298B (zh) | 2023-08-28 | 2023-08-28 | 一种Linux下NVME存储器的IO优化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116795298B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107704400A (zh) * | 2017-10-12 | 2018-02-16 | 郑州云海信息技术有限公司 | 一种面向非易失存储的页缓存方法 |
CN107818056A (zh) * | 2016-09-14 | 2018-03-20 | 杭州华为数字技术有限公司 | 一种队列管理方法及装置 |
CN109992451A (zh) * | 2019-03-28 | 2019-07-09 | 联想(北京)有限公司 | 非易失性内存和易失性内存混合管理方法及其系统 |
CN110134514A (zh) * | 2019-04-18 | 2019-08-16 | 华中科技大学 | 基于异构内存的可扩展内存对象存储系统 |
CN115202862A (zh) * | 2022-05-13 | 2022-10-18 | 广州安凯微电子股份有限公司 | 一种Linux系统内存分配的精确统计方法、装置、设备及存储介质 |
CN115878500A (zh) * | 2021-09-29 | 2023-03-31 | 华为技术有限公司 | 内存回收方法、装置、电子设备及可读存储介质 |
CN116610444A (zh) * | 2023-04-21 | 2023-08-18 | 阿里巴巴(中国)有限公司 | 流计算系统和用于流计算系统的内存回收方法及计算设备 |
-
2023
- 2023-08-28 CN CN202311084741.8A patent/CN116795298B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107818056A (zh) * | 2016-09-14 | 2018-03-20 | 杭州华为数字技术有限公司 | 一种队列管理方法及装置 |
CN107704400A (zh) * | 2017-10-12 | 2018-02-16 | 郑州云海信息技术有限公司 | 一种面向非易失存储的页缓存方法 |
CN109992451A (zh) * | 2019-03-28 | 2019-07-09 | 联想(北京)有限公司 | 非易失性内存和易失性内存混合管理方法及其系统 |
CN110134514A (zh) * | 2019-04-18 | 2019-08-16 | 华中科技大学 | 基于异构内存的可扩展内存对象存储系统 |
CN115878500A (zh) * | 2021-09-29 | 2023-03-31 | 华为技术有限公司 | 内存回收方法、装置、电子设备及可读存储介质 |
WO2023051094A1 (zh) * | 2021-09-29 | 2023-04-06 | 华为技术有限公司 | 内存回收方法、装置、电子设备及可读存储介质 |
CN115202862A (zh) * | 2022-05-13 | 2022-10-18 | 广州安凯微电子股份有限公司 | 一种Linux系统内存分配的精确统计方法、装置、设备及存储介质 |
CN116610444A (zh) * | 2023-04-21 | 2023-08-18 | 阿里巴巴(中国)有限公司 | 流计算系统和用于流计算系统的内存回收方法及计算设备 |
Non-Patent Citations (2)
Title |
---|
Hypervisor中内存回收技术的改进;吴岳;;计算机系统应用(第09期);全文 * |
一种新的适用于Nandflash的Linux内存交换模型;吕广锋;陈蜀宇;;计算机应用研究(第10期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116795298A (zh) | 2023-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2720910B2 (ja) | データ処理システムの作業負荷を管理するための装置及び方法 | |
CN110058932B (zh) | 一种用于数据流驱动计算的存储方法和存储系统 | |
US5349656A (en) | Task scheduling method in a multiprocessor system where task selection is determined by processor identification and evaluation information | |
US10013326B2 (en) | Propagating a prefetching profile bit from a prefetch queue to a data cache to indicate that a line was prefetched in response to an instruction within a code region | |
US9529609B2 (en) | Tracking guest memory characteristics for memory scheduling | |
US20200167252A1 (en) | Method and apparatus for managing storage system | |
US9547510B2 (en) | Tracking guest memory characteristics for memory scheduling | |
CN105095116A (zh) | 缓存替换的方法、缓存控制器和处理器 | |
CN109284233B (zh) | 一种存储系统的垃圾回收方法及相关装置 | |
JP6149595B2 (ja) | キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法 | |
EP3252595A1 (en) | Method and device for running process | |
CN111124254A (zh) | 调度存储空间回收请求的方法、电子设备和程序产品 | |
JPH11328031A (ja) | 動的変換システムにおけるトレ―スのランク付け方法 | |
US20200285510A1 (en) | High precision load distribution among processors | |
US20120331235A1 (en) | Memory management apparatus, memory management method, control program, and recording medium | |
CN116795298B (zh) | 一种Linux下NVME存储器的IO优化方法及系统 | |
CN117251275A (zh) | 多应用异步i/o请求的调度方法及系统、设备及介质 | |
JP2007328413A (ja) | 負荷分散方法 | |
JP6135392B2 (ja) | キャッシュメモリ制御プログラム,キャッシュメモリを内蔵するプロセッサ及びキャッシュメモリ制御方法 | |
CN111459402B (zh) | 磁盘可控缓冲写方法、控制器、混合io调度方法及调度器 | |
JP7038656B2 (ja) | キャッシュへのアクセス | |
US11294806B2 (en) | Feedback-based selection of regions for abortable garbage collection | |
US20170147244A1 (en) | Storage control apparatus and storage control method | |
CN115907949A (zh) | 银行交易数据处理方法及装置 | |
JP2019160155A (ja) | 情報処理装置、情報処理方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |