CN101478436A - 一种输入输出调度方法和装置 - Google Patents

一种输入输出调度方法和装置 Download PDF

Info

Publication number
CN101478436A
CN101478436A CNA2009100775042A CN200910077504A CN101478436A CN 101478436 A CN101478436 A CN 101478436A CN A2009100775042 A CNA2009100775042 A CN A2009100775042A CN 200910077504 A CN200910077504 A CN 200910077504A CN 101478436 A CN101478436 A CN 101478436A
Authority
CN
China
Prior art keywords
current path
real
path
attempt
statistics
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.)
Granted
Application number
CNA2009100775042A
Other languages
English (en)
Other versions
CN101478436B (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.)
New H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies 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 Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN2009100775042A priority Critical patent/CN101478436B/zh
Publication of CN101478436A publication Critical patent/CN101478436A/zh
Application granted granted Critical
Publication of CN101478436B publication Critical patent/CN101478436B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明公开了一种输入输出调度方法和装置。在所述方法中,多路径中的每个成员路径使用自身对应的IO个数;当一成员路径被选中为当前路径时,采用当前路径对应的IO个数进行IO调度并统计当前路径的实时带宽;根据统计的实时带宽,确定当前路径的较佳IO个数;采用确定的较佳IO个数更新所述当前路径对应的IO个数,这样在当前路径再次被选中时,可以采用更新后的IO个数进行IO调度。使用本发明多路径中的每个成员路径都可以根据实际带宽自适应调整其使用的IO个数。

Description

