一种基于异步非阻塞的磁盘文件读写速率控制方法技术

技术编号:15540443 阅读:107 留言:0更新日期:2017-06-05 10:19
本发明专利技术提供了一种基于异步非阻塞的磁盘文件读写速率控制方法,具体方法为:创建一个非阻塞套接字,使用select通过该套接字实现一个定时器,并设置一个默认超时时间;设置文件所在磁盘能够提供的最大稳定读写速率和磁盘文件的读写路径和读写速率;设置每次读写操作的数据块的大小,并计算得到磁盘文件读写所需要的时间;根据所设置的磁盘文件的读写路径,以非阻塞方式打开该读写路径中的文件,并将该文件句柄添加到select的事件监视队列中,在工作线程中对磁盘文件读写超时和读写操作完成进行后续处理。通过采用非阻塞的磁盘文件读写操作与异步事件通知的方法,实现了对磁盘文件精准和可靠的读写速率控制。

Disk read and write speed control method based on asynchronous non blocking

The invention provides a non blocking asynchronous disk file based on the read and write speed control method, the specific method is: to create a non blocking socket, the socket by using select to implement a timer, and set a default timeout; the maximum stable set file where the disk can provide the read and write speed and disk file read and write and read and write path rate; the size of the data blocks of each set of read and write operations, and calculate the disk file read and write the time required; according to the set disk file read and write path, open the path of the file to read and write non blocking mode, and will be added to the file handle the select event monitoring queue, in the thread of the disk read and write files to read and write operations to complete the timeout and subsequent processing. By using non blocking disk file read and write operation and asynchronous event notification method, accurate and reliable read / write rate control of disk files is realized.

