Xen Credit调度算法

简介:

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性能的影响。

 

Credit调度算法的优缺点


Credit调度算法的最大优点在于,它可以全局管理多个物理CPU,从而将CPU时间公平高效地分配给各个虚拟CPU。它可以用SMP的方式将各个物理CPU分配给务个虚拟CPU,实现负载平衡:它可以通过调节Guest操作系统的cap参数很好的实现Non-Working-Conserving(NWC)调度模式,使得管理员可以很容易地控制物理CPU的分配情况。
 
Credit调度算法 的缺点在于不能保证实时性,响应速度要求较高的应用中,事件响应延迟与其所处的队列位置密切相关,响应延迟 普遍较长且波动明显。该算法的全局负载平衡策略过于简单,仍易导致处理器因进程未就绪而空闲的情况。由于全局分配而产生的CPU分配错误率比较高,使得管理更加复杂。



Each VM is assigned a weight and a cap. If the cap is 0, then
the VM can receive any extra CPU (WC-mode). A non-zero cap
(expressed as a percentage) limits the amount of CPU a VM receives
(NWC-mode). The Credit scheduler uses 30 ms time slices for CPU
allocation. A VM (VCPU) receives 30 ms before being preempted
to run another VM. Once every 30 ms, the priorities (credits) of all
runnable VMs are recalculated. The scheduler monitors resource
usage every 10 ms. To some degree, Credit’s computation of credits
resembles virtual time computation in BVT. However, BVT has a
context switch allowance C for defining a different size of the basic
time slice (time quantum), and an additional low-latency support (via
warp) for real-time applications.
In summary, Credit has the following features:
? non-preemptive, WC and NWC modes;
? global load balancing on multiprocessors.
In the next section, we present results of a performance study comparing
these schedulers and their features in more detail.

Domain有两种状态,UNDER和OVER。OVER表示虚拟机的credit值已用完,UNDER表示credit值还有剩余。在进行调度时,调度器只关心虚拟机所处的状态,而不会进一步关心其剩余的credit值,处于UNDER状态的虚拟机优先于OVER状态的虚拟机被调度,只有当UNDER状态的虚拟机都无法运行时才会调度到OVER状态的虚拟机,所以,只有当处理器空闲时才允许破坏credit的公平性调度策略。处于相同状态的虚拟机按照先进先出的方式运行, 当处于队列首部的虚拟机被调度到时,在其credit值足够的情况下,允许其运行三个调度时长,即30ms。系统每隔10ms触发一次调度中断,当前正在运行的虚拟机会被减掉100个credit,当所有虚拟机的credit值总和变为负值时,为所有虚拟机重新分配credit:

1.每个物理CPU下面都有一个虚拟CPU的运行队列

2.每个运行队列中的VCPU都有一个credit值

3. credit表示VCPU的priority的价值

4.CPU调度的是最先入队的处于under状态下的VCPU

5.每10msec 为一个时间片,相应一次中断。如果被调度的VCPU的credit处于OVER状态那么它将不再被继续调度,重新计算credit值,调度后面的处于under状态下的第一个VCPU

6.如果进行了3个时间片也就是30msec时,原先的VCPU还是没有处于OVER状态,那么这个VCPU也将不被继续调度,credit值的重计算,同5后面的步骤

7.代码中的计算公式VCPU的credit = credit –CSCHED_CREDITS_PER_TICK (100)+30msec/n(VCPU的数)

8.处于OVER状态的VCPU credit的值不被增加。
本文转自feisky博客园博客,原文链接:http://www.cnblogs.com/feisky/archive/2011/11/19/2254975.html,如需转载请自行联系原作者

