CN104375883B - 一种cfs调度器 - Google Patents
一种cfs调度器 Download PDFInfo
- Publication number
- CN104375883B CN104375883B CN201410721645.4A CN201410721645A CN104375883B CN 104375883 B CN104375883 B CN 104375883B CN 201410721645 A CN201410721645 A CN 201410721645A CN 104375883 B CN104375883 B CN 104375883B
- Authority
- CN
- China
- Prior art keywords
- module
- time
- virtual
- weight
- scheduler
- 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
Links
- 238000000034 method Methods 0.000 claims abstract description 56
- 230000006870 function Effects 0.000 claims abstract description 16
- 238000006243 chemical reaction Methods 0.000 claims abstract description 10
- 238000012423 maintenance Methods 0.000 claims abstract description 8
- 230000008901 benefit Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 235000003642 hunger Nutrition 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000037351 starvation Effects 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明提供一种CFS调度器,属于linux内核进程调度算法设计领域,本发明包括:权重转化模块(1)、时间片分配模块(2)、虚拟时间模块(3)、红黑树维护模块(4)、选择进程模块(5)这五个模块;当进行IO操作时,在每一次操作结束时调用IO专用调度函数;调用IO调度函数时,修改此进程的虚拟运行时间;当第一次调用此函数时将虚拟运行时间设为初始状态,再调用主调度器;当下两次调用时,正常调用主调度器;并来回切换;通过主调度器选择下一个运行的程序。可以有效地提高CFS算法对IO进程分配的CPU时间,从而提高IO速度。
Description
技术领域
本发明涉及linux内核进程调度算法设计领域,具体涉及一种CFS调度器。
背景技术
CFS进程调度算法是在linux2.6.23后出现的产物,它的出现完全替代了之前的O(n)和O(1)调度算法;在之前的调度算法中,无论怎么优化,始终有些低优先级的进程得不到CPU的调度。而在这种情况下CFS以完全公平的调度策略则应运而生。
CFS算法是当前linux系统中使用最多的一种进程调度算法,由于其思路简单,容易实现,又切实地解决了进程饥饿的问题,所以有效地取带了O(1)和O(n)调度算法。但是看似完美的算法也有其不足之处,虽然完美地解决了进程等待的问题,却又引进了一些新问题。如高速存储应用就是其中之一,当进程对磁盘进行大量写操作时,会因为其主动放弃CPU而长时间得不到响应。由于其对所有进程都公平对待,所以在IO进程放弃CPU后,此算法会很快地将CPU时间分配给其他进程。
此优化算法即是针对IO进程长时间得不到CPU响应而设计的,对于由IO进程造成的进程调度做优化处理,使IO进程可以获得更多的CPU时间,从而加快磁盘的写操作。
发明内容
本发明的设计是基于CFS算法的改进设计的,目的在于提高IO进程占用的CPU时间,在磁盘IO不是瓶颈的情况下加快磁盘的写入速度。
相对于传统的CFS算法,对由IO进程而造成的进程调度进行优化。
一种CFS调度器,包括:权重转化模块(1)、时间片分配模块(2)、虚拟时间模块(3)、红黑树维护模块(4)、选择进程模块(5)这五个模块;
权重转化模块(1)是对系统中运行的各个进程的优先级进行相应的权重转化,使得不同优先级对应不同的权重,并以该权重进行下面的一系列的操作;
时间片分配模块(2)按照上述(1)模块中所得出的权重对系统中运行的各个进程分配相应的时间片,使各进程在理想状态下运行此时间片的长度;
虚拟时间模块(3)a、维护一个系统的虚拟时间,此虚拟时间与系统中所有进程的权重总和成反比,即总权重越大则系统虚拟时间前进的步伐越慢,反之则越快;b、各进程各自维护自己的一个虚拟时间,此虚拟时间与相应的进程权重成反比;
红黑树维护模块(4)按照上述(3)模块中所得出的虚拟时间,构造红黑树数据结构,虚拟时间最小的排在红黑树的最左边;
选择进程模块(5)时钟周期来到时,调用主调度器,主调度器再调用进程选择函数,从上述(4)模块中生成的红黑树里选择最左边的那个进程作为下一个时间片的运行进程。
通过优化由IO进程引起的系统调度函数,人为地减小其运行的虚拟时间,使IO进程可以得到更多的CPU运行时间。
技术步骤:
a、当进行IO操作时,在每一次操作结束时调用IO专用调度函数;
b、调用IO调度函数时,修改此进程的虚拟运行时间;当第一次调用此函数时将虚拟运行时间设为初始状态,再调用主调度器;当下两次调用时,正常调用主调度器;并来回切换;
c、通过主调度器选择下一个运行的程序。
本发明的益处:通过对CFS算法的优化,可以使CPU更加优待IO进程,使IO进程可以获得更多的CPU时间,从而处理更多的数据流量,有效地提高磁盘IO的速度。
通过优化由IO进程引起的系统调度函数,人为地减小其运行的虚拟时间,使IO进程可以得到更多的CPU运行时间。其中的优势在于:对于对存储要求较高的应用来说,可以快速的把数据写进磁盘。
附图说明
附图1 CFS维护进程队列的红黑树结构(按虚拟时间排序)。
附图2 改进CFS算法流程图。
具体实施方式
下面参照附图,对本算法设计的内容进行详细介绍,以及本算法的实现方法和过程。
正如发明内容中所描述的一样,本算法设计包括:权重转化模块(1)、时间片分配模块(2)、虚拟时间模块(3)、红黑树维护模块(4)、选择进程模块(5)这五个模块。
权重转化模块(1)是对系统中运行的各个进程的优先级进行相应的权重转化,使得不同优先级对应不同的权重,并以该权重进行下面的一系列的操作;
时间片分配模块(2)按照上述(1)模块中所得出的权重对系统中运行的各个进程分配相应的时间片,使各进程在理想状态下运行此时间片的长度;
虚拟时间模块(3)a、维护一个系统的虚拟时间,此虚拟时间与系统中所有进程的权重总和成反比,即总权重越大则系统虚拟时间前进的步伐越慢,反之则越快;b、各进程各自维护自己的一个虚拟时间,此虚拟时间与相应的进程权重成反比。
红黑树维护模块(4)按照上述(3)模块中所得出的虚拟时间,构造红黑树数据结构,虚拟时间最小的排在红黑树的最左边。
选择进程模块(5)时钟周期来到时,调用主调度器,主调度器再调用进程选择函数,从上述(4)模块中生成的红黑树里选择最左边的那个进程作为下一个时间片的运行进程。
方法实现过程:
a、当进行IO操作时,在每一次操作结束时调用IO专用调度函数;
b、调用IO调度函数时,修改此进程的虚拟运行时间;当第一次调用此函数时将虚拟运行时间设为初始状态,再调用主调度器;当下两次调用时,正常调用主调度器;并来回切换;
c、通过主调度器选择下一个运行的程序。
Claims (1)
1.一种CFS调度器,其特征在于,包括:权重转化模块(1)、时间片分配模块(2)、虚拟时间模块(3)、红黑树维护模块(4)、选择进程模块(5)这五个模块;
权重转化模块(1)是对系统中运行的各个进程的优先级进行相应的权重转化,使得不同优先级对应不同的权重,并以该权重进行下面的一系列的操作;
时间片分配模块(2)按照上述(1)模块中所得出的权重对系统中运行的各个进程分配相应的时间片,使各进程在理想状态下运行此时间片的长度;
虚拟时间模块(3)a、维护一个系统的虚拟时间,此虚拟时间与系统中所有进程的权重总和成反比,即总权重越大则系统虚拟时间前进的步伐越慢,反之则越快;b、各进程各自维护自己的一个虚拟时间,此虚拟时间与相应的进程权重成反比;
红黑树维护模块(4)按照上述(3)模块中所得出的虚拟时间,构造红黑树数据结构,虚拟时间最小的排在红黑树的最左边;
选择进程模块(5)时钟周期来到时,调用主调度器,主调度器再调用进程选择函数,从上述(4)模块中生成的红黑树里选择最左边的那个进程作为下一个时间片的运行进程;
通过优化由IO进程引起的系统调度函数,人为地减小其运行的虚拟时间,使IO进程可以得到更多的CPU运行时间;
其实现步骤为:
a、当进行IO操作时,在每一次操作结束时调用IO专用调度函数;
b、调用IO调度函数时,修改此进程的虚拟运行时间;当第一次调用此函数时将虚拟运行时间设为初始状态,再调用主调度器;当下两次调用时,正常调用主调度器;并来回切换;
c、通过主调度器选择下一个运行的程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410721645.4A CN104375883B (zh) | 2014-12-03 | 2014-12-03 | 一种cfs调度器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410721645.4A CN104375883B (zh) | 2014-12-03 | 2014-12-03 | 一种cfs调度器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104375883A CN104375883A (zh) | 2015-02-25 |
CN104375883B true CN104375883B (zh) | 2018-01-02 |
Family
ID=52554822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410721645.4A Active CN104375883B (zh) | 2014-12-03 | 2014-12-03 | 一种cfs调度器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104375883B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106527959B (zh) * | 2015-09-10 | 2019-07-26 | 阿里巴巴集团控股有限公司 | 刷新磁盘输入输出请求的处理方法及设备 |
CN107247627A (zh) * | 2017-06-22 | 2017-10-13 | 上海优刻得信息科技有限公司 | 存储设备io分配方法、存储设备io分配装置及服务器系统 |
CN110990142A (zh) * | 2019-12-13 | 2020-04-10 | 上海智臻智能网络科技股份有限公司 | 并发任务处理方法、装置、计算机设备和存储介质 |
CN113268342A (zh) * | 2021-05-08 | 2021-08-17 | 杭州电子科技大学 | 一种面向边缘i/o密集型应用的混合cpu调度方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102262557B (zh) * | 2010-05-25 | 2015-01-21 | 运软网络科技(上海)有限公司 | 通过总线架构构建虚拟机监控器的方法及性能服务框架 |
-
2014
- 2014-12-03 CN CN201410721645.4A patent/CN104375883B/zh active Active
Non-Patent Citations (1)
Title |
---|
linux内核调度器分析及模拟;高博;《中国优秀硕士学位论文全文数据库》;20080815;16-20 * |
Also Published As
Publication number | Publication date |
---|---|
CN104375883A (zh) | 2015-02-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111149090B (zh) | 多线程脉动阵列 | |
CN104375883B (zh) | 一种cfs调度器 | |
EP2701074B1 (en) | Method, device, and system for performing scheduling in multi-processor core system | |
CN102253857B (zh) | 一种多核环境下的Xen虚拟机调度控制方法 | |
CN101894047B (zh) | 一种基于内核虚拟机调度策略的实现方法 | |
CN103124957B (zh) | 用于处理单元的动态资源分配的方法和设备 | |
CN103389913B (zh) | 一种用于Linux系统的实时中断处理方法 | |
CN104679593B (zh) | 一种基于smp系统的任务调度优化方法 | |
CN104268018B (zh) | 一种Hadoop集群中的作业调度方法和作业调度器 | |
CN104331331B (zh) | 任务数目和性能感知的可重构多核处理器的资源分配方法 | |
CN109408215A (zh) | 一种计算节点的任务调度方法和装置 | |
CN104598298A (zh) | 基于虚拟机当前工作性质以及任务负载的虚拟机调度算法 | |
CN101145112A (zh) | 一种实时系统任务调度方法 | |
CN101414271A (zh) | 多核平台下基于硬件计时器与任务队列的调度方法 | |
CN111782355A (zh) | 一种基于混合负载的云计算任务调度方法及系统 | |
Singh et al. | Analysis and comparison of CPU scheduling algorithms | |
CN109582436A (zh) | 基于容器集群平台的细粒度抢占式资源调度系统及方法 | |
US20150334058A1 (en) | Adjusting buffer size for network interface controller | |
Arabnejad et al. | Fair resource sharing for dynamic scheduling of workflows on heterogeneous systems | |
CN111597044A (zh) | 任务调度方法、装置、存储介质及电子设备 | |
Agullo et al. | Task-based multifrontal QR solver for GPU-accelerated multicore architectures | |
CN106874102A (zh) | 基于容器工作性质的资源调度方法和装置 | |
Liu et al. | Evaluating task scheduling in hadoop-based cloud systems | |
US9760969B2 (en) | Graphic processing system and method thereof | |
CN109240815B (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 |