一种I/O请求调度方法及调度器技术

技术编号:14740423 阅读:49 留言:0更新日期:2017-03-01 14:51
本发明专利技术为一种I/O请求调度方法及调度器,实施例公开了一种基于时间片的请求调度方法,在进入当前调度时段时,为每个I/O请求对象分配一个时间片,并为每个I/O请求对象设定调度时间阈值;在当前调度时段内,轮流从时间片尚未用完且具有I/O请求的I/O请求对象中选择I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录调度时长,当调度时长达到所选择的I/O请求对象的调度时间阈值时,或者,当调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。本申请可以避免响应I/O请求对象的I/O请求的时间过长的问题。

【技术实现步骤摘要】

本专利技术涉及I/O调度
,尤其涉及一种I/O请求调度方法及调度器
技术介绍
通常,在数据中心尤其是虚拟化数据中心中,存储器由多个I/O请求对象共享使用,在这种共享使用的场景下,对于服务质量QoS有一定的要求,即:要求能够公平地为多个I/O请求对象分配存储器的资源,并且高效地利用所分配的资源。I/O调度器在服务质量的保障方面起着决定性作用。目前,已有的基于时间片且满足一定服务质量保障公平性的I/O调度器包括:CFQ(CompletelyFairQueuing)调度器、Argon调度器和FIOS(FlashI/OScheduler)调度器:CFQ在正在服务的I/O请求对象的时间片尚未用完且目前没有I/O请求时,会空闲等待一段时间,等待同一I/O请求对象的下一个I/O请求的达到。Argon与CFQ的工作原理类似。FIOS将CPU时间划分为调度时段,在单个调度时段内部,为每个I/O请求对象分配时间片;在单个调度时段内,当I/O请求对象的I/O请求队列非空且时间片尚未用完时,连续服务此I/O请求对象的I/O请求;当I/O请求对象的时间片用完后,在本调度时段内不再服务此I/O请求对象的I/O请求。但是,CFQ与Argon在一个时间片内连续服务或空闲等待同一个I/O请求对象的I/O请求,会导致其它I/O请求对象的I/O请求长时间得不到服务,从而响应I/O请求对象的I/O请求的时间过长。而FIOS在一个I/O请求对象的时间片尚未用完且具有I/O请求时,则连续服务此I/O请求对象的I/O请求,不服务其它I/O请求对象的I/O请求,也会导致其它I/O请求对象的I/O请求长时间得不到服务,因此还是存在响应I/O请求对象的I/O请求的时间过长的问题。因此,已有的基于时间片且满足一定服务质量保障公平性的I/O调度器,均存在响应I/O请求对象的I/O请求的时间过长的问题。
技术实现思路
本专利技术实施例提供了一种I/O请求调度方法及调度器,用于解决现有的I/O调度器响应I/O请求对象的I/O请求的时间过长的问题。为解决上述技术问题,本专利技术实施例提供以下技术方案:本申请的第一方面提供了一种I/O请求调度方法,包括:在进入当前调度时段时,侦测在所述当前时段访问存储设备的I/O请求对象,为侦测到的每个I/O请求对象分配一个时间片,并为侦测到的每个I/O请求对象设定调度时间阈值;其中,为侦测到的每个I/O请求对象分配的时间片之和小于或等于所述当前调度时段;在当前调度时段内,轮流对时间片尚未用完且具有I/O请求的I/O请求对象执行如下步骤,直到所述当前调度时段内不存在时间片尚未用完且具有I/O请求的I/O请求对象:从所述时间片尚未用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录调度时长,直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。在本申请的第一方面的第一种实现方式中,还包括:在所述当前调度时段内,当所有时间片尚未用完的I/O请求对象的I/O请求均被调度完成时,启动预期计时;在启动所述预期计时后,当所述预期计时的时长尚未达到预设的计时阈值,且侦测到时间片尚未用完的I/O请求对象产生新的I/O请求时,结束所述预期计时,并调度所述新的I/O请求。在本申请的第一方面的第二种实现方式中,还包括:在所述当前调度时段内,当所有时间片尚未用完的I/O请求对象的I/O请求均被调度完成时,启动预期计时;在启动所述预期计时后,轮流对时间片已经用完且具有I/O请求的I/O请求对象执行如下步骤:从所述时间片已经用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录调度时长,直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。在本申请的第一方面的第三种实现方式中,所述每个I/O请求对象的I/O请求包括:读请求和写请求;所述读请求排在读请求队列中,所述写请求排在写请求队列中;则,所述调度所选择的I/O请求对象的I/O请求包括:在预设的读请求调度时长内,调度所述读请求队列中的读请求;在预设的写请求调度时长内,调度所述写请求队列中的写请求;其中,每个I/O请求对象的读请求调度时长与写请求调度时长之和小于或等于每个I/O请求对象的调度时间阈值。在本申请的第一方面的第四种实现方式中,还包括:在调度所述读请求队列中的读请求时,如果所述写请求队列中的写请求发生阻塞,则记录所述写请求阻塞时长,并在所述写请求阻塞时长达到预设的写请求阻塞时间阈值时,调度所述写请求队列中的写请求;在调度所述写请求队列中的写请求时,如果所述读请求队列中的读请求发生阻塞,则记录所述读请求阻塞时长,并在所述读请求阻塞时长达到预设的读请求阻塞时间阈值时,调度所述读请求队列中的读请求。在本申请的第一方面的第五种实现方式中,所述为侦测到的每个I/O请求对象设定调度时间阈值,具体为:根据侦测到的I/O请求对象的个数和侦测到的每个I/O请求对象的响应时间需求,为侦测到的每个I/O请求对象设定调度时间阈值。本申请的第二方面提供了一种I/O请求调度器,包括:分配模块,用于在进入当前调度时段时,侦测在所述当前时段访问存储设备的I/O请求对象,为侦测到的每个I/O请求对象分配一个时间片,并为侦测到的每个I/O请求对象设定调度时间阈值;其中,为侦测到的每个I/O请求对象分配的时间片之和小于或等于所述当前调度时段;第一调度模块,用于在当前调度时段内,轮流对时间片尚未用完且具有I/O请求的I/O请求对象执行如下步骤,直到所述当前调度时段内不存在时间片尚未用完且具有I/O请求的I/O请求对象:从所述时间片尚未用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录调度时长,直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。在本申请的第二方面的第一种实现方式中,还包括:预期计时模块,用于在所述当前调度时段内,当所有时间片尚未用完的I/O请求对象的I/O请求均被调度完成时,启动预期计时;第二调度模块,用于在启动所述预期计时后,当所述预期计时的时长尚未达到预设的计时阈值,且侦测到时间片尚未用完的I/O请求对象产生新的I/O请求时,结束所述预期计时,并调度所述新的I/O请求。在本申请的第二方面的第二种实现方本文档来自技高网
...
一种I/O请求调度方法及调度器