一种输入输出调度方法和装置
技术领域
本发明涉及输入输出(IO,Input/Output)调度技术,具体涉及一种IO调度方法和一种IO调度装置。
背景技术
在网络中,为了提高两个通信设备之间的带宽和路径可靠性,目前一般采用多条路径来连接两个通信设备,信息发送方通过选路算法选择当前路径,通过选定的当前路径进行数据传输。这种多路径技术应用在很多环境下,例如网络存储系统的应用主机和存储系统之间,再例如两个采用聚合路径通信的网络设备之间。
以网络存储系统为例,图1示出了网络存储系统中多路径的连接示意图,如图1所示,存储设备与应用主机之间通过多条路径相连接。存储设备中的一个块设备与应用主机上的多个块设备相映射,应用主机上的多个块设备分别通过独立的物理路径与存储设备上的同一块设备相连,从而形成多路径。如图1所示,存储设备中的块设备1在应用主机上映射多4个块设备,分别记为块A1~块D1。块A1~块D1分别通过4条独立的物理路径与存储设备上的块设备1相连。这4条物理路径分别记为路径A~路径D,这里将路径A~路径D称为成员路径。
应用主机中还包括为上层应用服务的控制块DM1。DM1通过选路算法确定当前通过哪条路径传输数据。当确定路径A进行数据传输时,采用预先确定的IO请求个数X进行IO调度,即向块A1发送X个IO请求。块A1将接收到的X个IO请求缓存到其发送队列中,然后逐个通过路径A发送给存储设备。每发送一个IO请求后,会接收到存储设备返回的一个确认响应,此时发送下一个IO请求。存储设备通过路径A返回被请求的数据量。当所有的IO请求发送完毕,再次执行选路算法,确定下一条传输数据的路径。
目前,不对多路径中的不同路径进行区分。无论哪条路径被选中为当前路径,均采用预先确定的IO请求个数X进行IO调度。该预先确定的IO请求个数X是手工配置的固定数值,适用于所有成员路径。
但是,这种配置固定IO请求个数的方式会带来如下缺陷:
首先,不同应用下,相同的IO请求个数对应的数据量是不同的,因此传输不同数据量所需实际带宽也是不同的。采用固定的IO请求个数通常也要求构成多路径的所有成员路径的物理带宽相同。那么,当多路径为数据量小的应用1服务时,所需实际带宽小于成员路径的物理带宽,从而不能令带宽利用率达到最大化,浪费了带宽;当多路径为数据量大的应用2服务时,所需实际带宽可能大于成员路径的物理带宽,此时会产生堵塞。
其次,在多路径方案中,一条物理路径可以被多个应用占用,如图2所示,DM1为应用1服务,DM2为应用2服务,当路径A同时被这两个应用占用时,路径A的带宽被两个应用分享。此时提供给单个应用的实际带宽减少,增加了路径A的堵塞几率。
可见,以上缺陷的产生均是由于IO请求个数的数值是人工预先配置的,无法与路径的实际带宽相适应。而且采用固定的IO请求个数还要求采用物理带宽相同的路径构成多路径,对多路径的配置造成很大限制。
同理,采用聚合路径通信的网络设备中虽然没有块设备的概念,但是IO调度的原理是相同的,也是向当前路径发送固定的IO数据包,发送完毕再选择下一条路径,并发送相同数量的IO数据包。故同样存在上述问题。
发明内容
有鉴于此,本发明提供了一种输入输出调度方法,使得多路径中的每个成员路径都可以根据实际带宽自适应调整其使用的IO个数。
该方法中,多路径中的每个成员路径使用自身对应的输入输出IO个数;该方法包括:
A、当一成员路径被选中为当前路径时,采用当前路径对应的IO个数进行IO调度,并统计当前路径的实时带宽;
B、根据统计的实时带宽,确定所述当前路径的较佳IO个数;
C、采用步骤B确定的较佳IO个数更新所述当前路径对应的IO个数;
D、所述当前路径再次被选中时,执行所述步骤A。
其中,步骤A所述统计当前路径的实时带宽为:在预设时间长度内,统计当前路径上成功发送的IO个数,将统计的IO个数与预设时间长度的商作为当前路径的实时带宽。
其中,所述步骤B包括:
b1、在预设数值范围内,选择至少一个不同于步骤A使用的IO个数的数值作为待尝试IO个数;
b2、所述当前路径再次被选中时,采用待尝试IO个数进行IO调度,并统计当前路径的实时带宽;比较当前统计的实时带宽和步骤A统计的实时带宽,将实时带宽最大者对应的IO个数确定为所述当前路径的较佳IO个数。
其中,所述步骤b1为:在预设数值范围内,随机选择一个不同于步骤A使用的IO个数的数值作为待尝试IO个数;
所述步骤b2包括:所述当前路径再次被选中时,采用随机选择的待尝试IO个数进行IO调度,并统计当前路径的实时带宽;比较当前统计的实时带宽和步骤A统计的实时带宽,如果当前统计的实时带宽大于步骤A统计的实时带宽,则将所述随机选择的待尝试IO个数确定为所述当前路径的较佳IO个数;否则,将步骤A使用的IO个数确定为所述当前路径的较佳IO个数。
其中,所述步骤b1为:在预设数值范围内,选择至少两个待尝试IO个数组成尝试集合,至少有一个待尝试IO个数大于步骤A使用的IO个数;至少有一个待尝试IO个数小于步骤A使用的IO个数。
其中,所述步骤b2包括:
b21、从尝试集合中选择一个未被处理的待尝试IO个数;
b22、所述当前路径再次被选中时,采用当前选择的IO个数进行IO调度,并统计当前路径的实时带宽;
b23、比较当前统计的实时带宽和步骤A统计的实时带宽,如果当前统计的实时带宽大于步骤A统计的实时带宽,则将所述当前选择的待尝试IO个数确定为所述当前路径的较佳IO个数,执行所述步骤C;否则,执行步骤b24。
b24、判断尝试集合中是否还有未被处理的IO个数;如果是,则返回执行所述步骤b21;否则,执行步骤b25;
b25、将步骤A使用的IO个数确定为所述当前路径的较佳IO个数,执行所述步骤C。
或者,所述步骤b2包括:
b21、从尝试集合中选择一个未被处理的待尝试IO个数;
b22、所述当前路径再次被选中时,采用当前选择的IO个数进行IO调度,并统计当前路径的实时带宽;
b23、判断尝试集合中是否还有未被处理的IO个数;如果是,则返回执行所述步骤b21;否则,执行步骤b24;
b24、判断尝试集合中各IO个数对应的实时带宽中,实时带宽最大者是否大于步骤A统计的实时带宽;如果是,则将所述带宽最大者对应的IO个数确定为所述当前路径的较佳IO个数,执行所述步骤C;否则,将步骤A使用的IO个数确定为所述当前路径的较佳IO个数,执行所述步骤C。
其中,所述选择至少两个待尝试IO个数组成尝试集合为:选择两个待尝试IO个数组成尝试集合,其中一个大于步骤A使用的IO个数,另一个待尝试IO个数小于步骤A使用的IO个数,并且两个待尝试IO个数与步骤A使用的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个数发送给所述更新模块,并通知所述第一调度模块已完成尝试操作;
所述更新模块,用于采用接收的较佳IO个数更新所述IO个数存储单元存储的当前路径对应的IO个数。
较佳地,所述尝试模块随机选择一个不同于所接收通知中IO个数的数值作为待尝试IO个数。
较佳地,所述尝试模块选择至少两个待尝试IO个数组成尝试集合,至少有一个待尝试IO个数大于所接收通知中的IO个数;至少有一个待尝试IO个数小于所接收通知中的IO个数。
较佳地,该装置进一步包括单应用处理单元,用于保存各成员路径的较佳IO个数;当多路径被单个应用占用时,根据保存的较佳IO个数分别为各成员路径设置对应的固定IO个数,各成员路径后续被选中时采用对应的固定IO个数进行IO调度。
根据以上技术方案可见,本发明根据成员路径传送IO数据包时的实时带宽确定该成员路径的较佳IO个数,并作为该成员路径再次被选中时使用的IO个数。这样不断循环,当成员路径带宽变化时,其对应的IO个数也随之变化,从而实现了IO个数根据带宽变化的自适应调整。
由于各路径的IO个数可以根据该路径的实时带宽调整,因此不必规定多路径中每个成员路径的物理带宽相同,可以采用相同或不同物理带宽的路径组成多路径,使得多路径的配置更为灵活。
此外,当一条成员路径被多个应用占用时,每个应用都可以根据实际占用的带宽调整使用的IO个数,以适应实际环境,从而避免因实际带宽被其它应用占用造成堵塞情况频发。
附图说明
图1为现有网络存储系统中多路径的连接示意图。
图2为现有网路存储系统中多路径的另一连接示意图。
图3为本发明IO调度方案的示例性流程图。
图4为本发明IO调度方案应用于网络存储系统的实施例一的流程图。
图5为本发明IO调度方案应用于网络存储系统的实施例二的流程图。
图6为本发明IO调度方案应用于网络存储系统的实施例三的流程图。
图7为本发明实施例中IO调度装置的结构示意图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明提供了一种IO调度方案,其基本思想为:多路径中的每个成员路径使用自身对应的IO个数;当某个成员路径被选中为当前路径后,根据当前路径的实时带宽确定该当前路径的较佳IO个数,该IO较佳个数在当前路径后续被选中时使用。在使用该较佳IO个数的同时,继续进行较佳IO个数的测定,从而达到各路径根据自身实际带宽变化自适应调整所使用IO个数的目的。
图3示出了基于以上基本思想的IO调度方案的示例性流程图,如图3所示,该流程包括以下步骤:
步骤301:当某成员路径被选中为当前路径时,采用当前路径对应的IO个数进行IO调度,并统计当前路径的实时带宽。
其中,当前路径对应的IO个数是指当前被认为是较佳的IO个数,初始化时,该对应的IO个数被设置为预设的初始值,例如100。执行一轮较佳IO个数测定流程后,该设置的IO个数被更新。
步骤302:根据统计的实时带宽,确定当前路径的较佳IO个数。
步骤303:采用步骤302确定的较佳IO个数更新当前路径对应的IO个数,使得所述较佳IO个数在当前路径再次选中时被使用。
步骤304:当前路径再次被选中时,执行步骤301。
根据上述流程,采用图3的处理方法,当路径带宽变化时,该路径对应的IO个数也随之变化,从而实现了IO个数的自适应调整。
由于各路径的IO个数可以根据该路径的实时带宽调整,因此不必规定多路径中每个成员路径的物理带宽相同,可以采用相同或不同物理带宽的路径组成多路径,使得多路径的配置更为灵活。
此外,当一条成员路径被多个应用占用时,每个应用都可以根据实际占用的带宽调整使用的IO个数,以适应实际环境,从而避免因实际带宽被其它应用占用造成堵塞情况频发。
本发明方案可以应用于采用多个成员路径组成一条传输路径的环境。下面以网络存储系统为例对本发明的IO调度方案进行详细描述。在网络存储系统中IO个数为IO请求个数。
本发明中根据统计的实时带宽确定当前路径的较佳IO个数为关键步骤,在实际中,可以采用多种方法实现,例如尝试法、随机法、预先设置法,等等。
其中,尝试法就是:在预设数值范围内,选择至少一个不同于步骤301使用的IO请求个数的数值作为待尝试IO个数。在当前路径后续被选中时,采用待尝试IO请求个数进行IO调度,并统计当前路径的实时带宽。比较当前统计的实时带宽和步骤301统计的实时带宽,将实时带宽最大者对应的IO请求个数确定为当前路径的较佳IO请求个数。整个尝试过程就是较佳IO请求个数的测定过程。通过不断的测定,使得IO请求个数朝着最佳数值靠拢,当实际带宽发生变化时,IO请求个数也随之变化,从而实现了自适应。
下面就举实施例一和实施例二对采用尝试法实现IO调度的方案进行详细描述。
图4为本发明IO调度方案应用于网络存储系统的实施例一的流程图。如图4所示,该方法包括以下步骤:
步骤401:当图1中的路径A被选中为当前路径时,采用路径A对应的IO请求个数进行IO调度。
假设路径A对应的IO请求个数为X1,则本步骤中,采用路径A对应的IO请求个数进行IO调度是指:图1中的DM1向块A1发送X1个IO请求,块A1缓存这X1个IO请求,并通过路径A向存储设备传输缓存的IO请求。
初始化时,将路径A对应的IO请求个数设置为预设数值,例如100。
步骤402:在路径A传输IO请求过程中,统计路径A的实时带宽,记为W0。
本步骤中,统计当前路径的实时带宽可以为:在预设时间长度内,统计路径A上成功发送IO请求的个数,将统计的IO请求个数与预设时间长度的商作为路径A的实时带宽。预设时间长度可以是一秒或几秒,合理而定。
在实际中,统计当前路径实际带宽的方式不限于本实施例示出的这种,只要能够得到路径带宽即可应用在本发明中。
步骤403:在预设数值范围内,选择至少两个待尝试IO请求个数组成尝试集合,且至少有一个待尝试IO请求个数大于步骤401使用的IO请求个数,至少有一个待尝试IO请求个数小于步骤401使用的IO请求个数。
本实施例中,较佳地,选择两个待尝试IO请求个数——X2和X3,X2和X3组成尝试集合,其中X2大于步骤401使用的IO请求个数X1,X3小于X1。X2和X3不能与X1相差太多,较佳地,令X2与X1之差的绝对值等于X3与X1之差的绝对值。
步骤404:从尝试集合中,选择一个未被处理的待尝试IO请求个数。
本步骤选出的待尝试IO请求个数作为路径A下一次被调用时尝试使用的IO请求个数。在选择时,可以按照先大再小的次序,或先小再大的次序,没有一定之规。
步骤405:当路径A再次被选中时,采用步骤404选择的IO请求个数进行IO调度,并统计路径A的实时带宽,记为Wn,其中n为本轮最佳IO请求个数测定中的第n次尝试。
步骤406:比较步骤405统计的实时带宽Wn与步骤402统计的实时带宽W0,如果步骤405统计的实时带宽Wn大于W0,则执行步骤407;否则,执行步骤408。
步骤407:将步骤404选择的待尝试IO请求个数确定为路径A的较佳IO请求个数。执行步骤410。
步骤408:判断尝试集合中是否还有未被处理的IO请求个数,如果是,则返回执行步骤404;否则,执行步骤409。
步骤409:将步骤401使用的IO请求个数确定为路径A的较佳IO请求个数。执行步骤410。
步骤410:采用确定的较佳IO请求个数更新路径A对应的IO请求个数,使得所述确定的较佳IO请求个数在路径A再次选中时被使用。
步骤411:路径A再次被选中时,返回执行所述步骤401。
至此,本流程结束。
从本实施例一的流程可见,本实施例中,通过设置尝试集合并尝试尝试集合中的IO请求个数,确定路径A上连续发送多少个IO请求时路径A的带宽最大,那么这条路径下次被选中时就使用这个IO请求个数,并开始下一轮尝试。
这里针对图4的实施方式举个实例。假设路径A对应的IO请求个数是100,那么在路径A被选中并用100进行IO调度时,采用99和101组成尝试集合,先尝试99再尝试101。
如果尝试99后,路径A的实时带宽增大,那么就将99作为本轮确定的较佳IO请求个数,并将路径A对应的IO请求个数设为99,使得在路径A下一次被选中时采用99执行调度。然后,继续尝试98和100,以此类推,不停的尝试。
如果尝试99后,路径A的实时带宽未增大,那么在路径A下一次被选中时尝试101。此时,如果路径带宽大于使用100时的带宽,则将101作为本轮确定的较佳IO请求个数,并将路径A对应的IO请求个数设为101,使得在路径A下一次被选中时采用101执行调度。之后继续尝试100和102,以此类推,不停的尝试。
如果尝试99和101后,路径A的实时带宽均未增大,则将100作为本轮确定的较佳IO请求个数,并将路径A对应的IO请求个数设为100,使得在路径A下一次被选中时仍采用100执行调度。之后再次尝试99和101,以此类推,不停的尝试。
采用实施例一的实施方式,在尝试过程中,只要出现带宽增加的情况,就停止尝试,采用当前尝试的IO请求个数作为较佳IO请求个数。在实际中,可能一个尝试集合中有多个待尝试IO请求个数对应的实时带宽均大于原带宽W0,且很可能还未来得及被尝试的IO请求个数对应的带宽大于已经被尝试的IO请求个数对应的带宽,因此采用本实施例的尝试方式虽然能够在本轮尝试中尽快得到较佳结果,但是从整个效果来看,向带宽最大化的方向收敛速度比较慢。为了增加收敛速度,可以采用实施例二的方案。
图5示出了本发明IO调度方案应用于网络存储系统的实施例二的流程图。如图5所示,该流程包括以下步骤:
步骤501~步骤503与实施例一中的步骤401~步骤403相同,这里不赘述。
步骤504:从尝试集合中,选择一个未被处理的待尝试IO请求个数。
步骤505:当路径A再次被选中时,采用步骤504选择的IO请求个数进行IO调度,并统计路径A的实时带宽,记为Wn。
步骤506:判断尝试集合中是否还有未被处理的IO请求个数,如果是,则返回执行步骤504;否则,执行步骤507。
步骤507:判断尝试集合中各IO请求个数对应的实时带宽中,实时带宽最大者是否大于步骤502统计的实时带宽W0,如果是,则执行步骤508;否则,执行步骤509。
步骤508:将实时带宽最大者对应的IO请求个数确定为路径A的较佳IO请求个数。执行步骤510。
步骤509:将步骤501使用的IO请求个数确定为路径A的较佳IO请求个数。执行步骤510。
步骤510:采用确定的较佳IO请求个数更新路径A对应的IO请求个数,使得较佳IO请求个数在路径A再次选中时被使用。
步骤511:路径A再次被选中时,返回执行所述步骤501。
至此,本流程结束。
以上两个实施例均采用尝试法对尝试集合中的值进行尝试,以确定较佳IO请求个数。在本发明实施例三中采用随机法实现较佳IO请求个数的测定。
图6示出了本发明IO调度方案应用于网络存储系统的实施例二的流程图。如图6所示,该流程包括以下步骤:
步骤601:当图1中的路径A被选中为当前路径时,采用路径A对应的IO请求个数进行IO调度。
步骤602:在路径A传输IO请求过程中,统计路径A的实时带宽,记为W0。
步骤603:在预设数值范围内,随机选择一个不同于步骤601使用的IO请求个数作为待尝试IO请求个数。随机值不能随意取,太大太小都不符合实际情况,因此可以预先设定数值范围作为允许的IO请求个数取值集合,随机选择时只能在预设数值范围内选择,避免数值选择的不合理。
步骤604:当路径A再次被选中时,采用步骤603选择的待尝试IO请求个数进行IO调度,并统计路径A的实时带宽,记为W2。
步骤605:判断W2是否大于W1,如果是,则执行步骤606;否则,执行步骤607。
步骤606:将步骤603选择的待尝试IO请求个数确定为路径A的较佳IO请求个数。执行步骤608。
步骤607:将步骤601使用的IO请求个数确定为路径A的较佳IO请求个数。执行步骤608。
步骤608:采用确定的较佳IO请求个数更新路径A对应的IO请求个数,使得较佳IO请求个数在路径A再次选中时被使用。
步骤609:路径A再次被选中时,返回执行所述步骤601。
至此,本流程结束。
以上三个实施例中无论是随机法还是尝试法均有尝试过程,在本发明另一个实施例中采用预先设置法确定较佳IO个数。具体来说,预先设定各带宽值对应的IO请求个数;当统计到路径A的实时带宽后,查找该实时带宽值对应的预设IO请求个数,将查找到的预设IO请求个数确定为路径A的较佳IO请求个数,并更新路径A对应的IO请求个数,使得在路径A下一次被选中时可以采用本次查找到的预设IO请求个数进行IO调度。这种方式比较简单,但是需要预先根据经验进行设置,不够精确。
以上描述的多种实施方式可以应用于多路径被单个应用占用的情况,也可以应用于多路径被多个应用同时占用的情况。当被多个应用占用时,各路径的实际带宽可能根据占用情况发生变化,例如时刻1路径A被两个应用占用,那么留给应用1的实际带宽就少,时刻2路径A只被应用1占用,留给应用1的实际带宽就多。当多路径只被单个应用占用时,路径只为一个应用提供服务,因此多路径中各成员路径的实际带宽固定不变。在多路径只被单个应用占用的情况下,完全可以分别对各路径设置固定的较佳IO请求个数,无需变化。这些固定设置的较佳IO请求个数可以通过采用图4或图5的流程进行预先实验得到。实验时,令多路径被单个应用占用,当较佳IO请求个数变化停止或在某个数值左右徘徊时,证明较佳IO请求个数出现。保存各成员路径的较佳IO请求个数。当多路径被单个应用占用时,根据保存的较佳IO请求个数,分别为各成员路径设置对应的固定IO请求个数,各成员路径被选中时采用对应的固定IO请求个数进行IO调度。较佳地,在保存各成员路径的较佳IO请求个数时,针对不同应用分别保存。
由于IO请求个数可以自适应调整,因此本发明不局限于采用相同物理带宽的成员路径组成多路径,还可以采用不同物理带宽的成员路径组成多路径。
为了实现本发明的IO调度方法,本发明还提供了一种IO调度装置。图7为本发明实施例中IO调度装置的结构示意图。如图7所示,该装置包括IO个数存储单元71和调度单元72。其中,
IO个数存储单元71,用于存储多路径中各成员路径对应的IO个数,每个成员路径使用自身对应的IO个数。
调度单元72,用于在一成员路径被选中为当前路径时,从IO个数存储单元71中获取当前路径对应的IO个数,采用获取的IO个数进行IO调度,并统计当前路径的实时带宽。根据统计的实时带宽,确定当前路径的较佳IO个数,采用所确定的较佳IO个数更新IO个数存储单元71存储的当前路径对应的IO个数,使得当前路径后续再次被选中时能够采用更新后的较佳IO个数进行IO调度。
调度单元72具体包括第一调度模块721、尝试模块722和更新模块723。本实施例中,尝试模块722可以设置多个,每个尝试模块722负责一条成员路径。当然在实际中也可以采用一个尝试模块722负责多路径中的所有成员路径。
第一调度模块721,用于在一成员路径被选中为当前路径时,判断当前路径对应的尝试模块722是否完成尝试操作;如果是,则从IO个数存储单元71中获取当前路径对应的IO个数,采用获取的IO个数进行IO调度,并统计当前路径的实时带宽,然后向尝试模块722发送开始尝试的通知,该通知携带本次IO调度使用IO个数和统计的实时带宽。如果当前路径对应的尝试模块722还未完成较佳IO个数的尝试操作,则该第一调度模块721不对当前路径执行操作,而是由尝试模块722继续其尝试操作。
尝试模块722,用于接收到第一调度模块721发来的开始尝试的通知后,进入尝试操作阶段。在尝试阶段中,尝试模块722在预设数值范围内,选择至少一个不同于所接收通知中IO个数的数值作为待尝试IO个数;在对应的成员路径后续被选中为当前路径时,采用待尝试IO个数进行IO调度,并统计当前路径的实时带宽;比较当前统计的实时带宽和所接收通知携带的实时带宽,将实时带宽最大者对应的IO个数确定为所述当前路径的较佳IO个数,将当前路径的较佳IO个数发送给更新模块723,并通知所述第一调度模块721自身已经完成了尝试操作。
该尝试模块722在选择待尝试IO个数时,可以随机选择一个不同于所接收IO个数的数值作为待尝试IO个数;或者选择至少两个待尝试IO个数组成尝试集合,其中至少有一个待尝试IO个数大于所接收通知中的IO个数;至少有一个待尝试IO个数小于所接收通知中的IO个数。并且采用尝试集合中的数据进行尝试时,可以尝试完集合中的所有待尝试IO个数后再确定哪个待尝试IO个数对应的实时带宽最大,也可以在首次出现实时带宽大于通知中实时带宽时,确定当前尝试的IO个数对应的实时带宽最大。
更新模块723,用于采用接收的较佳IO个数更新IO个数存储单元71存储的当前路径对应的IO个数。
较佳地,本发明实施例的IO调度装置进一步包括单应用处理单元73,用于保存各成员路径的较佳IO个数;当多路径被单个应用占用时,调度单元72不工作,由单应用处理单元73接管调度工作,该单应用处理单元73根据保存的较佳IO个数,分别为各成员路径设置对应的固定IO个数,各成员路径被选中时采用对应的固定IO个数进行IO调度。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (15)

