CN102279714B - Io请求控制方法和装置 - Google Patents

Io请求控制方法和装置 Download PDF

Info

Publication number
CN102279714B
CN102279714B CN201110247690.7A CN201110247690A CN102279714B CN 102279714 B CN102279714 B CN 102279714B CN 201110247690 A CN201110247690 A CN 201110247690A CN 102279714 B CN102279714 B CN 102279714B
Authority
CN
China
Prior art keywords
bandwidth
disk
request
current
wide
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
Application number
CN201110247690.7A
Other languages
English (en)
Other versions
CN102279714A (zh
Inventor
刘振中
汤晓斌
沈冠祎
顾炜
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHANGHAI WENGUANG TECHNOLOGY (GROUP) CO LTD
Original Assignee
SHANGHAI WENGUANG TECHNOLOGY (GROUP) CO LTD
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by SHANGHAI WENGUANG TECHNOLOGY (GROUP) CO LTD filed Critical SHANGHAI WENGUANG TECHNOLOGY (GROUP) CO LTD
Priority to CN201110247690.7A priority Critical patent/CN102279714B/zh
Publication of CN102279714A publication Critical patent/CN102279714A/zh
Application granted granted Critical
Publication of CN102279714B publication Critical patent/CN102279714B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开一种IO请求控制方法,包括:将磁盘的最大IO带宽分为两个逻辑部分,包括第一部分带宽和第二部分带宽,其中该第一部分带宽具有最低IO带宽;将所有IO并发通过数个IO队列访问磁盘。本发明还公开一种IO请求控制装置,包括IO代理模块,其中该IO代理模块将磁盘的最大IO带宽分为两个逻辑部分,包括第一部分带宽和第二部分带宽,其中该第一部分带宽具有最低IO带宽,并且将所有IO并发通过数个IO队列访问磁盘。本发明对IO请求进行有效控制及调度,使得IO请求对磁盘造成的压力随着请求数的增加具有线性增长的特点,在充分发挥磁盘IO性能的前提下,大大提高大并发IO访问的系统稳定性,特别适于会对磁盘产生大量并发的访问请求的应用环境。

Description

IO请求控制方法和装置
技术领域
本发明涉及磁盘控制方法,特别涉及磁盘IO请求控制方法。
背景技术
磁盘访问控制在规模较大的存储系统中是非常关键的模块,这是因为一方面磁盘作为目前主流计算机服务器的硬件瓶颈点,提高磁盘访问速度,最大限度发挥磁盘IO(输入输出)性能就能有效提高系统的整体性能;另一方面,在某些读、写具有不同优先级的场合,必须对磁盘访问进行有效控制才能提供稳定的服务。
在传统的电视播出机构、新兴的互联网视频供应商以及互联网网盘供应商等环境下,都会遇到海量数据的存储问题,通用的磁盘访问模型是不加限制的并行访问,这种方法实现难度低,在小并发量访问的前提下能够有效发挥磁盘性能,但是不适合大并发量的访问,在规模较大的并发访问情况下,容易发生磁盘抖动,严重的甚至会导致系统失去响应,带来灾难性后果。
以目前最流行的VOD点播业务提供商为例,随着网络带宽的升级以及编码技术的革新,限制VOD业务开展最关键的因素已经从网络带宽逐渐转移到磁盘存储。由于VOD业务是一个请求占用一个单独的信道来实现互动,通用的磁盘并行访问模型效率低,不能有效发挥磁盘的性能,直接导致运营商单个请求成本过高,陷入VOD运营不盈利的尴尬。
目前操作系统对磁盘的调度算法主要有先来先服务算法(FCFS)、最短寻道时间优先算法(SSTF)、扫描算法(SCAN)以及循环扫描算法(CSCAN)等,这些算法对于单个或者少量的并发IO请求,均能够有效提高IO响应速度,但由于操作系统对于大并发的IO请求没有特殊的优化,在大并发的IO请求状况下会产生如下问题:随着并发数的增加,系统调度产生的开销增加到不能忽略;读、写具有相同的优先级,不能保证读或者写优先级高的场合;读写对磁盘造成的压力难以计算,难以评估磁盘的剩余负载能力;磁盘有可能进入抖动状态,造成灾难性后果。
发明内容
本发明的目的是提供一种IO请求控制方法。本发明的目的还在于提供一种IO请求控制装置。
本发明的技术方案包括
一种IO请求控制方法,包括:将磁盘的最大IO带宽分为两个逻辑部分,包括第一部分带宽和第二部分带宽,其中该第一部分带宽具有最低IO带宽;将所有IO并发通过数个IO队列访问磁盘。
在读优先模式下,所述第一部分带宽是最小写带宽,所述第二部分带宽是读带宽。检查当前已使用的写带宽是否超出了该最小写带宽。
在写优先模式下,所述第一部分带宽是最小读带宽,所述第二部分带宽是写带宽。检查当前已使用的读带宽是否超出了该最小读带宽。
其中,检查当前剩余的IO带宽是否满足目前的IO请求所需的带宽,如果是则返回带宽,如果否则拒绝请求。在当前IO请求小于该最大IO并发访问数时,以空队列访问磁盘。
本发明还包括一种IO请求控制装置,包括IO代理模块,其中该IO代理模块将磁盘的最大IO带宽分为两个逻辑部分,包括第一部分带宽和第二部分带宽,其中该第一部分带宽具有最低IO带宽,并且将所有IO并发通过数个IO队列访问磁盘。
在读优先模式下,所述第一部分带宽是最小写带宽,所述第二部分带宽是读带宽。该IO代理模块检查当前已使用的写带宽是否超出了该最小写带宽。
在写优先模式下,所述第一部分带宽是最小读带宽,所述第二部分带宽是写带宽。该IO代理模块检查当前已使用的读带宽是否超出了该最小读带宽。
该IO代理模块检查当前剩余的IO带宽是否满足目前的IO请求所需的带宽,如果是则返回带宽,如果否则拒绝请求。
该IO代理模块在当前IO请求小于该最大IO并发访问数时,以空队列访问磁盘。
本发明的积极进步效果在于:对IO请求进行有效控制及调度,使得IO请求对磁盘造成的压力随着请求数的增加具有线性增长的特点,在充分发挥磁盘IO性能的前提下,大大提高大并发IO访问的系统稳定性,特别适于会对磁盘产生大量并发的访问请求的应用环境。
附图说明
图1是本发明的实施例1的示意图。
图2是本发明的实施例2的示意图。
具体实施方式
以下结合附图所示实施例对本发明作详细说明。
对于磁盘来说,实验表明,磁盘的IO输出并不随着并发访问数的增长呈线性增长,而是呈现一个拱门型的抛物线。因此,任何一个存储系统存在一个能够最大限度发挥磁盘输入输出(IO)性能的并发访问数,在本说明书中记为MagicN。在MagicN个并发访问数下,能够达到的最大IO输出,在本说明书中记为MAX_RW_IO。
通过设置不同的并发访问数n,记录在某一时间段内每个线程IO读取、写入的字节数,所有线程IO读取、写入字节数的总和作为磁盘的IO输出,通过统计可以得出磁盘的最大IO输出,获取MagicN。
本发明的方法将磁盘的最大IO带宽逻辑上分成两部分,第一部分带宽和第二部分带宽。在读优先模式下,所述第一部分带宽是最小写带宽,第二部分带宽是可变的读带宽。所述的最小写带宽是需要保证的最低写请求带宽,用于写请求,在本说明书记为MIN_W_IO,则最大读带宽为MAX_RW_IO-MIN_W_IO。而在写优先模式下,所述第一部分带宽是最小读带宽,第二部分带宽是可变的写带宽。
在不同的应用中,可以设定写请求优先,或是读请求优先。
下面描述读请求和写请求分别在写优先和读优先的情况下的控制过程。
实施例1,如图1所示的,对于读请求的处理过程。
当收到一个读请求时,如果应用是写请求优先的情况下(参见图1的左边部分),则判断是否有空余的带宽供该读请求使用,参见步骤110。具体为,当前实际读负载占用带宽标记为CR_IO,当前实际写负载占用带宽标记为CW_IO,那么当前系统的空闲带宽为:MAX_RW_IO-CW_IO-CR_IO;比较系统的空闲带宽与实际请求的读带宽(SR_IO),如果有剩余的IO带宽可供该读请求使用,则返回带宽(步骤400),否则就拒绝该请求(步骤300)。
如果是在读优先的情况下(参见图1右边部分),由于存在最小写带宽MIN_W_IO,可供分配给读请求的最大带宽为MAX_RW_IO-MIN_W_IO,因此判断是否有剩余带宽的方法有所不同(步骤210)。当前实际可分配给读请求的带宽为:MAX_RW_IO-MIN_W_IO-CR_IO,比较这个值与实际请求的读带宽,如果有IO带宽可供该读请求使用,进入到下一步判断,反之拒绝请求(步骤300)。
通过步骤210的计算,即使存在IO带宽可供读请求使用,也并不表示这个IO带宽是空闲的,因为在读优先模式下,如果读请求未饱和,存在CW_IO>MIN_W_IO的情况。这就要判断是否要对写请求进行调度或者释放来满足读请求。步骤220与步骤110相同,比较系统的空闲带宽与实际请求的读带宽,如果有剩余的IO带宽可供该读请求使用,则返回带宽(步骤400),否则需要释放写带宽来满足读请求(步骤230)。
实施例2,对于写请求的处理过程
如图2所示,与读请求类似,当受到一个写请求处理时,如果是读请求优先,则检查当前剩余带宽(步骤110′),即MAX_RW_IO-CR_IO-CW_IO,如果数值小于写请求所需的带宽,则返回所请求的带宽(步骤400′),否则由于资源耗尽而拒绝请求(步骤300′)。
如果是写优先级高,则先检查是否存在带宽可满足写请求(210′),如果不存在拒绝请求(300′)。否则判断是否需要释放读请求来满足写请求所需带宽(步骤220′),如果是,则释放带宽(230′),而如果否,则返回带宽(400′)。在图2中,SW_IO表示当前请求的写带宽,MIN_R_IO表示在写优先模式下需要保证的最低读带宽。
另外,在本发明中,所有IO请求通过MagicN个队列访问磁盘,使得磁盘的负载以及剩余带宽是可计算的。
可以简单的认为每一个队列不管是用来响应读请求还是响应写请求,具有相同的带宽,这里记为SINGLE_QUEUE_BAND,则:
  SINGLE_QUEUE_BAND=MAX_RW_IO/MagicN    方程1
由此可计算得到最低写带宽的最少写队列,记为MIN_W_QUEUE,如下:
  MIN_W_QUEUE=MIN_W_IO/SINGLE_QUEUE_BAND    方程2
写队列和读队列根据不同的需求具有不同的队列长度,读请求的平均速率记为MEAN_R_RATE,写请求的平均速率记为MEAN_W_RATE,读请求能够容忍的最大响应时间为RT,写请求能够容忍的最大响应时间为WT,由此可计算得出写队列的最大长度(记为W_QUEUE_SIZE)以及读队列的最大长度(记为R_QUEUE_SIZE),则:
Figure BDA0000086383720000051
在读优先级较高的情况下,系统首先保证MIN_W_QUEUE个写队列,然后根据读写请求的数目动态的的将读写请求分配到MagicN-MIN_W_QUEUE个读写队列中。由于读优先级较高,因此在接收到一个读请求时,首先查看活动读写队列是否还有剩余的资源,如果有进行分配,如果没有则查看活动读写队列中是否存在写队列,如果存在将其中的写队列调度到固定写队列中,释放资源以响应读请求,否则积极拒绝读请求。
由于不管接收到多少IO请求,代理模块均采用MagicN个线程访问磁盘,一方面保证了能够尽可能发挥磁盘的最大IO性能,保证了对磁盘的访问不会发生抖动,系统可以持续稳定的运行,另一方面在任何时候系统的IO负载RT_LOAD以及空闲带宽AV_BAND都是可衡量的。当前系统的写负载数目记为W_COUNT,读负载数目为记R_COUNT,则有:
Figure BDA0000086383720000052
由于单独一个队列只能被读请求或者写请求单独拥有,假定当前容纳读请求的队列没有多余资源,那么系统还可以接受单独的写请求带宽AV_W_BAND或者单独的读请求带宽AV_R_BAND可由此计算:
Figure BDA0000086383720000053
对于写优先的情况,具有类似的处理机制。
根据以上对本发明的阐述,本发明的具体实施方式包括:
一种IO请求控制方法,包括:将磁盘的最大IO带宽分为两个逻辑部分,包括第一部分带宽和第二部分带宽,其中该第一部分带宽具有最低IO带宽;将所有IO并发通过数个IO队列访问磁盘。
其中,检查当前剩余的IO带宽是否满足目前的IO请求所需的带宽。
在读优先模式下,所述第一部分带宽是最小写带宽,所述第二部分带宽是读带宽。检查当前已使用的写带宽是否超出了该最小写带宽。在当前IO请求小于该最大IO并发访问数时,以空队列访问磁盘。
在写优先模式下,所述第一部分带宽是最小读带宽,所述第二部分带宽是写带宽。检查当前已使用的读带宽是否超出了该最小读带宽。在当前IO请求小于该最大并发访问数时,以空队列访问磁盘。
本发明的具体实施方式还包括一种IO请求控制装置,包括IO代理模块,其中该IO代理模块将磁盘的最大IO带宽分为两个逻辑部分,包括第一部分带宽和第二部分带宽,其中该第一部分带宽具有最低IO带宽,并且将所有IO并发通过数个IO队列访问磁盘。
该IO代理模块检查当前剩余的IO带宽是否满足目前的IO请求所需的带宽。
在读优先模式下,所述第一部分带宽是最小写带宽,所述第二部分带宽是读带宽。该IO代理模块检查当前已使用的写带宽是否超出了该最小写带宽。该IO代理模块在当前IO请求小于该最大IO并发访问数时,以空队列访问磁盘。
在写优先模式下,所述第一部分带宽是最小读带宽,所述第二部分带宽是写带宽。该IO代理模块检查当前已使用的读带宽是否超出了该最小读带宽。该IO代理模块在当前IO请求小于该最大IO并发访问数时,以空队列访问磁盘。
尽管本发明依照其优选实施方式描述,但是存在落入本发明范围内的改变、置换和各种替代等同物。这里提供的示例仅是说明性的,而不是对本发明的限制。
为了简明,本说明书省略了对公知技术的描述。

Claims (2)

1.一种IO请求控制方法,其特征在于,该方法包括:
将磁盘的最大IO带宽分为两个逻辑部分,包括第一部分带宽和第二部分带宽,其中该第一部分带宽具有最低IO带宽;
将所有IO并发通过数个IO队列访问磁盘;
在读优先模式下,所述第一部分带宽是最小写带宽,所述第二部分带宽是读带宽;检查当前已使用的写带宽是否超出了该最小写带宽;
在写优先模式下,所述第一部分带宽是最小读带宽,所述第二部分带宽是写带宽;检查当前已使用的读带宽是否超出了该最小读带宽;
检查当前剩余的IO带宽是否满足目前的IO请求所需的带宽,如果是则返回带宽,如果否则拒绝请求;
在当前IO请求小于最大IO并发访问数时,以空队列访问磁盘。
2.一种IO请求控制系统,其特征在于,所述系统包括:
用于将磁盘的最大IO带宽分为两个逻辑部分的装置,该两个逻辑部分包括第一部分带宽和第二部分带宽,其中该第一部分带宽具有最低IO带宽;
用于将所有IO并发通过数个IO队列访问磁盘的装置;
在读优先模式下,所述第一部分带宽是最小写带宽,所述第二部分带宽是读带宽;
用于检查当前已使用的写带宽是否超出了该最小写带宽的装置;
在写优先模式下,所述第一部分带宽是最小读带宽,所述第二部分带宽是写带宽;
用于检查当前已使用的读带宽是否超出了该最小读带宽的装置;
用于检查当前剩余的IO带宽是否满足目前的IO请求所需的带宽,如果是则返回带宽,如果否则拒绝请求的装置;
用于在当前IO请求小于最大IO并发访问数时,以空队列访问磁盘的装置。
CN201110247690.7A 2011-08-26 2011-08-26 Io请求控制方法和装置 Active CN102279714B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110247690.7A CN102279714B (zh) 2011-08-26 2011-08-26 Io请求控制方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110247690.7A CN102279714B (zh) 2011-08-26 2011-08-26 Io请求控制方法和装置

Publications (2)

Publication Number Publication Date
CN102279714A CN102279714A (zh) 2011-12-14
CN102279714B true CN102279714B (zh) 2014-03-26

Family

ID=45105188

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110247690.7A Active CN102279714B (zh) 2011-08-26 2011-08-26 Io请求控制方法和装置

Country Status (1)

Country Link
CN (1) CN102279714B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103500073B (zh) * 2013-10-08 2016-05-18 浪潮(北京)电子信息产业有限公司 一种数据块迁移方法及装置
CN107632790A (zh) * 2017-09-30 2018-01-26 郑州云海信息技术有限公司 一种分布式存储系统中控制磁盘带宽的方法
CN111367627B (zh) * 2018-12-26 2024-02-13 三六零科技集团有限公司 一种读写磁盘任务的处理方法和装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1624669A (zh) * 2003-12-02 2005-06-08 陈凯 一种用于提高文件服务器磁盘读取速率的方法
CN101256505A (zh) * 2007-03-02 2008-09-03 中国科学院声学研究所 基于io事件通知机制的单进程内容服务器装置及方法
CN101290609A (zh) * 2007-04-17 2008-10-22 国际商业机器公司 平衡快速外围组件互连带宽的系统和方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8478945B2 (en) * 2010-02-01 2013-07-02 International Business Machines Corporation Dynamic management of destage tasks in a storage controller

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1624669A (zh) * 2003-12-02 2005-06-08 陈凯 一种用于提高文件服务器磁盘读取速率的方法
CN101256505A (zh) * 2007-03-02 2008-09-03 中国科学院声学研究所 基于io事件通知机制的单进程内容服务器装置及方法
CN101290609A (zh) * 2007-04-17 2008-10-22 国际商业机器公司 平衡快速外围组件互连带宽的系统和方法

Also Published As

Publication number Publication date
CN102279714A (zh) 2011-12-14

Similar Documents

Publication Publication Date Title
CN104717517B (zh) 一种视频转码任务调度方法及装置
US10528481B2 (en) Apparatus and method for managing storage of data blocks
KR100196882B1 (ko) 주문형 비디오 시스템 및 이 시스템의 비디오 스케쥴링방법,주문형고객서비스시스템의물리적자원스케쥴링방법,컴퓨터판독가능한메모리
CN102301664B (zh) 多核处理器的流分发方法及装置
JP5270077B2 (ja) 調停回路、クロスバ、リクエスト選択方法、及び情報処理装置
CN101089820B (zh) 信息处理装置及访问控制方法
US20120324160A1 (en) Method for data access, message receiving parser and system
CN111078396B (zh) 一种基于多任务实例的分布式数据接入方法和系统
WO2011087522A1 (en) Adaptive bandwidth allocation for memory
CN102279714B (zh) Io请求控制方法和装置
US20180004456A1 (en) Memory network to prioritize processing of a memory access request
CN110018781B (zh) 磁盘流控方法、装置以及电子设备
CN112445857A (zh) 一种基于数据库的资源配额管理方法和装置
US20040215903A1 (en) System and method of maintaining high bandwidth requirement of a data pipe from low bandwidth memories
US20150331633A1 (en) Method and system of caching web content in a hard disk
CN112799824A (zh) 一种限流方法、装置、设备和存储介质
US20220222013A1 (en) Scheduling storage system tasks to promote low latency and sustainability
JP2008544372A (ja) ポピュラリティによる情報のキャッシュ処理
CN107911484B (zh) 一种消息处理的方法及装置
JP2002358259A (ja) 優先度制御機能を有するファイルサーバ、同サーバにおけるファイルアクセス方法及びファイルアクセスプログラム
Tokekar et al. Analysis of batcing policy in view of user reneging in VOD system
US7421726B1 (en) Method of seamlessly replacing disc-based video streams with memory-based video streams in a video-on-demand system
CN108279973B (zh) 一种信息统计方法、装置及电子设备
KR100431734B1 (ko) 멀티 펌핑을 이용한 동영상 동시 제공방법
CN107835137B (zh) 用于交换机的输出端口调度系统及该交换机

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant