cpu的调度算法
常用的调度算法

常用的调度算法调度算法是指操作系统中用于决定进程何时执行、何时暂停等的一种算法。
常用的调度算法包括先来先服务(FCFS)、短作业优先(SJF)、优先级调度、时间片轮转等。
下面将对这些常用的调度算法进行详细介绍。
一、先来先服务(FCFS)先来先服务是最简单的调度算法之一,它按照进程到达的顺序进行调度,即谁先到谁先执行。
这种算法容易实现,但是存在“饥饿”现象,即如果某个进程长时间等待,则其他进程可能会一直占用CPU资源,导致该进程无法得到执行。
因此,在实际应用中,FCFS很少被使用。
二、短作业优先(SJF)短作业优先是一种以作业运行时间为依据的调度算法。
它通过预测每个进程需要运行的时间,并将其按照运行时间从小到大排序,然后依次执行。
这种算法可以最大限度地减少平均等待时间和平均周转时间,并且不会出现“饥饿”现象。
但是,在实际应用中,由于很难准确预测每个进程需要运行的时间,因此SJF也存在缺陷。
如果预测不准确,那么就会出现长作业等待短作业的情况,导致长作业的等待时间变长。
三、优先级调度优先级调度是一种按照进程优先级进行调度的算法。
每个进程都有一个优先级,系统会根据进程的优先级来决定下一个要执行的进程。
通常情况下,优先级越高的进程越有可能得到CPU资源。
但是,如果某个进程的优先级一直比其他进程高,那么其他进程就会一直等待,导致“饥饿”现象。
此外,在实际应用中,由于不同进程之间的优先级差别较大,因此可能会导致低优先级的进程长时间等待。
四、时间片轮转时间片轮转是一种按照时间片进行调度的算法。
它将CPU资源划分成若干个时间片,并将每个时间片分配给一个正在运行或等待运行的进程。
当一个进程用完了它所分配到的时间片后,系统会将其挂起,并将CPU资源分配给下一个等待运行的进程。
这种算法可以避免“饥饿”现象,并且能够保证所有正在运行或等待运行的进程都能够得到CPU资源。
但是,如果时间片太小,会导致进程频繁切换,影响系统性能;如果时间片太大,会导致长作业等待时间变长。
操作系统-处理机调度的层次和调度算法的目标

CPU 有效工作时间
CPU 的利用率 = CPU 有效工作时间 ? CPU 空闲等待时间
3
第一章 操作系统引论
(2) 公平性。公平性是指应使诸进程都获得合理的CPU 时间,不会发生进程饥饿现象。公平性是相对的,对相同类 型的进程应获得相同的服务;但对于不同类型的进程,由于 其紧急程度或重要性的不同,则应提供不同的服务。
7
第一章 操作系统引论
3. 分时系统的目标 (1) 响应时间快。 (2) 均衡性。
8
第一章 操作系统引论
4. 实时系统的目标 (1) 截止时间的保证。 (2) 可预测性。
9
4
第一章 操作系统引论
2. 批处理系统的目标 (1) 平均周转时间短。 对每个用户而言,都希望自己作业的周转时间最短。但 作为计算机系统的管理者,则总是希望能使平均周转时间最 短,这不仅会有效地提高系统资源的利用率,而且还可使大 多数用户都感到满意。应使作业周转时间和作业的平均周转 时间尽可能短。否则,会使许多用户的等待时间过长,这将 会引起用户特别是短作业用户的不满。可把平均周转时间描 述为:
tn1tn1i???i66第一章操作系统引论为了进一步反映调度的性能更清晰地描述各进程在其周转时间中等待和执行时间的具体分配状况往往使用带权周转时间即作业的周转时间t与系统为它提供服务的时间ts之比即w??tts
第一章 操作系统引论
?3.1 处理机调度的层次和调度算法的目标
在多道程序系统中,调度的实质是一种资源分配,处理 机调度是对处理机资源进行分配。处理机调度算法是指根据 处理机分配策略所规定的处理机分配算法。在多道批处理系 统中,一个作业从提交到获得处理机执行,直至作业运行完 毕,可能需要经历多级处理机调度,下面先来了解处理机调 度的层次。
CPU调度算法准则及原理

