real-time scheduler in xen--sedf
来源:互联网 发布:指南针导入指标源码 编辑:程序博客网 时间:2024/05/16 00:30
大致看完scheduler_credit的代码后,开始想了解下其他的scheduler的实现,新的scheduler有credit2,老一点的有sedf, bvt之类。由于scheduler_sedf在3.0之后一直都存在代码中,就先来看看sedf吧。
sedf--simple earliest deadline first, 从名字上来看类似于io scheduler里面的deadline算法,runq是根据deadline来排序的
没错,从sedf的代码上来,它可以简单的分为三大类队列,runq, waitq, extra。 runq就是当前cpu scheduler时会从top拿任务执行的队列,它的排序就是deadline
对于时间片的分配,先要理解几个名词概念,slice, period, extra。 (3ms, 10ms, 0)这样一个组合就表示vcpu能够在每个10ms的时间段里,用到3ms的时间片,没有extra的时间片,即使7ms都是idle。
在初始化时,如果是dom0,则会初始化period=20ms, slice=15ms,保证dom0有75%的使用率,而其他的domu period=100ms
基本的算法和一般deadline类似,就是每次调度时会依次从runq,waitq,extra里面取任务执行,并且会跟新curr的cpu使用情况,根据使用情况判断它是否需要加入waitq,extra,runq里面。这里需要注意的是,每个pcpu的runq,在schedule_sedf里面不会有migrate,也就是说如果在这个cpu上执行,就一直在这执行,不会主动或者被动的切换(schedule_credit,里面就有主动migrate或者runq_steal的被动切换),所以sedf不具备load balance的功能
furthermore, sedf是抢占型的,即当一个vcpu wake,走到sedf_wake时,会判断shoulw_switch,当vcpu的period_begin < 当前cpu的上vcpu的时间片到期时间, 就立马触发cpu的调度,也就是可以理解为如果一个vcpu的计划执行时间在当前vcpu执行完之前,我会打断当前的执行。schedule_credit里面的原则是比较优先级来决定是否抢占,如果优先级高于当前的优先级,那么主动触发cpu调度。这个优先级可能会被提升,当这个cpu 之前只使用了一点credit, 后来wake的时候prio=under,并且没有cap,就可以提升优先级,抢占当前的cpu。简单的说,scheduler_credit里面的抢占有很多条件很多原则的,sedf里面几乎是无条件的,只要我的计划执行时间在你执行完成前,我就立马抢占。
- real-time scheduler in xen--sedf
- real-time scheduler man page
- Scheduling in Real-Time Systems
- An introduction to the credit scheduler in Xen
- Cloudera Impala: Real-Time Queries in Apache Hadoop, For Real
- Concurrent and Real-Time Programming in Java
- Concurrent and Real-Time Programming in Ada
- Clock Synchronization in Distributed Real Time Systems
- Real-time plotting in Python and Matlab
- Xen's Credit Scheduler
- xen credit scheduler 机制
- Real-time
- [sig11]Advances in Real-Time Rendering in Games Introduction
- Real Time UML : Advances in the UML for Real-Time Systems (3rd Edition)
- Enable the real-time apply in 10G
- 28msec - query data from any source in real time
- Scheduling Algorithms for Multiprogramming in a Hard-Real-Time Environment
- NetHogs - Monitor Per Process Network Bandwidth Usage in Real Time
- 致那些我工作过的设备
- 通用代码库之listview和GridView
- 周期串(注释代写)
- 什么是Category
- linux find prune exec 排除某目录或文件 执行
- real-time scheduler in xen--sedf
- ShopXP购物系统爆高危安全漏洞 SCANV团队独家提供解决方案
- NGUI动态添加
- java笔记桥接模式
- 项目 XXX 受源代码管理。向源代码管理注册此项目时出错。建议不要对此项目进行任何修改
- 菜鸟Android学习之路02——代码控制IU界面
- 浏览器点击链接后没反应
- Sublime Text3安装
- JavaScript权威指南学习笔记——词法结构