CN104360965A - 一种cfq调度方法 - Google Patents
一种cfq调度方法 Download PDFInfo
- Publication number
- CN104360965A CN104360965A CN201410744683.1A CN201410744683A CN104360965A CN 104360965 A CN104360965 A CN 104360965A CN 201410744683 A CN201410744683 A CN 201410744683A CN 104360965 A CN104360965 A CN 104360965A
- Authority
- CN
- China
- Prior art keywords
- group
- request
- dispatching
- scheduling
- continue
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
- G06F13/26—Handling requests for interconnection or transfer for access to input/output bus using interrupt with priority control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Elevator Control (AREA)
Abstract
本发明提供一种CFQ调度方法,涉及linux内核I/O调度领域,本发明首先进行组间调度,然后进行组内调度,最后进行队列内调度;应用程序需要进行密集型I/O操作时,向内核提出请求,内核修改相关标志,切换组间调度和组内调度方式,同时将队列内调度时采用的电梯算法界限修改为一个频繁访问的区域。当某组的Intense标志置1时,该组对应的设备优先级最高,减少了组间调度;当某组的Continue标志置1时,该组的队列按照I/O请求的区域分为不同队列,使得I/O密集型请求能够尽可能地在一个队列中完成,减少了组内调度;当某组的Continue标志置1时,队列内电梯调度算法的运行界限改为head和tail,保证了密集型I/O请求被集中访问,减少了电梯调度往返的次数。
Description
技术领域
本发明涉及linux内核I/O调度领域,尤其涉及一种CFQ调度方法。
背景技术
随着linux操作系统的发展,应用程序对高性能IO的要求越来越高。自2.6内核以后,linux内核的IO调度算法增加至4种,其中CFQ(completely fair queueing)调度算法应用最为广泛。该算法在多进程环境下能够保证各个进程有公平的调度机会,以及IO设备的QoS。但是在I/O密集型请求到来时,该算法的I/O性能会下降。首先,由于CFQ算法将设备分为不同的组,组间调度采用基于权重---时间片的方式,而对于I/O密集型请求,往往是针对单一设备,这时CFQ算法仍然有可能发生组间调度,导致对于某一设备的I/O密集型请求等待。其次,由于CFQ算法对于同组的I/O请求按照进程号分为不同的队列,而对于密集型I/O请求,不同的进程访问的I/O地址有一定的连续性,导致CFQ算法为了保证电梯调度的顺序而在不同队列中切换。最后,由于CFQ算法对于同一队列的I/O请求按照电梯调度,而电梯调度算法对于上下两个边界附近的I/O效率较高,中间的效率较低,影响整个队列的I/O效率。以上为提高linux内核的I/O调度效率,适应日益增加的应用程序需求均带了很大的挑战,影响了系统I/O吞吐量,进而影响应用程序运行的速度。
发明内容
本发明的目的在于提供一种CFQ调度方法,该方法可以克服密集型I/O请求发生时,旧的CFQ算法的I/O性能下降的难题。
为了达到上述目的,本发明采用的技术方案为:
一种CFQ调度方法,包括如下步骤:
(1)首先进行组间调度:对于进程提出的I/O请求按照所操作的设备类型分组,各组选择对应设备类型的I/O操作,各组有对应的权重。每组设置特殊操作标志Intense,若该标志置1,则该组权重升为最高直至I/O操作结束。
(2)然后进行组内调度:对于组内的I/O请求,根据特殊操作标志Continue按照两种不同的方式操作。若Continue=0,那么组内I/O请求按照进程号分为不同的队列;若Continue=1,那么组内I/O请求按照I/O访问的地址区域分为不同的队列。当Continue=0时,head = tail =0。各队列有对应的优先级。
(3)最后进行队列内调度:对于同一队列中的I/O请求,采用电梯调度算法。当特殊操作标志Continue为1时,电梯调度算法的边界修改为head和tail。head 到tail为电梯算法的一个方向,剩下的区域组成另一个方向。
上述调度方法中,被调度的I/O请求处于内核态,为了能够适应密集型I/O操作,对于组间调度和组内调度都设置特殊操作标志,应用程序需要进行密集型I/O操作时,向内核提出请求,内核修改相关标志,切换组间调度和组内调度方式,同时将队列内调度时采用的电梯算法界限修改为一个频繁访问的区域。其特点在于当某组的Intense标志置1时,该组对应的设备优先级最高,减少了组间调度;当某组的Continue标志置1时,该组的队列按照I/O请求的区域分为不同队列,使得I/O密集型请求能够尽可能地在一个队列中完成,减少了组内调度;当某组的Continue标志置1时,队列内电梯调度算法的运行界限改为head和tail,保证了密集型I/O请求被集中访问,减少了电梯调度往返的次数。
上述调度方法步骤(1)的具体步骤为:
步骤a、对于进程提出的I/O请求按照所操作的设备类型分组,各组选择对应设备类型的I/O操作;
步骤b、组间调度按照权重---时间片方式,每次优先调度时间片最小的组,高权重的组获得的时间片小;
步骤c、每组设置特殊操作标志Intense,若该标志置1,则该组权重升为最高直至I/O操作结束。
上述调度方法步骤(2)的具体步骤为:
步骤a、根据特殊操作标志Continue按照两种不同的方式将组内I/O请求分成不同的队列
步骤b、若Continue=0,那么组内I/O请求按照进程号分为不同的队列,队列基于进程的优先级,映射为相应时间片调度,高优先级时间片小,每次选择时间片小的优先调度。此时head = tail =0;
步骤c、若Continue=1,那么组内I/O请求按照I/O访问的地址区域分为不同的队列。含有I/O请求数目最多的区域为访问热区,head和tail对应该区域上下界。
上述调度方法步骤(3)的具体步骤为:
步骤a、队列内调度采用电梯调度算法;
步骤b、若Continue=1,则电梯调度上下界为head和tail,优先保证访问热区I/O请求。
本发明可以克服linux内核使用旧的CFQ调度算法时,对于突发的I/O密集型请求,I/O吞吐量下降的问题,从而提高应用程序的运行效率。
相比于原来的基于权重-时间片的组间调度方式,本CFQ方法为I/O密集型操作提供特殊操作标志,从而保证在I/O密集请求发生时,能够保证发生I/O密集请求的设备在访问时不被打断。
相比于原来的基于优先级-时间片的组内调度方式,本CFQ方法为I/O密集型操作提供特殊操作标志,从而保证在I/O密集请求发生时,使得对于同一设备的I/O请求能够被有效地集中到几个队列中,减少了由于I/O请求地址不满足连续性要求而在队列间调度的次数。
相比于原来的电梯调度算法,本CFQ方法为I/O密集型操作提供特殊操作标志,从而保证在I/O密集请求发生时,电梯调度的范围集中在I/O请求的密集区域,从而保证满足连续性要求的I/O请求优先得到满足,减少电梯调度的往返次数。
附图说明
附图1 本发明调度中组间调度示意图。
附图2 本发明调度中组内调度示意图。
附图3 本发明调度中队列内调度图。
具体实施方式
下面参照附图对本发明的内容进行更加详细的阐述:
(1)首先如图1进行组间调度:对于进程提出的I/O请求按照所操作的设备类型分组,各组选择对应设备类型的I/O操作,即不同的设备有不同的中断向量。各组有对应的权重,权重越大,时间片越小,得到组间调度的机会越多,所有的组按照时间片排成一颗红黑树。如果某一组的特殊操作标志Intense=1,则该组的I/O请求被优先满足,方法是将其权重升为最高直至该组I/O请求分配完毕操作。
(2)然后如图2进行组内调度:对于组内的I/O请求,根据特殊操作标志Continue按照两种不同的方式分配队列。无论哪种方式,组内的队列按照优先级排成一颗红黑树。若Continue=0,那么组内I/O请求按照进程号分为不同的队列,优先级为进程优先级,head = tail =0;若Continue=1,那么组内I/O请求按照I/O访问的地址区域分为不同的队列,优先级按地址区域中I/O请求的数量排序,数量越多,优先级越高。
(3)最后如图3进行队列内调度:对于同一队列中的I/O请求,采用电梯调度算法。若Continue=0,则队列中的I/O请求地址的最大值和最小值成为电梯调度的边界。若Continue=1,则队列中的head和tail成为电梯调度的边界电梯调度算法的边界。其中head 和tail中间的I/O请求满足连续性要求,即平均两个邻近的I/O请求地址差值<5,从而保证密集型I/O请求得到优先满足。
Claims (3)
1.一种CFQ调度方法,其特征在于,包括如下步骤:
(1)首先进行组间调度:对于进程提出的I/O请求按照所操作的设备类型分组,各组选择对应设备类型的I/O操作,各组有对应的权重;每组设置特殊操作标志Intense,若该标志置1,则该组权重升为最高直至I/O操作结束;
(2)然后进行组内调度:对于组内的I/O请求,根据特殊操作标志Continue按照两种不同的方式操作;若Continue=0,那么组内I/O请求按照进程号分为不同的队列;若Continue=1,那么组内I/O请求按照I/O访问的地址区域分为不同的队列;当Continue=0时,head = tail =0;各队列有对应的优先级;
(3)最后进行队列内调度:对于同一队列中的I/O请求,采用电梯调度算法;当特殊操作标志Continue为1时,电梯调度算法的边界修改为head和tail;head 到tail为电梯算法的一个方向,剩下的区域组成另一个方向。
2.根据权利要求1所述的方法,其特征在于,被调度的I/O请求处于内核态,为了能够适应密集型I/O操作,对于组间调度和组内调度都设置特殊操作标志,应用程序需要进行密集型I/O操作时,向内核提出请求,内核修改相关标志,切换组间调度和组内调度方式,同时将队列内调度时采用的电梯算法界限修改为一个频繁访问的区域。
3.根据权利要求1所述的方法,其特征在于,
步骤(1)的具体步骤为:
步骤a、对于进程提出的I/O请求按照所操作的设备类型分组,各组选择对应设备类型的I/O操作;
步骤b、组间调度按照权重---时间片方式,每次优先调度时间片最小的组,高权重的组获得的时间片小;
步骤c、每组设置特殊操作标志Intense,若该标志置1,则该组权重升为最高直至I/O操作结束;
上述步骤(2)的具体步骤为:
步骤a、根据特殊操作标志Continue按照两种不同的方式将组内I/O请求分成不同的队列
步骤b、若Continue=0,那么组内I/O请求按照进程号分为不同的队列,队列基于进程的优先级,映射为相应时间片调度,高优先级时间片小,每次选择时间片小的优先调度;此时head = tail =0;
步骤c、若Continue=1,那么组内I/O请求按照I/O访问的地址区域分为不同的队列;含有I/O请求数目最多的区域为访问热区,head和tail对应该区域上下界;
上述步骤(3)的具体步骤为:
步骤a、队列内调度采用电梯调度算法;
步骤b、若Continue=1,则电梯调度上下界为head和tail,优先保证访问热区I/O请求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410744683.1A CN104360965A (zh) | 2014-12-09 | 2014-12-09 | 一种cfq调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410744683.1A CN104360965A (zh) | 2014-12-09 | 2014-12-09 | 一种cfq调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104360965A true CN104360965A (zh) | 2015-02-18 |
Family
ID=52528229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410744683.1A Pending CN104360965A (zh) | 2014-12-09 | 2014-12-09 | 一种cfq调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104360965A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107098229A (zh) * | 2017-04-21 | 2017-08-29 | 广东环境保护工程职业学院 | 一种基于电梯外呼系统的层站优先级调度方法 |
CN107562654A (zh) * | 2016-07-01 | 2018-01-09 | 北京忆恒创源科技有限公司 | Io命令处理方法与装置 |
CN108009006A (zh) * | 2016-11-02 | 2018-05-08 | 华为技术有限公司 | I/o请求的调度方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1225472A (zh) * | 1998-02-04 | 1999-08-11 | 国际商业机器公司 | 服务器内调度和分派排队客户请求的装置和方法 |
CN1299098A (zh) * | 1999-12-07 | 2001-06-13 | 国际商业机器公司 | 用于直接存取存储设备的公平电梯调度算法 |
CN101458631A (zh) * | 2007-12-14 | 2009-06-17 | 联想(北京)有限公司 | 一种自适应虚拟机调度的方法及计算机 |
US20140344597A1 (en) * | 2013-05-16 | 2014-11-20 | Qualcomm Innovation Center, Inc. | Dynamic load and priority based clock scaling for non-volatile storage devices |
-
2014
- 2014-12-09 CN CN201410744683.1A patent/CN104360965A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1225472A (zh) * | 1998-02-04 | 1999-08-11 | 国际商业机器公司 | 服务器内调度和分派排队客户请求的装置和方法 |
CN1299098A (zh) * | 1999-12-07 | 2001-06-13 | 国际商业机器公司 | 用于直接存取存储设备的公平电梯调度算法 |
CN101458631A (zh) * | 2007-12-14 | 2009-06-17 | 联想(北京)有限公司 | 一种自适应虚拟机调度的方法及计算机 |
US20140344597A1 (en) * | 2013-05-16 | 2014-11-20 | Qualcomm Innovation Center, Inc. | Dynamic load and priority based clock scaling for non-volatile storage devices |
Non-Patent Citations (1)
Title |
---|
WUZHONGJIE: "一个IO的传奇一生(10)--CFQ调度算法", 《ALANWU.BLOG.51CTO.COM/3652532/1393078》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107562654A (zh) * | 2016-07-01 | 2018-01-09 | 北京忆恒创源科技有限公司 | Io命令处理方法与装置 |
CN107562654B (zh) * | 2016-07-01 | 2020-10-09 | 北京忆恒创源科技有限公司 | Io命令处理方法与装置 |
CN108009006A (zh) * | 2016-11-02 | 2018-05-08 | 华为技术有限公司 | I/o请求的调度方法及装置 |
CN108009006B (zh) * | 2016-11-02 | 2022-02-18 | 华为技术有限公司 | I/o请求的调度方法及装置 |
CN107098229A (zh) * | 2017-04-21 | 2017-08-29 | 广东环境保护工程职业学院 | 一种基于电梯外呼系统的层站优先级调度方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101885211B1 (ko) | Gpu의 자원 할당을 위한 방법 및 장치 | |
US9772879B2 (en) | System and method for isolating I/O execution via compiler and OS support | |
CN104268018B (zh) | 一种Hadoop集群中的作业调度方法和作业调度器 | |
CN102939596B (zh) | 用于多核处理器的多线程应用识别存储器调度方案 | |
CN103262002B (zh) | 优化系统调用请求通信 | |
WO2006006084A8 (en) | Establishing command order in an out of order dma command queue | |
US20120167108A1 (en) | Model for Hosting and Invoking Applications on Virtual Machines in a Distributed Computing Environment | |
CN110413391A (zh) | 基于容器集群的深度学习任务服务质量保证方法和系统 | |
CN104199739B (zh) | 一种基于负载均衡的推测式Hadoop调度方法 | |
JP2008506187A5 (zh) | ||
JP2010204880A5 (zh) | ||
CN104715502A (zh) | 图形处理系统中的基元处理 | |
CN104239154B (zh) | 一种Hadoop集群中的作业调度方法和作业调度器 | |
CN104360965A (zh) | 一种cfq调度方法 | |
CN104715503A (zh) | 图形处理系统中的基元处理 | |
CN112162835A (zh) | 一种异构云环境下实时任务的调度优化方法 | |
CN104572279A (zh) | 一种支持节点绑定的虚拟机动态调度方法 | |
CN104375883B (zh) | 一种cfs调度器 | |
CN102184124B (zh) | 任务调度方法及系统 | |
US10430237B2 (en) | Resource scheduling method and related apparatus | |
CN109697105A (zh) | 一种容器云环境物理机选择方法及其系统、虚拟资源配置方法及迁移方法 | |
CN106354555B (zh) | 一种操作系统进程调度算法 | |
CN104317653B (zh) | 加速短作业处理的调度方法和装置 | |
CN105700949A (zh) | 一种多核处理器下的数据处理方法及装置 | |
CN104021041B (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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150218 |
|
WD01 | Invention patent application deemed withdrawn after publication |