【技术实现步骤摘要】
一种基于异步非阻塞的磁盘文件读写速率控制方法
本专利技术涉及一种磁盘文件读写速率控制方法,特别是涉及一种基于异步非阻塞的磁盘文件读写速率控制方法,在非阻塞的磁盘文件读写过程中实现对速率的控制。
技术介绍
在项目应用环境中,我们需要磁盘提供稳定的文件读写速率并能够对读写速率进行精准控制。在对多个磁盘文件同时进行读写时,会出现读写速率有的较快有的较慢或者时快时慢的情况。这种情况发生在VOD点播系统中流媒体服务器边下载节目文件边提供节目流推送的过程中时,如果节目文件所在服务器不能提供稳定的下载速率,将导致流媒体服务器无法按节目码率推送文件内容到点播客户端,进一步导致点播客户端视频画面和声音出现停顿现象,严重影响用户观看效果。因此,节目文件服务器必须为每个下载的节目文件提供稳定的下载速率。同时,节目文件服务器需要具备对大量文件的高并发下载提供稳定的速率控制能力。要对磁盘文件读写速率进行精准控制需要一个高精度的定时器。由于系统定时器的实现及使用机制会导致其存在毫秒级的误差,这种误差的叠加会严重影响控制速率的准确性。在这种情况下,同时进行大量文件的读写操作会使对速率准确而稳定的控制变得非常困难。因此,常规的技术方法难于做到在高并发条件下对磁盘文件读写速率进行准确稳定的控制。
技术实现思路
本专利技术要解决的技术问题是提供一种基于异步非阻塞的磁盘文件读写速率控制方法,实现对磁盘文件精准和可靠的读写速率控制。本专利技术采用的技术方案如下:一种基于异步非阻塞的磁盘文件读写速率控制方法,具体方法为:S1、创建一个非阻塞套接字,使用select通过该套接字实现一个定时器,为定时器设置一个默认超时时间;S2、设置文件所在磁盘能够提供的最大稳定读写速率;S3、设置磁盘文件的读写路径和读写速率,该磁盘文件的读写速率不大于所述最大稳定读写速率;S4、设置每次读写操作的数据块的大小,并根据所述磁盘文件的读写速率和每次读写操作的数据块的大小,计算得到磁盘文件读写所需要的时间;S5、根据所设置的磁盘文件的读写路径,以非阻塞方式打开该读写路径中的文件,并将该文件句柄添加到select的事件监视队列中,在工作线程中对磁盘文件读写超时和读写操作完成进行后续处理。利用select微秒级的超时精度管理磁盘文件在单位时间内的读写操作次数,实现对速率的精准控制。设置文件所在磁盘能够提供的最大稳定读写速率,使控制的总读写速率不超过磁盘文件的最大稳定读写速率,保证速率控制的可靠稳定。所述方法还包括,根据磁盘能够提供的最大稳定读写速率,和正在进行文件读写操作的所用的速率和,计算该磁盘当前剩余的可用读写速率,以非阻塞方式打开满足条件的其他读写路径中的文件,并将该文件句柄添加到select的事件监视队列中,在工作线程中对磁盘文件读写超时和读写操作完成进行后续处理。使select工作在可控制的超时循环中,在超时循环中采用非阻塞的磁盘文件读写方式实现对多个磁盘文件的同时读写操作,使磁盘能够达到最大的稳定读写速率,实现并发性、高效性。对磁盘文件读写超时进行后续处理的具体方法为:在定时器超时返回时,根据所设定的默认超时时间和计算得到磁盘文件读写所需要的时间,计算并对所述定时器设置下一个所述默认超时时间并进行更新,然后再次执行读写操作。对读写操作完成进行后续处理的具体方法为:在读写操作完成返回时,根据所设定的默认超时时间和计算得到磁盘文件读写所需要的时间,计算并所述定时器设置下一个所述默认超时时间并进行更新。所述磁盘能够提供的最大稳定读写速率通过测试过程预先确定。所述方法还包括,所述S4中设置每次读写操作的数据块的大小的方法为:根据磁盘的IO特性为磁盘设置一个每次文件读写操作的数据库大小,后续的读写操作不能大于该数据库大小。所述方法还包括,对磁盘的进行标识,记录每个磁盘能够提供的最大稳定读写速率。所述方法还包括,在读写操作完成返回时,计算并对定时器设置下一个所述默认超时时间后,等待该默认超时时间到来时再执行下一个文件的读写操作。与现有技术相比,本专利技术的有益效果是:使用selectI/O多路复用模型,通过采用非阻塞的磁盘文件读写操作与异步事件通知的方法,实现了对磁盘文件精准和可靠的读写速率控制;设置文件所在磁盘能够提供的最大稳定读写速率,使控制的总读写速率不超过磁盘文件的最大稳定读写速率,保证速率控制的可靠稳定。select工作在可控制的超时循环中,在超时循环中采用非阻塞的磁盘文件读写方式实现对多个磁盘文件的同时读写操作,使磁盘能够达到最大的稳定读写速率,实现并发性和高效性。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术。本说明书(包括摘要)中公开的任一特征,除非特别叙述,均可被其他等效或者具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。具体实施例1一种基于异步非阻塞的磁盘文件读写速率控制方法,具体方法为:S1、创建一个非阻塞套接字,使用select通过该套接字实现一个定时器,为定时器设置一个默认超时时间;S2、设置文件所在磁盘能够提供的最大稳定读写速率;S3、设置磁盘文件的读写路径和读写速率,该磁盘文件的读写速率不大于所述最大稳定读写速率;S4、设置每次读写操作的数据块的大小,并根据所述磁盘文件的读写速率和每次读写操作的数据块的大小,计算得到磁盘文件读写所需要的时间;S5、根据所设置的磁盘文件的读写路径,以非阻塞方式打开该读写路径中的文件,并将该文件句柄添加到select的事件监视队列中,在工作线程中对磁盘文件读写超时和读写操作完成进行后续处理。直到读写操作到达文件尾部或在外部函数控制下结束。在本具体实施例中,在工作线程中创建一个非阻塞方式的套接字,select在工作线程中使用该套接字进行超时检测;创建一个结构体数组,用于存放磁盘最大稳定读写速率,在工作线程中将测试过程得到的每个磁盘能够提供的最大稳定读写速率保存到结构体数组中;采用一个输入接口,用于设置磁盘文件路径和控制读写速率;采用一个结构体,用于存放磁盘文件路径、打开的磁盘文件的句柄和读写速率,并设置一个用于管理该结构体的hash_map。使用selectI/O多路复用模型,利用select微秒级的超时精度管理磁盘文件在单位时间内的读写操作次数,实现对速率的精准控制。设置文件所在磁盘能够提供的最大稳定读写速率,使控制的总读写速率不超过磁盘文件的最大稳定读写速率,保证速率控制的可靠稳定;设置一个读写操作完成和超时后的外部回调函数,用于向外部交互文件读写内容和状态信息(包括超时完成信息和读写操作完成信息)。具体实施例2在具体实施例1的基础上,所述方法还包括,根据磁盘能够提供的最大稳定读写速率,和正在进行文件读写操作的所用的速率和,计算该磁盘当前剩余的可用读写速率,以非阻塞方式打开满足条件的其他读写路径中的文件,并将该文件句柄添加到select的事件监视队列中,在工作线程中对磁盘文件读写超时和读写操作完成进行后续处理。在本具体实施例中,将磁盘当前剩余的可用读写速率存放于所述结构体数组中,此时,磁盘剩余可用读写速率就等于磁盘最大稳定读写速率。在输入接本文档来自技高网...