P1 P2 P3 P4 P5 P1 P5 P1 P5 P1 P1
0 2 3 5 6 8 10 12 14 15 18 19 平均等待时间: {[(0+(8-2))+(12-10)+(15-14)]+2+3+5+[6+(14-12)+(108)]}/5=5.8
进程
CPU区间时间
P1
10
P2
1
P3
2
P4
实时调度
1. 实时计算分为硬实时(hard real-time)和软实时( soft real-time)
2. 实现软实时功能要求 1) 系统必须有优先权调度,且实时进程必须有最高的优 先权 2) 分派延迟必须小
3. 为了让分派延迟保持很小,需要允许系统可抢占,实现 方法有 1) 在长时间系统调用内插入抢占点(preemption point)-内核安全位置 2) 使整个内核可抢占-同步机制保护内核数据结构
进程来执行,进程选择是由CPU调度程序来执行的,又称 为短期调度程序(short-term scheduler) • 就绪队列可实现为FIFO队列、优先队列、树或无序链表 等形式
2
3、可抢占式调度
• CPU调度决策发生的环境
1) 当一个进程从运行状态切换到等待状态 2) 当一个进程从运行状态切换到就绪状态 3) 当一个进程从等待状态切换到就绪状态 4) 当一个进程终止时 • 非抢占(nonpreemptive)调度(1、4情况) • 可抢占(preemptive)调度(2、3情况) • 可抢占调度的代价 1) 共享数据的不一致性问题 2) 影响操作系统内核的设计
9
补充:最高响应比优先算法
• 响应比R=周转时间/执行时间
处理机调度算法的比较

处理机调度算法的比较计算机科学学院计算机科学与技术2009摘要:处理机调度基本概念、调度算法优劣的评价准则、多种处理机调度算法的介绍引言操作系统是处理计算机硬件的一层软件和作为计算机用户与计算机硬件的中间的协调者。
操作系统的CPU调度器负责给各个任务分发CPU带宽资源。
调度算法负责管理当前执行任务等额顺序和性能3 内容:3.1 处理机调度的基本概念高/中/低级调度1. 高级调度(作业调度)决定把外存上处于后备队列中的哪些作业调入内存,并为它们创建进程、分配必要的资源,准备执行。
2. 低级调度(进程调度)决定就绪队列中的哪个进程应获得处理机,然后再由分派程序执行把处理机分配给该进程的具体操作。
非抢占方式和抢占方式3. 中级调度决定把又具备运行条件的挂起进程重新调入内存,挂到就绪队列上,准备执行。
3.2 调度算法优劣的评价准则衡量和比较调度算法性能优劣主要有一下几个因素:(1)CPU利用率。
CPU是计算机系统中最重要的资源,所以应尽可能使CPU保持忙,使这一资源利用率最高。
(2)吞吐量。
CPU运行时表示系统正处于工作状态,工作量的大小是以每单位时间所完成的作业数目来描述的,这就叫吞吐量。
(3)周转时间。
指从作业提交到作业完成所经过的时间,包括作业等待,在就绪队列中排队,在处理机上运行以及进行输入/输出操作所花时间的总和。
(4)等待时间。
处理机调度算法实际上并不影响作业执行或输入/输出操作的时间,只影响作业在就绪队列中等待所花的时间。
因此,衡量一个调度算法优劣常常简单的考察等待时间。
(5)响应时间。
指从作业提交到系统作出相应所经过的时间。
在交互式系统中,作业的周转时间并不一定是最好的衡量准则,因此,常常使用另一种度量准则,即相应时间。
从用户观点看,响应时间应该快一点好,但这常常要牺牲系统资源利用率为代价。
(6)公平性——确保每个用户每个进程获得合理的 CPU 份额或其他资源份额,不会出现饿死情况。
当然,这些目标本身就存在着矛盾之处,操作系统在设计时必须根据其类型的不同进行权衡,以达到较好的效果。
CPU调度——精选推荐

