Computers/Xen

RT-Xen 정리중

emzei 2015. 1. 18. 02:41



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