【技术保护点】
一种基于异步非阻塞的磁盘文件读写速率控制方法,具体方法为:S1、创建一个非阻塞套接字,使用select通过该套接字实现一个定时器,为定时器设置一个默认超时时间;S2、设置文件所在磁盘能够提供的最大稳定读写速率;S3、设置磁盘文件的读写路径和读写速率,该磁盘文件的读写速率不大于所述最大稳定读写速率;S4、设置每次读写操作的数据块的大小,并根据所述磁盘文件的读写速率和每次读写操作的数据块的大小,计算得到磁盘文件读写所需要的时间;S5、根据所设置的磁盘文件的读写路径,以非阻塞方式打开该读写路径中的文件,并将该文件句柄添加到select的事件监视队列中,在工作线程中对磁盘文件读写超时和读写操作完成进行后续处理。

【技术特征摘要】
1.一种基于异步非阻塞的磁盘文件读写速率控制方法,具体方法为:S1、创建一个非阻塞套接字,使用select通过该套接字实现一个定时器,为定时器设置一个默认超时时间;S2、设置文件所在磁盘能够提供的最大稳定读写速率;S3、设置磁盘文件的读写路径和读写速率,该磁盘文件的读写速率不大于所述最大稳定读写速率;S4、设置每次读写操作的数据块的大小,并根据所述磁盘文件的读写速率和每次读写操作的数据块的大小,计算得到磁盘文件读写所需要的时间;S5、根据所设置的磁盘文件的读写路径,以非阻塞方式打开该读写路径中的文件,并将该文件句柄添加到select的事件监视队列中,在工作线程中对磁盘文件读写超时和读写操作完成进行后续处理。2.根据权利要求1所述的磁盘文件读写速率控制方法,所述方法还包括,根据磁盘能够提供的最大稳定读写速率,和正在进行文件读写操作的所用的速率和,计算该磁盘当前剩余的可用读写速率,以非阻塞方式打开满足条件的其他读写路径中的文件,并将该文件句柄添加到select的事件监视队列中,在工作线程中对磁盘文件读写超时和读写操作完成进行后续处理。3.根据权利要求1或2所述的磁盘文件读写速率控制方法,对磁盘文件读写超时进行后续处理的...

【专利技术属性】
技术研发人员:李桂成
申请(专利权)人:成都广达新网科技股份有限公司
类型:发明
国别省市:四川,51

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

1