CPU调度CPU调度引⼊了线程,对于⽀持它们的操作系统,是内核级的线程被操作系统调度,⽽不是进程。
不过,术语线程调度或进程调度常常被交替使⽤。
在讨论普通调度概念时使⽤进程调度,特别指定为线程概念时使⽤线程调度。
基本概念CPU-I/O区间周期CPU的成功调度依赖于进程的如下属性:进程执⾏由CPU执⾏和I/O等待周期组成。
进程在这两个状态之间切换。
进程执⾏从CPU区间(CPU burst)开始,在这之后是I/O区间(I/O burst),接着是另⼀个CPU区间,然后是另⼀个I/O区间,如此进⾏下去。
CPU调度程序每当CPU空闲时,操作就必须从就绪队列中选择⼀个进程来执⾏。
进程选择由短期调度程序(short-term scheduler)或CPU调度程序执⾏。
调度程序从内核中选择⼀个能够执⾏的进程,并为之分配CPU。
就绪队列不必是先进先出(FIFO)队列。
就绪队列可实现为FIFO队列,优先队列,树或简单的⽆序链表。
不过从概念上来说,就绪队列内的所有进程都要排队以等待在CPU上运⾏。
队列中的记录通常为进程控制块(PCB)。
抢占调度CPU调度决策可在如下4种环境下发⽣:当⼀个进程从运⾏状态切换到等待状态(例如,I/O请求,或调⽤wait等待⼀个⼦进程的终⽌)。
当⼀个进程从运⾏状态切换到就绪状态(例如,当出现中断时)当⼀个进程从等待状态切换到就绪状态(例如,I/O完成)当⼀个进程终⽌对于第1和第4两种情况,没有选择⽽只有调度。
⼀个新进程(如果就绪队列中已有⼀个进程存在)必须被选择执⾏。
不过,对于第2和第3两种情况,可以进⾏选择。
当调度只能发⽣在第1和第4两种情况下时,称调度⽅案是⾮抢占的(nonpreemptive)的或协作的(cooperative);否则,称调度⽅案是抢占的(preemptive)。
采⽤⾮抢占调度,⼀旦CPU分配给⼀个进程,那么该进程会⼀直使⽤CPU知道进程终⽌或切换到等待状态。
中断能随时发⽣,⽽且不能总是被内核所忽视,所以受中断影响的代码段必须加以保护以避免同时访问。
操作系统中的CPU调度算法实现与优化

