System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种Linux内核IO节流自适应设定点控制方法及系统技术方案_技高网

一种Linux内核IO节流自适应设定点控制方法及系统技术方案

技术编号:44122787 阅读:2 留言:0更新日期:2025-01-24 22:43
本发明专利技术提供一种Linux内核IO节流自适应设定点控制方法及系统,设置中点值freerun和设定点;将计数信息refault作为未命中页面数量,计算写操作的页面缺失率;将页面缺失率与100%之间的差值作为所述设定点的自适应调整值;若所述页面缺失率小于100%,则增大所述设定点,增大值为所述自适应调整值,让更多的脏页留在内存中;反之若所述页面缺失率大于100%,则减小所述设定点,减小值为所述自适应调整值。本发明专利技术将对脏页数量的限制转化为对写操作的页面缺失率的限制,限制值的大小可自适应调整,通过自动调节的方式将IO限制在一个稳定的程度,增强系统的稳定性。

【技术实现步骤摘要】

本专利技术属于信息,具体涉及一种linux内核io节流自适应设定点控制方法及系统。


技术介绍

1、linux内核中由于存在缓存(page cache),一般修改的文件数据并不会马上同步到磁盘,会缓存在内存的page cache中,这种和磁盘数据不一致的页称为脏页(dirtypage),脏页会在合适的时机同步到磁盘。

2、linux内核内存管理系统中存在当系统页面的很大一部分是脏页时,异步回收进程和直接回收进程无法立即回收脏页的问题,这可能会导致应用程序在等待释放的内存空间时出现严重延迟。为了解决这一顾虑,linux内核目前采用i/o节流技术将脏页限制在一定的数量。i/o节流的目的是防止脏页的数量超过总内存的的硬限制比率。这个硬限制比率,是一个用户可调的值,默认为20%。它表示如果写线程正在创建大量脏页,当脏页的数量占最大系统内存总量的比率达到这个设定值时,线程必须将所有脏数据提交到磁盘,将被迫在写操作完成之前进入睡眠状态,同时所有新的i/o块都会被阻塞,直到脏数据被写入磁盘,以减少单位时间内创建的脏页数量。这通常是长i/o卡顿的原因,但这也是保证内存中不会存在过量脏数据的保护机制。在linux内核中,通常使用vm.dirty_background_ratio和vm.dirty_ratio来控制脏页对于文件系统缓存的影响,linux内核将磁盘写入缓存,过段时间再异步将它们刷新到磁盘,这对加速磁盘io有很好的效果,但当数据没有写入到磁盘时,丢失数据的可能性会增加,如果出现一次性往磁盘写入过多的数据,会出现缓存被写爆的情况,以致系统卡顿,出现卡顿就是系统认为缓存太大,用异步的方式来不及把它们都写入磁盘,于是发生阻塞,切换到同步的方式进行写入。

3、vm.dirty_ratio即为节流的硬限制比率,默认20%,控制文件系统的写缓冲区的大小,单位是百分比,表示占系统内存的百分比,当写缓冲使用到系统内存多少的时候,开始向磁盘写出数据。增大之后会使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能,但当需要持续恒定的写入场合时,应该降低其数值。

4、vm.dirty_background_ratio,即为脏页的背景限制比率,默认10%,单位百分比,是系统内存可以填充脏数据的百分比,控制文件系统的pdflush进程,在何时刷新磁盘。pdflush用于将内存中的内容和文件系统进行同步,比如当系统有32g内存,一个文件在内存中进行修改,有3.2g的脏数据可以等待在内存中,pdflush负责将它写回硬盘,每当内存中的脏页超过10%的时候,即超过3.2g的话就会有后台进程来清理,pdflush会将这些页面备份回硬盘,增大数值将会使用更多系统内存用于磁盘写缓冲,也可以极大提高系统的写性能。但如果需要持续、恒定的写入场景时,需要降低该数值。

5、为了验证硬限制比率20%的默认设置是否合适,采用单一变量控制原则,固定脏页的背景限制比率,并将硬限制比率的值固定设置为60%和100%,并且在不同的fio测试用例中对这三种情况下的表现进行测试,实验发现与默认的20%相比,当硬限制比率设置为100%时,某些测试用例的性能提高了,但同时另外的测试用例性能急剧下降,分析发现这一现象是由于存在大量脏页造成的;同时当硬限制比率设置为60%时,也会出现某些性能下降的同时,一些测试场景的数据出现性能提升,显然这证实了20%的硬限制比率不是一个最佳设置的值,它没有考虑正在执行的工作负载的内存特性,所以固定的设置20%的硬限制比率是不合理的,一个好的节流点应当根据系统的实际情况设置,最好是可以自适应动态调节的,这样才能满足系统对于多任务和复杂场景的适应需求,获得更好的稳定性和更优的性能。


技术实现思路

1、本专利技术的目的在于提供一种linux内核io节流自适应设定点控制方法及系统,将对脏页数量的限制转化为对写操作的页面缺失率的限制,限制值的大小可自适应调整,通过自动调节的方式将io限制在一个稳定的程度,增强系统的稳定性。

2、为了实现上述目的,本专利技术的技术方案是这样的:

3、一种linux内核io节流自适应设定点控制方法,包括:

4、s1、采样linux系统中脏页数量百分比,同时根据背景限制比率vm.dirty_background_ratio和硬限制比率vm.dirty_ratio的值计算系统可自由运行的中点值freerun,将freerun和硬限制比率vm.dirty_ratio的中点值作为i/o节流目标脏页数量百分比的设定点;若脏页数量百分比大于freerun,则跳转至步骤s2,否则继续采样;

5、s2、将缓存页面被驱逐后再次出现缺页的页面的计数信息refault作为未命中页面数量,通过计算未命中页面数量和写入页面的数量的百分比,得到写操作的页面缺失率;将页面缺失率与100%之间的差值作为所述设定点的自适应调整值;

6、s3、若所述页面缺失率小于100%,则增大所述设定点,增大值为所述自适应调整值,让更多的脏页留在内存中;反之若所述页面缺失率大于100%,则减小所述设定点,减小值为所述自适应调整值。

7、进一步的,步骤s3还包括:

8、s301、预先设置所述设定点的自适应调整周期;

9、s302、在每一次设定点的自适应调整值计算完成后,确定设定点的自适应调整是否在自适应调整周期内,若在自适应调整周期内则不执行,反之则跳转至步骤s303;

10、s303、获取系统当前的硬限制比率vm.dirty_ratio的值;

11、s304、定义所述设定点的自适应调整界限,将从系统总的页面数量中减去当前未占用的页面数量后剩余大小的比率作为所述设定点的自适应调整的上界,硬限制比率vm.dirty_ratio作为所述设定点的自适应调整的下界,所述设定点自适应调整后不超过所述上界和下界的范围。

12、更进一步的,步骤s304中,若所述设定点自适应调整后超过所述上界或下界的范围,使用所述上界或下界进行替换。

13、进一步的,步骤s3中设置一个余量,所述设定点的调整大小为所述自适应调整值减去所述余量。

14、本专利技术另一方面还提出了一种linux内核io节流自适应设定点控制系统,包括:

15、设定点模块:采样linux系统中脏页数量百分比,同时根据背景限制比率vm.dirty_background_ratio和硬限制比率vm.dirty_ratio的值计算系统可自由运行的中点值freerun,将freerun和硬限制比率vm.dirty_ratio的中点值作为i/o节流目标脏页数量百分比的设定点;若脏页数量百分比大于freerun,则跳转至缺失率模块,否则继续采样;

16、缺失率模块:将缓存页面被驱逐后再次出现缺页的页面的计数信息refault作为未命中页面数量,通过计算未命中页面数量和写入页面的数量的百分比,得到写操作的页面缺失率;将页面缺失率与100%之本文档来自技高网...

【技术保护点】

1.一种Linux内核IO节流自适应设定点控制方法,其特征在于,包括:

2.根据权利要求1所述的Linux内核IO节流自适应设定点控制方法,其特征在于,步骤S3还包括:

3.根据权利要求2所述的Linux内核IO节流自适应设定点控制方法,其特征在于,步骤S304中,若所述设定点自适应调整后超过所述上界或下界的范围,使用所述上界或下界进行替换。

4.根据权利要求1所述的Linux内核IO节流自适应设定点控制方法,其特征在于,步骤S3中设置一个余量,所述设定点的调整大小为所述自适应调整值减去所述余量。

5.一种Linux内核IO节流自适应设定点控制系统,其特征在于,包括:

6.根据权利要求5所述的Linux内核IO节流自适应设定点控制系统,其特征在于,所述调整模块包括:

7.根据权利要求6所述的Linux内核IO节流自适应设定点控制系统,其特征在于,界限单元中,若所述设定点自适应调整后超过所述上界或下界的范围,使用所述上界或下界进行替换。

8.根据权利要求5所述的Linux内核IO节流自适应设定点控制系统,其特征在于,所述调整模块中设置一个余量,所述设定点的调整大小为所述自适应调整值减去所述余量。

9.一种计算机可读存储介质,所述存储介质存储有计算机程序,其特征在于,所述计算机程序用于执行如权利要求1-4任一项所述的Linux内核IO节流自适应设定点控制方法。

10.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-4任一项所述的Linux内核IO节流自适应设定点控制方法。

...

【技术特征摘要】

1.一种linux内核io节流自适应设定点控制方法,其特征在于,包括:

2.根据权利要求1所述的linux内核io节流自适应设定点控制方法,其特征在于,步骤s3还包括:

3.根据权利要求2所述的linux内核io节流自适应设定点控制方法,其特征在于,步骤s304中,若所述设定点自适应调整后超过所述上界或下界的范围,使用所述上界或下界进行替换。

4.根据权利要求1所述的linux内核io节流自适应设定点控制方法,其特征在于,步骤s3中设置一个余量,所述设定点的调整大小为所述自适应调整值减去所述余量。

5.一种linux内核io节流自适应设定点控制系统,其特征在于,包括:

6.根据权利要求5所述的linux内核io节流自适应设定点控制系统,其特征在于,所述调...

【专利技术属性】
技术研发人员:刘金龙孙科王琦刘云
申请(专利权)人:麒麟软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1