System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种Linux系统下提升U盘弹出速度的方法及系统技术方案_技高网

一种Linux系统下提升U盘弹出速度的方法及系统技术方案

技术编号:44202480 阅读:11 留言:0更新日期:2025-02-06 18:37
本发明专利技术公开了一种Linux系统下提升U盘弹出速度的方法及系统,本发明专利技术Linux系统下提升U盘弹出速度的方法包括统计U盘单位时间内的写入数据量与使用率,并根据统计数据来预测U盘的最高写入速度,然后根据预测的U盘最高写入速度及期望的U盘弹出时间来确定一个阈值,最后使用阈值来限制需回写到U盘的缓存页数量,使用其处于一个可控状态,从而提升U盘弹出速度。本发明专利技术旨在解决当前Linux文件缓存管理策略下可能存在的U盘弹出时间长、用户体验差的问题。

【技术实现步骤摘要】

本专利技术涉及操作系统的设备管理,具体涉及一种linux系统下提升u盘弹出速度的方法及系统。


技术介绍

1、近些年来,随着国产操作系统的迅速崛起,国产操作系统正在经历从可用到好用的快速转变,此外国产操作系统多以linux系统为基础进行二次开发,linux系统的很多策略也被沿用,比如文件缓存机制,linux系统使用文件缓存机制提高了文件的访问性能,然而随着当前桌面硬件的内存越来越大,linux系统的文件缓存机制对于慢速u盘的弹出操作也变得越来越不友好,用户体验十分差。缓存写是一种用于提高存储系统性能的技术,它利用内存中的缓存来暂时存储写操作的数据。这种做法可以提高系统的整体响应速度和吞吐量。linux通常使用写回缓存策略,数据首先写入内存中的缓存,然后在合适的时机后台异步地将数据写回磁盘。linux当前的文件系统缓存机制是在进行缓存写操作时(桌面环境下几乎所有的写操作都是缓存写),先从内存中分配缓存页,然后将写入存储介质的数据缓存到缓存页后即表示完成了写操作,随后在某个时机将缓存页回写到存储介质(比如内存紧张需要回收内存时),此机制虽然大幅度提升了应用的读写操作性能,然而对于慢速u盘的弹出操作却不友好,用户在使用完u盘后需要弹出u盘时,系统为保证写入u盘数据的完整性,需要将所有的缓存页回写到u盘并释放缓存页后才能正常进行弹出操作,加之系统无法感知并计算出需要回写到u盘的缓存页数量,u盘弹出操作时间也变得无法预期,如果再叠加u盘写入速度慢、系统u盘缓存页数量多等情况,用户在弹出u盘时将看到系统一直卡在弹出操作上,没有任何时间相关的提示,极大地影响了用户体验。


技术实现思路

1、本专利技术要解决的技术问题:针对现有技术的上述问题,提供一种linux系统下提升u盘弹出速度的方法及系统,本专利技术旨在解决当前linux文件缓存管理策略下可能存在的u盘弹出时间长、用户体验差的问题。

2、为了解决上述技术问题,本专利技术采用的技术方案为:

3、一种linux系统下提升u盘弹出速度的方法,包括下述步骤:

4、基于u盘的写入数据量及使用率定时动态调整阈值的大小;

5、根据当前的阈值限制系统针对u盘的缓存写机制需回写的缓存页数量,使得当需回写的缓存页数量超过阈值时则不再新分配缓存页而是先将u盘缓存链表中的缓存页写回到u盘再回收缓存页使用以确保需要回写到u盘的缓存页数量可控来提升u盘弹出速度。

6、可选地,所述基于u盘的统计写入数据量及使用率定时动态调整阈值的大小时,每一轮调整阈值的大小包括:

7、步骤①,统计u盘单位时间内的写入数据量和使用率;

8、步骤②,根据u盘单位时间内的写入数据量和使用率预测出u盘的最高写入速度s;

9、步骤③,根据u盘的最高写入速度s更新阈值,且阈值与最高写入速度s正相关。

10、可选地,步骤①中统计u盘单位时间内的写入数据量和使用率时,统计u盘单位时间内的写入数据量包括:首先将写入数据量n初始化为0,然后针对单位时间内scsi层的数据发送函数scsi_queue_rq()下发的操作req,调用内核中的读写判断函数rq_data_dir()判断rq_data_dir(req)是否等于写操作常量write,如果不等于写操作常量write,则忽略该操作req;否则判断操作req写入的存储介质是否为u盘存储介质,如果为u盘存储介质则通过统计读写操作数函数blk_req_bytes()将操作req的读写字节数累加到写入数据量n,最终在单位时间结束后得到最终的u盘在单位时间里写入完成的写入数据量n。