操作系统中的CPU调度算法实现与优化随着计算机技术的不断发展,操作系统作为计算机的重要组成部分已经成为了现代计算机的核心,操作系统的性能对整个计算机的运行和效率有着至关重要的影响。
其中,CPU调度算法是操作系统中的核心内容之一,其对操作系统的性能有着直接的影响作用。
什么是CPU调度算法?CPU调度是操作系统中的一项关键任务,主要负责分配CPU 时间片给各个进程,以实现多进程并发执行。
而CPU调度算法则是CPU调度的关键之一,其主要作用是决定进程在什么情况下能够获取CPU使用权,进程的优先级、时间片大小等等影响着操作系统的性能。
常见的CPU调度算法:1. 先来先服务调度算法(FCFS)先来先服务调度算法,即按照作业到达的先后顺序分配CPU 时间片,每个进程在进入就绪队列后,按照行到达时间先后依次排队等待调度,先到达的进程先分配CPU时间片,然后完成执行后才分配给后续的进程。
这种算法不需要任何额外的参数,其实现简单,但是当进程短任务和长任务交织时,会导致短任务长时间等待,并且也不能满足响应时间的需求。
2. 短作业优先调度算法(SJF)短作业优先调度算法,即根据进程的需要任务量分配CPU时间片,等待时间短的任务优先获取CPU使用权,使得短任务能够更快的得到执行,提高系统的响应速度。
但是,该定调度算法仅适用于批处理系统,当进程数量庞大时,无法快速准确地预估进程的任务量,如果预估不准,就会出现长任务等待短任务的情况。
3. 优先级调度算法优先级调度算法是基于进程的优先级确定分配CPU时间片的方法,一般根据进程的特性,为不同进程设置不同的优先级,每次调度时以优先级高的进程优先获取CPU使用权,直到时间片用完或者进程执行结束。
优先级调度算法有着良好的响应性,但不利于低优先级进程,经常会出现饥饿的情况。
4. 时间片轮转调度算法时间片轮转调度算法指将CPU时间片分成一定长度的时间段,按照进程到达的先后依次分配时间片,等待不同进程请求时间的到达,一旦时间到达,则进行轮换,并将未利用完的时间片赋予下一个进程。
经典的调度算法

经典的调度算法经典的调度算法一直是计算机科学中的热门话题。
这些算法旨在有效地优化计算机操作的资源使用,从而使计算机更快、更有效地处理任务。
本文将对经典的调度算法进行详细介绍,阐述其实现方法和应用场景。
第一步:了解什么是调度算法在计算机科学中,调度算法指的是为了管理并优化多个任务的同时使用计算机资源而设计的算法。
这些算法旨在最大化计算机资源的利用率,同时尽可能地减轻CPU的负载。
它们可以帮助确保任务在合理的时间内得到快速且准确的处理。
第二步:介绍不同类型的调度算法现在,让我们了解一些最常见的调度算法类型。
1. 先来先服务调度算法(FIFO):这是最简单的调度算法之一。
在这种算法中,所有任务都按照它们提交的顺序依次执行。
它们将等待已完成的操作完成后才能以相同的顺序运行。
2. 最短作业优先调度算法(SJF):这种算法有助于优化作业的完成时间。
这个调度算法首先运行最短的作业,从而确保它们能够尽快完成。
这种算法通常在批处理任务中使用,它可以帮助确保任务可以在合理的时间内得到处理。
3. 时间片轮转调度算法:这种算法将CPU时间的使用权分配给每个任务一定的时间片。
在一个时间片结束后,CPU的使用权转移到另一个任务上。
这种算法可以确保所有的任务都有机会平均地使用计算机资源。
第三步:讨论不同调度算法的应用不同的调度算法在不同的场景下很有用。
例如:- 简单的FIFO算法通常在基于CPU资源的多媒体应用程序中使用,例如音频和视频播放器。
- SJF算法通常用于批量处理任务,例如后台文件处理或模拟。
- 时间片轮转算法则通常用于时分复用的系统中,例如多个用户同时登录的计算机系统。
总的来说,调度算法可以对计算机的性能和资源分配产生深远的影响。
在选择特定的算法时,需要考虑一系列因素,例如任务类型、系统负载和可用的资源。
通过了解各种调度算法,可以更轻松地选择最适合自己需求的算法,从而提高计算机系统的效率。
操作系统第13讲:第4章 处理机调度调度算法.ppt