1、一种输入输出调度方法,其特征在于,多路径中的每个成员路径使用自身对应的输入输出IO个数;该方法包括:
A、当一成员路径被选中为当前路径时,采用当前路径对应的IO个数进行IO调度,并统计当前路径的实时带宽;
B、根据统计的实时带宽,确定所述当前路径的较佳IO个数;
C、采用步骤B确定的较佳IO个数更新所述当前路径对应的IO个数;
D、所述当前路径再次被选中时,执行所述步骤A。
2、如权利要求1所述的方法,其特征在于,步骤A所述统计当前路径的实时带宽为:在预设时间长度内,统计当前路径上成功发送的IO个数,将统计的IO个数与预设时间长度的商作为当前路径的实时带宽。
3、如权利要求1所述的方法,其特征在于,所述步骤B包括:
b1、在预设数值范围内,选择至少一个不同于步骤A使用的IO个数的数值作为待尝试IO个数;
b2、所述当前路径再次被选中时,采用待尝试IO个数进行IO调度,并统计当前路径的实时带宽;比较当前统计的实时带宽和步骤A统计的实时带宽,将实时带宽最大者对应的IO个数确定为所述当前路径的较佳IO个数。
4、如权利要求3所述的方法,其特征在于,所述步骤b1为:在预设数值范围内,随机选择一个不同于步骤A使用的IO个数的数值作为待尝试IO个数;
所述步骤b2包括:所述当前路径再次被选中时,采用随机选择的待尝试IO个数进行IO调度,并统计当前路径的实时带宽;比较当前统计的实时带宽和步骤A统计的实时带宽,如果当前统计的实时带宽大于步骤A统计的实时带宽,则将所述随机选择的待尝试IO个数确定为所述当前路径的较佳IO个数;否则,将步骤A使用的IO个数确定为所述当前路径的较佳IO个数。
5、如权利要求3所述的方法,其特征在于,所述步骤b1为:在预设数值范围内,选择至少两个待尝试IO个数组成尝试集合,至少有一个待尝试IO个数大于步骤A使用的IO个数;至少有一个待尝试IO个数小于步骤A使用的IO个数。
6、如权利要求5所述的方法,其特征在于,所述步骤b2包括:
b21、从尝试集合中选择一个未被处理的待尝试IO个数;
b22、所述当前路径再次被选中时,采用当前选择的IO个数进行IO调度,并统计当前路径的实时带宽;
b23、比较当前统计的实时带宽和步骤A统计的实时带宽,如果当前统计的实时带宽大于步骤A统计的实时带宽,则将所述当前选择的待尝试IO个数确定为所述当前路径的较佳IO个数,执行所述步骤C;否则,执行步骤b24。
b24、判断尝试集合中是否还有未被处理的IO个数;如果是,则返回执行所述步骤b21;否则,执行步骤b25;
b25、将步骤A使用的IO个数确定为所述当前路径的较佳IO个数,执行所述步骤C。
7、如权利要求5所述的方法,其特征在于,所述步骤b2包括:
b21、从尝试集合中选择一个未被处理的待尝试IO个数;
b22、所述当前路径再次被选中时,采用当前选择的IO个数进行IO调度,并统计当前路径的实时带宽;
b23、判断尝试集合中是否还有未被处理的IO个数;如果是,则返回执行所述步骤b21;否则,执行步骤b24;
b24、判断尝试集合中各IO个数对应的实时带宽中,实时带宽最大者是否大于步骤A统计的实时带宽;如果是,则将所述带宽最大者对应的IO个数确定为所述当前路径的较佳IO个数,执行所述步骤C;否则,将步骤A使用的IO个数确定为所述当前路径的较佳IO个数,执行所述步骤C。
8、如权利要求5所述的方法,其特征在于,所述选择至少两个待尝试IO个数组成尝试集合为:选择两个待尝试IO个数组成尝试集合,其中一个大于步骤A使用的IO个数,另一个待尝试IO个数小于步骤A使用的IO个数,并且两个待尝试IO个数与步骤A使用的IO个数之差的绝对值相等。
9、如权利要求3至8任意一项所述的方法,其特征在于,该方法进一步包括:保存各成员路径的较佳IO个数;当多路径被单个应用占用时,根据保存的较佳IO个数分别为各成员路径设置对应的固定IO个数,各成员路径后续被选中时采用对应的固定IO个数进行IO调度。
10、如权利要求1所述的方法,其特征在于,所述多路径中的不同成员路径的物理带宽相同或不同。
11、一种输入输出调度装置,其特征在于,该装置包括IO个数存储单元和调度单元;
所述IO个数存储单元,用于存储多路径中各成员路径对应的IO个数,每个成员路径使用自身对应的IO个数;
所述调度单元,用于在一成员路径被选中为当前路径时,从所述IO个数存储单元中获取当前路径对应的IO个数,采用获取的IO个数进行IO调度,并统计当前路径的实时带宽;根据统计的实时带宽,确定所述当前路径的较佳IO个数,采用所确定的较佳IO个数更新所述IO个数存储单元存储的当前路径对应的IO个数,使得所述当前路径再次被选中时采用更新后的较佳IO个数进行IO调度。
12、如权利要求11所述的装置,其特征在于,所述调度单元包括第一调度模块、更新模块和每个成员路径对应的尝试模块;
所述第一调度模块,用于在一成员路径被选中为当前路径时,判断当前路径对应的尝试模块是否完成尝试操作;如果是,则从所述IO个数存储单元中获取当前路径对应的IO个数,采用获取的IO个数进行IO调度,并统计当前路径的实时带宽,然后向尝试模块发送开始尝试的通知,该通知携带本次IO调度使用IO个数和统计的实时带宽;否则,不执行操作;
所述尝试模块,用于在接收到开始尝试的通知后开始尝试操作;在尝试操作中,在预设数值范围内,选择至少一个不同于所接收通知中IO个数的数值作为待尝试IO个数;在对应的成员路径再次被选中为当前路径时,采用待尝试IO个数进行IO调度,并统计当前路径的实时带宽;比较当前统计的实时带宽和所接收通知中的实时带宽,将实时带宽最大者对应的IO个数确定为所述当前路径的较佳IO个数,将当前路径的较佳IO个数发送给所述更新模块,并通知所述第一调度模块已完成尝试操作;
所述更新模块,用于采用接收的较佳IO个数更新所述IO个数存储单元存储的当前路径对应的IO个数。
13、如权利要求12所述的装置,其特征在于,所述尝试模块随机选择一个不同于所接收通知中IO个数的数值作为待尝试IO个数。
14、如权利要求12所述的装置,其特征在于,所述尝试模块选择至少两个待尝试IO个数组成尝试集合,至少有一个待尝试IO个数大于所接收通知中的IO个数;至少有一个待尝试IO个数小于所接收通知中的IO个数。
15、如权利要求12所述的装置,其特征在于,该装置进一步包括单应用处理单元,用于保存各成员路径的较佳IO个数;当多路径被单个应用占用时,根据保存的较佳IO个数分别为各成员路径设置对应的固定IO个数,各成员路径后续被选中时采用对应的固定IO个数进行IO调度。
CN2009100775042A 2009-01-21 2009-01-21 一种输入输出调度方法和装置 Active CN101478436B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100775042A CN101478436B (zh) 2009-01-21 2009-01-21 一种输入输出调度方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100775042A CN101478436B (zh) 2009-01-21 2009-01-21 一种输入输出调度方法和装置