11、可选地,步骤①中统计u盘单位时间内的写入数据量和使用率时,统计u盘单位时间内的使用率包括:(1)初始化设置单位时间内的采样次数samping_time为单位时间的总采样次数,u盘繁忙频率per_busy的值初始化为单位时间的总采样次数;(2)通过内核函数part_in_flight_rw()来获取u盘未完成的io写请求数量,如果u盘未完成的io写请求数量大于0则表示u盘繁忙,则保持u盘繁忙频率per_busy的值不变,否则将u盘繁忙频率per_busy的值减1;(3)先将采样次数samping_time向下递减1,再判断其是否大于0,如果大于0则休眠一个采样间隔后跳转步骤(2);否则计算单位时间内的u盘使用率rate_busy,u盘繁忙频率per_busy除以单位时间的总采样次数samping_time即得到u盘单位时间内的使用率rate_busy。

12、可选地,步骤②中根据u盘单位时间内的写入数据量和使用率预测出u盘的最高写入速度s的函数表达式为:s=n/rate_busy,其中n为u盘在单位时间里写入完成的写入数据量,rate_busy为u盘单位时间内的使用率。

13、可选地,步骤③中根据u盘的最高写入速度s设置阈值的函数表达式为:

14、cache_threshold =(s*t)/page_size,

15、上式中,cache_threshold为阈值,t为预设的u盘期望弹出时间,page_size为页大小。

16、可选地,所述根据当前的阈值限制系统针对u盘的缓存写机制需回写的缓存页数量为基于u盘缓存限制模块实现,且u盘缓存限制模块根据当前的阈值限制系统针对u盘的缓存写机制需回写的缓存页数量包括:

17、s101,声明定义u盘缓存限制模块所需的数据结构并初始化;

18、s102,当存储介质插入电脑时,判断存储介质是否为u盘,并将判断结果存储到存储介质的磁盘描述符中;

19、s103,当系统通过vfs层向存储介质写入数据时,先判断存储介质是否为u盘,如果是则运行步骤s104,否则结束运行;

20、s104,判断被写入的存储介质已缓存的页面数量是否超过阈值,如超过阈值运行步骤s105,如等于阈值运行步骤s106,否则先分配缓存页,并将分配的缓存页插入被写入的u盘的u盘缓存链表末尾,同时更新u盘已缓存的页面数量,结束并退出;

21、s105,回收u盘缓存链表的缓存页,直到缓存页数量跟阈值相等;

22、s106,从u盘缓存链表的头部取出一个缓存页,将缓存页中的数据写回到u盘,然后再将该缓存页插入u盘缓存链表尾部。

23、此外,本专利技术还提供一种linux系统下提升u盘弹出速度的系统,包括相互连接的微处理器和存储器,所述微处理器被编程或配置以执行所述linux系统下提升u盘弹出速度的方法。

24、此外,本专利技术还提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序或指令,该计算机程序或指令被编程或配置以通过处理器执行所述linux系统下提升u盘弹出速度的方法。

25、此外,本专利技术还提供一种计算机程序产品,包括计算机程序或指令,该计算机程序或指令被编程或配置以通过处理器执行所述linux系统下提升u盘弹出速度的方法。

26、本文档来自技高网...

【技术保护点】

1.一种Linux系统下提升U盘弹出速度的方法,其特征在于,包括下述步骤:

2.根据权利要求1所述的Linux系统下提升U盘弹出速度的方法,其特征在于,所述基于U盘的统计写入数据量及使用率定时动态调整阈值的大小时,每一轮调整阈值的大小包括:

3.根据权利要求2所述的Linux系统下提升U盘弹出速度的方法,其特征在于,步骤①中统计U盘单位时间内的写入数据量和使用率时,统计U盘单位时间内的写入数据量包括:首先将写入数据量N初始化为0,然后针对单位时间内scsi层的数据发送函数scsi_queue_rq()下发的操作req,调用内核中的读写判断函数rq_data_dir()判断rq_data_dir(req)是否等于写操作常量WRITE,如果不等于写操作常量WRITE,则忽略该操作req;否则判断操作req写入的存储介质是否为U盘存储介质,如果为U盘存储介质则通过统计读写操作数函数blk_req_bytes()将操作req的读写字节数累加到写入数据量N,最终在单位时间结束后得到最终的U盘在单位时间里写入完成的写入数据量N。