【技术保护点】
一种I/O请求调度方法,其特征在于,包括:在进入当前调度时段时,侦测在所述当前时段访问存储设备的I/O请求对象,为侦测到的每个I/O请求对象分配一个时间片,并为侦测到的每个I/O请求对象设定调度时间阈值;其中,为侦测到的每个I/O请求对象分配的时间片之和小于或等于所述当前调度时段;在当前调度时段内,轮流对时间片尚未用完且具有I/O请求的I/O请求对象执行如下步骤,直到所述当前调度时段内不存在时间片尚未用完且具有I/O请求的I/O请求对象:从所述时间片尚未用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录调度时长,直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。

【技术特征摘要】
1.一种I/O请求调度方法,其特征在于,包括:在进入当前调度时段时,侦测在所述当前时段访问存储设备的I/O请求对象,为侦测到的每个I/O请求对象分配一个时间片,并为侦测到的每个I/O请求对象设定调度时间阈值;其中,为侦测到的每个I/O请求对象分配的时间片之和小于或等于所述当前调度时段;在当前调度时段内,轮流对时间片尚未用完且具有I/O请求的I/O请求对象执行如下步骤,直到所述当前调度时段内不存在时间片尚未用完且具有I/O请求的I/O请求对象:从所述时间片尚未用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录调度时长,直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。2.根据权利要求1所述的方法,其特征在于,还包括:在所述当前调度时段内,当所有时间片尚未用完的I/O请求对象的I/O请求均被调度完成时,启动预期计时;在启动所述预期计时后,当所述预期计时的时长尚未达到预设的计时阈值,且侦测到时间片尚未用完的I/O请求对象产生新的I/O请求时,结束所述预期计时,并调度所述新的I/O请求。3.根据权利要求1所述的方法,其特征在于,还包括:在所述当前调度时段内,当所有时间片尚未用完的I/O请求对象的I/O请求均被调度完成时,启动预期计时;在启动所述预期计时后,轮流对时间片已经用完且具有I/O请求的I/O请求对象执行如下步骤:从所述时间片已经用完且具有I/O请求的I/O请求对象中选择一个I/O请求对象,调度所选择的I/O请求对象的I/O请求并记录调度时长,直到所述调度时长达到所选择的I/O请求对象的调度时间阈值,或者,所述调度时长尚未达到所选择的I/O请求对象的调度时间阈值但所选择的I/O请求对象的I/O请求均被调度完成时,结束对所选择的I/O请求对象的I/O请求的调度。4.根据权利要求1所述的方法,其特征在于,所述每个I/O请求对象的I/O请求包括:读请求和写请求;所述读请求排在读请求队列中,所述写请求排在写请求队列中;则,所述调度所选择的I/O请求对象的I/O请求包括:在预设的读请求调度时长内,调度所述读请求队列中的读请求;在预设的写请求调度时长内,调度所述写请求队列中的写请求;其中,每个I/O请求对象的读请求调度时长与写请求调度时长之和小于或等于每个I/O请求对象的调度时间阈值。5.根据权利要求4所述的方法,其特征在于,还包括:在调度所述读请求队列中的读请求时,如果所述写请求队列中的写请求发生阻塞,则记录所述写请求阻塞时长,并在所述写请求阻塞时长达到预设的写请求阻塞时间阈值时,调度所述写请求队列中的写请求;在调度所述写请求队列中的写请求时,如果所述读请求队列中的读请求发生阻塞,则记录所述读请求阻塞时长,并在所述读请求阻塞时长达到预设的读请求阻塞时间阈值时,调度所述读请求队列中的读请求。6.根据权利要求1-5中任意一项所述的方法,其特征在于,所述为侦测到的每个I/O请求对象设定调度时间阈值,具体为:根据侦测到的I/O请求对象的个数和侦测到的每个I/O请求对象的响应时间需求,为侦测到的每个I/O请求对象设定调度时间阈值。7.一种I/O请求调度器,其特征在于,包括:分配模块,用于在进入当前调度时段时,侦测在所述当前时段访问存储设备的I/O请求对...

【专利技术属性】
技术研发人员:张子刚蒋德钧熊劲
申请(专利权)人:华为技术有限公司中国科学院计算技术研究所
类型:发明
国别省市:广东;44

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

1