Publications (2)

Publication Number Publication Date
CN101478436A true CN101478436A (zh) 2009-07-08
CN101478436B CN101478436B (zh) 2011-01-19

Family

ID=40839071

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100775042A Active CN101478436B (zh) 2009-01-21 2009-01-21 一种输入输出调度方法和装置

Country Status (1)

Country Link
CN (1) CN101478436B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102547869A (zh) * 2010-12-30 2012-07-04 瑞昱半导体股份有限公司 无线通信系统及其相关方法
CN103236985A (zh) * 2013-04-02 2013-08-07 浪潮电子信息产业股份有限公司 一种访问存储的多路径负载均衡系统
CN103324444A (zh) * 2013-05-24 2013-09-25 浪潮电子信息产业股份有限公司 一种主机端与存储端协同的多控io调度方法
CN103650441A (zh) * 2013-06-28 2014-03-19 华为技术有限公司 基于时间的业务处理方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7154885B2 (en) * 2001-12-31 2006-12-26 Stmicroelectronics Ltd. Apparatus for switching data in high-speed networks and method of operation
CN100418313C (zh) * 2005-12-21 2008-09-10 中国科学院计算技术研究所 适于带宽变化的链路分层共享和管理域的带宽重分配方法
CN100428170C (zh) * 2007-01-26 2008-10-22 清华大学 基于贝叶斯决策的负载感知的io性能优化方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102547869A (zh) * 2010-12-30 2012-07-04 瑞昱半导体股份有限公司 无线通信系统及其相关方法
CN103236985A (zh) * 2013-04-02 2013-08-07 浪潮电子信息产业股份有限公司 一种访问存储的多路径负载均衡系统
CN103324444A (zh) * 2013-05-24 2013-09-25 浪潮电子信息产业股份有限公司 一种主机端与存储端协同的多控io调度方法
CN103324444B (zh) * 2013-05-24 2017-09-22 浪潮电子信息产业股份有限公司 一种主机端与存储端协同的多控io调度方法
CN103650441A (zh) * 2013-06-28 2014-03-19 华为技术有限公司 基于时间的业务处理方法及装置
CN103650441B (zh) * 2013-06-28 2016-12-28 华为技术有限公司 基于时间的业务处理方法及装置
CN106452980A (zh) * 2013-06-28 2017-02-22 华为技术有限公司 基于时间的业务处理方法及装置
CN106452980B (zh) * 2013-06-28 2019-11-15 华为技术有限公司 基于时间的业务处理方法及装置

