2011. RT-Xen paper
RT-Xen 1.0
- Hierarchical realtime scheduling framework
- Budget
- Period
- Priority
- A suite of fixed priority servers
- Deferrable Server
- fixed priority
- VCPU가 준비 상태인경우(task), task가 완료될때까지 혹은 budget을 모두 소진할 때까지 실행
- Guest가 IDLE인 경우 (no task), budget is preserved until the start of its next period
- Periodic Server
- fixed priority
- VCPU가 수행할 task가 없으면(no task), budget 낭비함
- idle task가 budget 소모하듯이
- Polling Server
- =Discarding periodic server
- fixed priority
- task가 없으면 (no task), 잔여 budget 바로 삭제
- Sporadic Server
- 위에 3개는 fixed period마다 invoked되는 반면,
- its budget is continuously replenished as it is used.
- 모든 phys.cores는 3개의 Queue와 연결 - RunQ, RdyQ, RepQ
- Run Q
- task를 갖고있는 vcpu들이 있음
- sorted by priority
- do_schedule할 때마다
- 현재 실행중인 vcpu는 RunQ 또는 RdyQ로 재배정
- RunQ내의 highest priority && positive budget의 vcpu를 골라 1 Quantum 동안 실행
- Ready Q
- task가 없는 vcpu들이 있음
- Periodic server 를 위해 고안됨. for "as if budgets are idle away" behavior
- Highest priority의 VCPU가 IDLE 상태이면서 Positive budget인 경우,
해당 IDLE VCPU는 RunQ로 보내서 budget을 소비하도록 함 - VCPU가 task가 없어도 일단 RdyQ에 저장시켜놓고, RunQ의 vcpu와 비교해서
IDLE VCPU를 RunQ로 스케줄링 시킬지 말지를 결정하기 위해서 ReadyQ 고안. - Replenishment Q
- Replenishment information for all the VCPUs on phys.cores
- RepQ의 모든 entry는 3개의 요소를 갖고 있음
- VCPU to replenish
- replenishment time
- replenishment amount to perform
- tick() 함수에서 매 scheduling quantum마다 RepQ를 확인하고, 필요애 따라서 대응되는 replenishment를 수행.
- Replenished VCPU가 현재 수행중인 VCPU보다 higher priority인 경우,
do_schedule() 가 인터럽트를 통해 실행되고, 현재 수행하던 vcpu는 멈추고 다음으로 적절한 vcpu를 골라서 수행함.
1.0과 2.0 사이에 저자들은 4개의 논문을 냈고 그거 바탕으로 2.0 나옴
*
* CSA
* platform overhead
* cache overhead
2014
RT-Xen 2.0
- 2.0 특징
- 멀티코어 환경에서 고려 (기존1.0 은 single core)
- 3가지 feature
- 1] global scheduler vs. partitioned scheduler
- 2] dynamic priority vs. static priority
- 3] run as deferrable vs. periodic
- Compositional Schedulability Anaylsis(CSA) for resource allocation
- Scheduling interface
- budget
- period
- cpu_mask (which gives the subset of PCPUs on which the VCPU is allowed to run)
- Global vs. Partitioned
- rt-global
- schedules all vcpus in the system
- Runqueue
- its runq is shared by all physical cores
- runq내의 vcpu들은 2가지 중 하나로 분류 - budget의 유무 ---> 그리고 분류된 vcpu는 우선순위로 정렬
- spinlock으로 보호
- rt-partition
- schedules vcpus in its own core's runq
- Runqueue
- rt-global과 동일하게 분류기준있음
- 코어마다 runq가 있으므로 spinlock 보호 안함
- scheduling 시, rt-global과 유사하지만, cpu mask 사용ㄴㄴ (local이라서)
- EDF vs. DM priority
- Dynamic priority --> EDF
- rt-global의 do_schedule()에서
- 기존 1.0과 다른 점
- 현재 실행중인 vcpu를 다시 runq에 넣지않음 --> 다른 phys.core가 가져감
- 그러나 계속 runnable 상태인경우를 핸들링하기 위해 context_saved()를 추가
- Static priority --> DM
- Work conserving deferrable vs. periodic
- 구현에서는 rt-global과 rt-partitioned를 deferrable에서 구현하고 설정을 통해 periodic으로도 가능하게 함
- Evaluation
- 환경
- guest VM의 경우 Litmus RT 이용 (* litmus rt는 soft real-time 지원)
- 평가항목
- scheduling overhead
- system schedulability
- real-time performance
- performance of deferrable & periodic server
'Computers > Xen' 카테고리의 다른 글
Xen 스케줄러 변경하기 - how to change Xen scheduler on Xen command line (0) | 2015.01.18 |
---|---|
Full virtualization config file / xen hvm config (0) | 2014.12.30 |
Pv domU GUI setting @ debian wheezy (0) | 2014.07.31 |
Paravirtualized VM on Xen 4.4.0 with Debian wheezy (0) | 2014.06.04 |
Xen 4.4 installation on Debian wheezy (0) | 2014.05.22 |