2019/10/31
18
4.6 实时系统调度方算法简介
四、时限调度算法
导语:基本思想是:按用户的时限要求顺序设置优先级,优先
●实时系统所处理的外部任务可分为周期性的与非周期性的两大类。非周期性 任务,存在有一个完成或开始进行处理时限;而周期性任务要求在周期T内 完成或开始进行处理。
2019/10/31
13
4.6 实时系统调度算法简介
一、实时系统的特点
1.有限等待和响应时间(决定性) 2.可靠性高 3.用户可以控制 4.系统纠错能力强,实时系统要求很高的可靠性。
导语:
●实时系统广泛用在移动通信、网络计算、航空航天等领域。os是实时系统中 最重要的部分之一,它负责在用户要求的时限内进行事件处理和控制。
●实时系统与其他系统的最大区别:处理和控制的正确性不仅取决于计算的逻 辑结果,而且取决于计算和处理结果产生的时间。因此,实时系统的调度, 即把给定的任务,按所要求的时限调配到相应的设备上处理完成。根据实 时系统对处理外部事件的时限要求,分为硬、软实时任务。 ◆硬实时任务要求系统必须完全满足任务的时限要求。 ◆软实时任务允许时限要求有一定的延迟,时限要求只是一个相对条件。
注意P90: 周转T、完成T、提交T、带权周转T等概念在公式中的含义。 ●分析结论:P3 执行的时间非常短,但等待时间过长,显然是不合理的。
2019/10/31
3
4.4 调度算法
二、短作业或短进程调度算法(SJF)
1. 适应范围:作业或进程 2. 原则:选取最短作业或进程进行执行 3. 优点:当短作业或短进程较多时,系统效率较高 4. 缺陷:对长作业不利,设有考虑优先级
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
xen调度器比较(转载)2010-04-30 11:50Xen的CPU调度算法主要有3种,BVT(borrowed virtual time)调度算法、SEDF (simple earliest deadline first)调度算法、以及Credit调度算法。
一、BVT调度算法1.BVT调度算法的基本原理 BVT算法由 KermethJ.Duda于1999年提出。
BVT是一种公平性优先的调度算法。
该算法将时间分为实际时间和虚拟时间:真实时间为硬件计时器记录的时间;虚拟时间为对真实时间经过某种规则计算后得到的时间值。
该算法用虚拟时间来监控进程的执行时间,每次总是调度具有最早的有效虚拟时间的VCPU。
这这种调度算法考虑到了运行实时和交互件的戍用程序的一些Guest操作系统,允许这些操作系统“借”一些时间片,就是说:在一定范围内将未来分配给它运行的时问片先“借”过来用一段时间。
这种“借”过来的虚拟时间片只能是当前真实的时间片中的某个虚拟时间片,不能借下一个真实时间片中的虚拟时问片。
在系统初始化时,每个VCPU将分配一个权值来代表该VCPU 能获得的处理器份额。
VCPU根据其权值来实现处理器的公平共享。
系统用实际虚拟时间和有效虚拟时间来记录VCPU运行状态。
其计算方式如下: Ai =At + t/wi Ei <—Ai - (warp?wi:0) 其中,t表示VCPU实际运行时长(由真实时间计算);wi 表示该VCPU的权值大小;Ei表示有效虚拟时间;Ai表示实际虚拟时间;warp为时间偏移标记,表示VCPU能否提前运行;矶为VCPU能提前运行的虚拟时间长度。
BVT算法是一种抢占式的working-conserving模式算法。
该算法通过warp值来调整EVT使VCPU获得处理器的时间提前,即VCPU从预定的有效虚拟时间中借用了一定的虚拟时间以获得更高的调度优先级。
此外,该算法还用Li和Ui来限制VCPU的warp值的大小及进行warp操作的频率,以防止进程过度借用虚拟时间。
2.BVT的优缺点 BVT调度算法的优点在于可以将物理时间片公平、均匀地分配给各个Guest操作系统,每个Guest操作系统两次被调度的时间间隔不会超过一个真实的时间片;能够满足I/O密集型和实时应用的低时延要求,能较好地调度某些实时性要求比较高的操作系统;在单CPU和多CPU环境下的调度开销都比较小。
BVT调度算法的缺点有以下几点。
首先,BVT不支持non-working-conserving。
也就是说,每当当前domain被加载运行时,它将获得整个CPU。
用户不能把某个将某个domain对CPU的使用限制在某个比例以下。
其次,每个Guest OS只能借用分给它的时间片部分,而不会剥夺其他Guest OS的时间片。
即当确定了各个domain的时间片分配比例后,这个比例在下次分配之前不会改变。
二、SEDF调度算法1.SEDF调度算法的基本原理 SEDF算法源于C.L.Liu在1973年提出的最早截止期限(EDF:Earliest DeadlineFirst)调度算法。
Xen中的每个VCPU在初始化时,将由调度算法为该VCPU设定一个截止期限作为其被调度时的参考因素。
当进行VCPU调度时,调度程序将优先调度截止期限最早的VCPU。
与Credit算法一样,当前对SEDF算法的研究还仅限于对配置有该算法的Xen的性能(磁盘读写速度、网络吞吐量、CPU分配精度、I/O性能)影响进行了分析。
SEDF算法为一种动态优先级调度算法。
VCPU的优先级随着其绝对截止期限的变化而改变。
在任何时刻,具有最早绝对截止期限的VCPU优先级最高。
当处理器进行VCPU调度时,将总是调度具有最早绝对截止期限的VCPU到该处理器上运行。
SEDF调度算法是这样工作的:它为每个Guest操作系统设置一个三元组(s,p,x),其中s,p指的是在p毫秒内,Guest操作系统至少运行s毫秒,而x指的是如果在p时间片内,还有空余时间的话,是否允许该Guest操作系统占用这些空余的时间片;而每个Guest操作系统都有一个“最迟调度时间”(例如,0-100ms这个时间片内,若Guest操作系统至少运行30ms那么它的最迟运行时间是70ms),调度算法选择“最迟调度时间”最早的Guest操作系统进行调度:如果Guest A操作系统还任运行,Guest B操作系统的调度时间片已经到来,那么Xen将选用Guest B 进行调度。
SEDF支持working-conserving和non-working-conserving。
即可以分配部分CPU给一个Guest OS。
2.SEDF调度算法的优缺点 SEDF算法的优点是:可以通过配置各Guest操作系统的配置参数调节它们的优先级(一个Guest操作系统的p越小,优先级就越高)。
这个算法效率很高、实现容易;易于推断及计算;支持working-conserving和non-working-conserving;支持实时性较强的应用;当系统负载较轻时,其处理器的利用率最高可达100%。
SEDF有以下几个主要缺点:在SEDF算法中,一旦VCPU的调度参数被初始化后,就不能根据该VCPU的运行状况进行修改。
SEDF 调度算法是根据任务满足截止期限的紧迫性,来修改任务的优先级,以保证最紧迫的任务能够及时完成。
当系统的负载相对较低时,这种算法非常有效;但是当系统负载极端沉重时,这就会使大量的任务发生时问错误(misSing the deadline),因此很可能使一些进程困错过截止期,来不及处理而夭折;甚至可能导致CPU时间大量花费在调度上,这时系统的性能还不如FIFO方法。
根据计算,当系统负载超过50%时系统性能会急剧下降,其主要问题在于:如何使进程按照到达最后期限的时间排序。
因为进程到达期限的时间在执行期间是变化的,这样进程就无法给予事先排序,每一个进程结束时,优先级都必须重新计算。
还有一个重要缺点,这种算法只能对单个CPU进行SEDF调度,没有多CPU间负载平衡的控制。
例如存在如下分配:分配CPU1: dom1 --- 80% CPU,分配CPU2: dom2 --- 80% CPU,如果此时有dom3,需要30% CPU 空间,那么dom3将无法被分配和加载。
即使两个CPU的剩余部分相加起来足够dom3的使用,但是由于每个CPU的剩余部分都不足,dom3只能等待。
三、Credit调度算法1.Credit调度算法的基本原理 Credit调度算法是自Xen3.0版本以来使用的缺省的调度算法,其为一种按比例公平共享的非抢占式调度算法。
Credit调度算法为每一个Guest操作系统设置二元组(weight,cap),各个Guest操作系统之间weight的比例决定它们各自占用CPU时间片的比例;而cap决定一个Guest 操作系统用CPU时间的上限值,比如cap=50,表示Guest操作系统只能最多只能占用半个物理CPU的所有时间,cap=100,表示Guest操作系统只能最多只能占用一个物理CPU的所有时间。
Credit调度算法将各个虚拟CPU分为两个队列,under队列和over队列,它只调度Under队列中的虚拟CPU。
最开始所有的虚拟CPU都在under队列,每个domain的初始Credit为其对应的weight值;每当虚拟CPU被调度时,这个虚拟CPU对应的domain的Credit就被减小,当发现虚拟CPU对应的domain的Credit为负数时,这个虚拟CPU就被放入over队列;当所有的虚拟CPU都在over队列中时,Credit调度算法按比例为所有的domain 的Credit加上最初为domain设置的weight值,并把对应的虚拟CPU入至under 队列;周而复始。
系统每次调度处于队首且优先级为under的VCPU运行。
当一个处理器空闲时或该处理器的就绪VCPU队列中无under优先级的VCPU时,它将查看其它处理器以找到一个可运行的VCPU到本处理器上运行。
目前,对Credit 算法的研究主要集中在该算法对系统性能影响方面。
其中,Ludmila Cherkasova 对该算法在Xen虚拟机管理器中上应用时的磁盘读写速度,网络吞吐量和CPU分配精度的影响进行了分析;Diego Ongaro分析了Credit算法对Xen上虚拟机I/O性能的影响。
2.Credit调度算法的优缺点 Credit调度算法的最大优点在于,它可以全局管理多个物理CPU,从而将CPU时间公平高效地分配给各个虚拟CPU。
它可以用SMP 的方式将各个物理CPU分配给务个虚拟CPU,实现负载平衡:它可以通过调节Guest操作系统的cap参数很好的实现Non-Working-Conserving(NWC)调度模式,使得管理员可以很容易地控制物理CPU的分配情况。
Credit调度算法的缺点在于不能保证实时性,响应速度要求较高的应用中,事件响应延迟与其所处的队列位置密切相关,响应延迟普遍较长且波动明显。
该算法的全局负载平衡策略过于简单,仍易导致处理器因进程未就绪而空闲的情况。
由于全局分配而产生的CPU 分配错误率比较高,使得管理更加复杂。
本文来自CSDN博客,转载请标明出处:/gavinwjin/archive/2010/01/11/5178745.aspx首先我们说说Xen的Credit调度器:管理员为每个domain分配weight值来决定credit值,Xen按照credit值公平调度各个domain。
Domain中VCPU有两种状态,UNDER和OVER。
OVER表示Domain 中VCPU的credit值已用完,UNDER表示credit值还有剩余。
在进行调度时,调度器只关心VCPU所处的状态,而不会进一步关心其剩余的credit值,处于UNDER状态的VCPU总是优先于OVER状态的VCPU 被调度,只有当UNDER状态的VCPU都无法运行时才会调度到OVER状态的VCPU,所以,只有当处理器空闲时才允许破坏credit的公平性调度策略。
处于相同状态的VCPU按照先进先出的方式运行,当处于队列首部的虚拟机被调度到时,在其credit值足够的情况下,允许其运行三个调度时长,即30ms。
系统每隔10ms触发一次调度中断,当前正在运行的VCPU会被减掉100个credit,当所有VCPU的credit 值总和变为负值时,为所有VCPU重新分配credit。
当事件被发送到domain的VCPU时,如果VCPU处于空闲状态,Xen就会会将其唤醒,然后,调度器会被立即运行,重新计算调度顺序,如果新被唤醒的虚拟机具有较高的优先级(这里指的是BOOST状态,不是BOOST的话,应该直接被放入到UNDER状态的最后一个),则之前正在运行的虚拟机会被抢占调度。