xen credit scheduler and policy
最近在研究xen的vcpu 调度和cpu qos策略,现在默认的scheduler是credit, 对应的代码是sched_credit.c
xen支持好几种控制策略,效果最好的当选pin, 灵活性最好的是weight, 控制和灵活兼备的就是cap,据说人家amazon在06年推ecu的时候就是用了类似的技术。
pin的实现比较好了解,也就是set affinity,个人对cap,weight的实现比较感兴趣,这两者应该是类似,好了,开始聊下代码
xen里面首先有个总的调度函数schedule(),这是SCHEDULE_SOFTIRQ的中断处理函数,主动触发调度的方式就是raise_softirq,每个pcpu有个timer,里面就是定期raise_softirq。
schedule里面主要的事情就是调用具体实现sched_credit里面的do_schedule来挑选下一个next任务,之后对prev和next的vcpu state进行更新,prev根据当前的状态,更新成blocked,runnable,offline, next更新成running, 再调用context_switch函数来完成真正一些寄存器的保存和切换
sched_credit的do_schedule是由csched_schedule实现的,这里面会先去取当前cpu 的runq的下一个任务,取出来之后判断下当前的pri,如果是over,那表示它的credit已经用完了,不能被run了,需要重新挑一个出来,如果大于over,表示可以run, 就会从runq里面摘出来。
每个pcpu还有一个timer,csched_tick, 它会计算当前vcpu使用了多少credit之类的accounting, 并把每个runq重新排序
当然还少不了一个主timer csched_acct, 定期去计算当前活动dom的活动vcpu里面的credit值,根据一定的策略如weight和cap来决定每个vcpu最后分到的credit值,如果当前credit小于0,那么表示credit不够了,优先级要降低,prio设置成over,如果有设置cap,那么会pause住,等到后面有credit再唤醒。如果credit > 0那么,优先级就提高了,prio设置为under, 如果之前因为cap而被pause的,这个时候可以unpause起来,最后通知说,我需要runq重新排序
中间weight和cap对于credit计算的影响如下:
首先有个CSCHED_CREDITS_PER_ACCT表示这次调度里面每个pcpu能够分配的credit绝对值
credit_total=n core * CSCHED_CREDITS_PER_ACCT
然后有个当前credit_fair会根据你的weight所占的比例来决定你的credit
credit_peak表示你的活动cpu数 * CSCHED_CREDITS_PER_ACCT,这就是你的vcpu能够达到的上限,也就是独占物理cpu
credit_cap根据你的cap来决定你拥有多少物理cpu的能力,cap * CSCHED_CREDITS_PER_ACCT
如果有cap, 那么creadit_cap < credit_peak时,credit_peak=credit_cap,也就是说你的上线由你的credit_cap决定
最后在credit_peak和credit_fair里面取最小的那个值作为整个domain的credit
再把domain的credit除以当前domain活动的cpu数,就变成domain的vcpu的credit
至此xen credit scheduler的基本原理就差不多说完了,后续一些细节点慢慢再补充
xen credit scheduler and policy的更多相关文章
- 云计算之路-阿里云上:“黑色1秒”问题与2009年Xen一个补丁的故事
在之前对“黑色1秒”问题的分析博文中,我们将最大嫌疑对象锁定在了Xen,在这篇博文我们将从Xen的角度进行分析.也许有人会问,为什么不知道天多高地多厚地去研究不属于自己范围的问题?只因我们对一个问题的 ...
- 【转】Kubernetes scheduler学习笔记
简介 Kubernetes是一个强大的编排工具,可以用来很方便的管理许多台机器,为了使机器的资源利用率提高,同时也尽可能的把压力分摊到各个机器上,这个职责就是由scheduler来完成的. Kuber ...
- Openvswitch手册(6): QoS
这一节我们看QoS,Qos的设置往往是和flow中的policy一起使用的 Open vSwitch QoS capabilities 1 Interface rate limiting 2 Port ...
- 《k8s-1.13版本源码分析》-调度器初始化
源码分析系列文章已经开源到github,地址如下: github:https://github.com/farmer-hutao/k8s-source-code-analysis gitbook:ht ...
- Scoring and Modeling—— Underwriting and Loan Approval Process
https://www.fdic.gov/regulations/examinations/credit_card/ch8.html Types of Scoring FICO Scores V ...
- kube-scheduler源码分析
kubernetes集群三步安装 kube-scheduler源码分析 关于源码编译 我嫌弃官方提供的编译脚本太麻烦,所以用了更简单粗暴的方式编译k8s代码,当然官方脚本在编译所有项目或者夸平台编译以 ...
- kube-scheduler源码分析(1)-初始化与启动分析
kube-scheduler源码分析(1)-初始化与启动分析 kube-scheduler简介 kube-scheduler组件是kubernetes中的核心组件之一,主要负责pod资源对象的调度工作 ...
- AndroidStudio3.0无法打开Android Device Monitor的解决办法(An error has occurred on Android Device Monitor)
---恢复内容开始--- 打开monitor时出现 An error has occurred. See the log file... ------------------------------- ...
- Hypervisor scheduler
Techniques for configuring a hypervisor scheduler to make use of cache topology of processors and ph ...
随机推荐
- LATEX学习笔记1
LATEX源文件的结构分三大部分,依次为:文档类声明.序言(可选).正文. 文档结构 \documentclass{article} \usepackage{amsmath} \usepackage{ ...
- Object layout in C++ and access control
The variables are guaranteed to be laid out contiguously, as in C. However, the access blocks may no ...
- Windows Phone 之手势识别(Flick)
1. 引入dll (silverlight for wndows phone toolkit) 2.引入命名空间 01.xmlns:toolkit="clr-namespace:Micros ...
- 基础-函数3(IIFE立即执行函数)
参考链接: http://benalman.com/news/2010/11/immediately-invoked-function-expression/#iife http://segmentf ...
- HttpWebRequest 写入报错
HttpWebRequest以UTF-8编码写入内容时发生“Bytes to be written to the stream exceed the Content-Length bytes size ...
- CSS3随笔系列之transform(一)—— transform-origin
transform-origin属性平时似乎用得很少,它决定了变换时依赖的原点.基本的属性特性可以参考CSS手册. 如果在H5动画项目中,用到旋转的话,它还是不能小觑的. 假如我们做一个秋千效果 其实 ...
- ios7新特性1-UI变化、UIKit动态行为支持与Text Kit新接口
iOS 7.0新特性1 iOS 7的UI经过了重新设计.另外,iOS7中引入了新的动画系统,便于创建2D和2.5D的游戏.多任务支持提升,点对点通讯以及其他重要的特征使iOS7相对于以往的SDK来说发 ...
- Jamie's Contact Groups
poj2289:http://poj.org/problem?id=2289 题意:给定一个规模为n的名单,要将名单中的人归到m个组中,给出每个人可能的分组号,需要确定一种分配方案,是的最大规模的组最 ...
- SQL SELECT基本语句结构
(1)SELECT select_list (2) FROM table_list (3) WHERE search_conditions GROUP BY group_by_list ...
- MEMS Gyroscope Technology
InvenSense®Technology Overview Our technology is comprised of five coreelements: our patented Nasiri ...