4.根据权利要求2所述的Linux系统下提升U盘弹出速度的方法,其特征在于,步骤①中统计U盘单位时间内的写入数据量和使用率时,统计U盘单位时间内的使用率包括:(1)初始化设置单位时间内的采样次数samping_time为单位时间的总采样次数,U盘繁忙频率per_busy的值初始化为单位时间的总采样次数;(2)通过内核函数part_in_flight_rw()来获取U盘未完成的IO写请求数量,如果U盘未完成的IO写请求数量大于0则表示U盘繁忙,则保持U盘繁忙频率per_busy的值不变,否则将U盘繁忙频率per_busy的值减1;(3)先将采样次数samping_time向下递减1,再判断其是否大于0,如果大于0则休眠一个采样间隔后跳转步骤(2);否则计算单位时间内的U盘使用率Rate_Busy,U盘繁忙频率per_busy除以单位时间的总采样次数samping_time得到U盘单位时间内的使用率Rate_Busy。

5.根据权利要求2所述的Linux系统下提升U盘弹出速度的方法,其特征在于,步骤②中根据U盘单位时间内的写入数据量和使用率预测出U盘的最高写入速度S的函数表达式为:S=N/Rate_Busy,其中N为U盘在单位时间里写入完成的写入数据量,Rate_Busy为U盘单位时间内的使用率。

6. 根据权利要求2所述的Linux系统下提升U盘弹出速度的方法,其特征在于,步骤③中根据U盘的最高写入速度S设置阈值的函数表达式为:

7.根据权利要求1所述的Linux系统下提升U盘弹出速度的方法,其特征在于,所述根据当前的阈值限制系统针对U盘的缓存写机制需回写的缓存页数量为基于U盘缓存限制模块实现,且U盘缓存限制模块根据当前的阈值限制系统针对U盘的缓存写机制需回写的缓存页数量包括:

8.一种Linux系统下提升U盘弹出速度的系统,包括相互连接的微处理器和存储器,其特征在于,所述微处理器被编程或配置以执行权利要求1~7中任意一项所述Linux系统下提升U盘弹出速度的方法。

9.一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序或指令,其特征在于,该计算机程序或指令被编程或配置以通过处理器执行权利要求1~7中任意一项所述Linux系统下提升U盘弹出速度的方法。

10.一种计算机程序产品,包括计算机程序或指令,其特征在于,该计算机程序或指令被编程或配置以通过处理器执行权利要求1~7中任意一项所述Linux系统下提升U盘弹出速度的方法。

...

【技术特征摘要】

1.一种linux系统下提升u盘弹出速度的方法,其特征在于,包括下述步骤:

2.根据权利要求1所述的linux系统下提升u盘弹出速度的方法,其特征在于,所述基于u盘的统计写入数据量及使用率定时动态调整阈值的大小时,每一轮调整阈值的大小包括:

3.根据权利要求2所述的linux系统下提升u盘弹出速度的方法,其特征在于,步骤①中统计u盘单位时间内的写入数据量和使用率时,统计u盘单位时间内的写入数据量包括:首先将写入数据量n初始化为0,然后针对单位时间内scsi层的数据发送函数scsi_queue_rq()下发的操作req,调用内核中的读写判断函数rq_data_dir()判断rq_data_dir(req)是否等于写操作常量write,如果不等于写操作常量write,则忽略该操作req;否则判断操作req写入的存储介质是否为u盘存储介质,如果为u盘存储介质则通过统计读写操作数函数blk_req_bytes()将操作req的读写字节数累加到写入数据量n,最终在单位时间结束后得到最终的u盘在单位时间里写入完成的写入数据量n。

4.根据权利要求2所述的linux系统下提升u盘弹出速度的方法,其特征在于,步骤①中统计u盘单位时间内的写入数据量和使用率时,统计u盘单位时间内的使用率包括:(1)初始化设置单位时间内的采样次数samping_time为单位时间的总采样次数,u盘繁忙频率per_busy的值初始化为单位时间的总采样次数;(2)通过内核函数part_in_flight_rw()来获取u盘未完成的io写请求数量,如果u盘未完成的io写请求数量大于0则表示u盘繁忙,则保持u盘繁忙频率per_busy的值不变,否则将u盘繁忙频率per_busy的值减1;(3)先将采样次数samping_time向下递减1,...

【专利技术属性】
技术研发人员:胡海张根健刘正元刘云张铎
申请(专利权)人:麒麟软件有限公司
类型:发明
国别省市:

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

1