相关文章
|
5天前
|
算法 调度
操作系统的心脏:深入解析进程调度算法
本文旨在深入探讨现代操作系统中的核心功能之一——进程调度。进程调度算法是操作系统用于分配CPU时间片给各个进程的机制,以确保系统资源的高效利用和公平分配。本文将详细介绍几种主要的进程调度算法,包括先来先服务(FCFS)、短作业优先(SJF)、时间片轮转(RR)以及优先级调度(PS)。我们将分析每种算法的基本原理、优缺点及其适用场景。同时,本文还将讨论多级反馈队列(MFQ)调度算法,并探讨这些算法在实际应用中的表现及未来发展趋势。通过深入解析这些内容,希望能够为读者提供对操作系统进程调度机制的全面理解。
|
7天前
|
存储 算法 前端开发
深入理解操作系统:进程调度与优先级队列算法
【9月更文挑战第25天】在操作系统的复杂世界中,进程调度是维持系统稳定运行的核心机制之一。本文将深入探讨进程调度的基本概念,分析不同的进程调度算法,并着重介绍优先级队列算法的原理和实现。通过简洁明了的语言,我们将一起探索如何优化进程调度,提高操作系统的效率和响应速度。无论你是计算机科学的初学者还是希望深化理解的专业人士,这篇文章都将为你提供有价值的见解。
|
8天前
|
机器学习/深度学习 算法 物联网
探究操作系统的心脏:调度算法的演变与优化
本文旨在深入探讨操作系统中核心组件——调度算法的发展脉络与优化策略。通过分析从单任务到多任务、实时系统的演进过程,揭示调度算法如何作为系统性能瓶颈的解决关键,以及在云计算和物联网新兴领域中的应用前景。不同于传统摘要,本文将注重于概念阐释与实例分析相结合,为读者提供直观且全面的理解视角。
|
21天前
|
算法 人机交互 调度
进程调度算法_轮转调度算法_优先级调度算法_多级反馈队列调度算法
轮转调度算法(RR)是一种常用且简单的调度方法,通过给每个进程分配一小段CPU运行时间来轮流执行。进程切换发生在当前进程完成或时间片用尽时。优先级调度算法则根据进程的紧迫性赋予不同优先级,高优先级进程优先执行,并分为抢占式和非抢占式。多队列调度算法通过设置多个具有不同优先级的就绪队列,采用多级反馈队列优先调度机制,以满足不同类型用户的需求,从而优化整体调度性能。
38 15
|
11天前
|
算法 调度 UED
深入理解操作系统的调度算法
【9月更文挑战第22天】本文通过深入浅出的方式,介绍了操作系统中的核心概念——调度算法。文章首先解释了调度算法的基本定义和重要性,然后详细分析了先来先服务(FCFS)、短作业优先(SJF)以及时间片轮转(RR)三种常见的调度算法。每种算法都配有简单的代码示例,帮助读者更好地理解其工作原理。最后,文章探讨了这些调度算法在现代操作系统中的应用及其优缺点,旨在为读者提供对操作系统调度机制的全面认识。
|
21天前
|
算法 调度
作业调度算法_先来先服务算法_短作业优先算法_高响应比优先算法
本文介绍了作业调度算法,包括先来先服务(FCFS)、短进程优先(SJF)和高响应比优先(HRRN)算法。通过分析进程的到达时间和所需CPU服务时间,计算进程的开始时间、完成时间、平均周转时间和平均带权周转时间,以评估不同算法的性能。FCFS适合长作业,SJF适合短作业,而HRRN则综合了两者的优点。
46 12
|
23天前
|
算法 调度 UED
深入理解操作系统之进程调度算法
【9月更文挑战第9天】在操作系统的心脏跳动中,进程调度扮演着关键角色,就如同指挥家控制交响乐的节奏。本文将通过浅显易懂的语言和生动的比喻,带领读者走进进程调度的世界,探索不同调度算法背后的哲学与实践,以及它们如何影响系统的性能和用户体验。从最简单的先来先服务到复杂的多级队列和反馈循环,我们将一同见证操作系统如何在众多任务中做出选择,确保系统的高效与公平。
|
6天前
|
人工智能 算法 大数据
探究操作系统的心脏:调度算法的进化与影响
本文深入探讨了操作系统中核心组件——调度算法的发展及其对系统性能的影响。通过分析先来先服务、短作业优先、时间片轮转等传统调度算法,阐述了它们的原理和优缺点。同时,讨论了现代调度算法如多级队列和优先级调度在提高系统响应速度和处理能力方面的作用。文章还探讨了实时系统中的调度挑战,以及如何通过优化调度策略来满足不同应用场景下的性能需求。
|
17天前
|
算法 Linux 调度
探索现代操作系统的心脏:调度算法的演变与挑战
本文旨在深入探讨现代操作系统中至关重要的组成部分——进程调度算法。通过回顾其发展历程,分析当前主流技术,并展望未来趋势,揭示调度算法如何影响系统性能和用户体验。不同于常规摘要,本文将注重于技术的深度解析和背后的设计哲学,为专业开发者提供全面的视角。
25 0
|
17天前
|
人工智能 算法 物联网
探究操作系统的心脏:调度算法的进化与影响
本文深入探讨了操作系统中核心组件—调度算法的发展历程,重点分析了先来先服务、短作业优先、时间片轮转、优先级调度及多级反馈队列等经典调度算法。通过对比各算法的性能特点,如公平性、响应速度和系统吞吐量,阐述了它们在不同应用场景下的适用性和局限性。同时,文章展望了未来调度算法可能的改进方向,包括人工智能驱动的自学习调度策略、云计算环境下的分布式调度优化,以及物联网设备资源限制下的轻量级调度方案。此外,还强调了实时系统对高可靠性和严格时序保证的需求,以及在多核处理器普及背景下,线程级并行化对调度机制提出的新挑战。本文旨在为操作系统设计者、性能优化工程师及计算机科学领域的研究者和学生提供一个全面而深入的
28 0
下一篇
无影云桌面