Also Published As

Publication number Publication date
CN101478436B (zh) 2011-01-19

Similar Documents

Publication Publication Date Title
CN102171580B (zh) 在被管理网络上的layer-2处的包汇聚和分割
US6738386B1 (en) Controlled latency with dynamically limited queue depth based on history and latency estimation
CN100574310C (zh) 一种信誉流量控制方法
KR101225224B1 (ko) 콘텐츠 전달 네트워크용의 중앙 집중 스케줄러
CN101478436B (zh) 一种输入输出调度方法和装置
US11128571B2 (en) Communication system, communication apparatus, and communication method
US20050271070A1 (en) Radio module
CN101039273B (zh) 通信设备、传输控制方法、和传输控制程序
CN101253781A (zh) 媒体访问控制架构
CN102422704A (zh) 传送rlc数据块的方法
MXPA06010111A (es) Metodo y aparato para la entrega de datagrama isocrono sobre un enlace de datos basado en contencion.
CN1183190A (zh) 宽带交换系统
US20040083477A1 (en) Adaptive scheduling of data delivery in a central server
US6185188B1 (en) Method and apparatus for controlling physical port flow rate in packet communications
CN109104373A (zh) 网络拥塞的处理方法、装置及系统
US10033546B2 (en) Method and system for reprogramming
CN106254447A (zh) 负载均衡方法、bras设备和sdn控制器
CA2503867A1 (en) Message send queue reordering based on priority
US11564241B2 (en) Method for operating a radio communication system for an industrial automation system, radio communication system, base station and subscriber station
EP1365605B1 (en) Method and apparatus for network access control in a CDMA system
KR20130109211A (ko) 송신 장치, 수신 장치, 통신 장치, 통신 시스템 및 송신 방법
KR101465884B1 (ko) 소프트웨어 정의 네트워크에서의 확률적 컨트롤러 선택 방법 및 장치
US20080186982A1 (en) Load balancing of broadband subscriber sessions
KR101099447B1 (ko) 물리 링크 정보를 고려한 링크 어그리게이션 장치 및 이를 이용한 데이터 전송 방법
CN107135165B (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
C14 Grant of patent or utility model
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No.

Patentee after: Xinhua three Technology Co., Ltd.

Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base

Patentee before: Huasan Communication Technology Co., Ltd.