doc: update two scheduling algorithm

Add description for the IORR (IO sensitive Round Robin) scheduler
and the priority based scheduler.

Signed-off-by: Jie Deng <jie.deng@intel.com>
Signed-off-by: Yifan Liu <yifan1.liu@intel.com>
This commit is contained in:
Jie Deng 2021-09-24 10:58:30 +08:00 committed by David Kinder
parent 49d9567132
commit a085b1eaaf
1 changed files with 18 additions and 6 deletions

View File

@ -86,8 +86,9 @@ Scheduler
********* *********
The below block diagram shows the basic concept for the scheduler. There The below block diagram shows the basic concept for the scheduler. There
are two kinds of schedulers in the diagram: NOOP (No-Operation) scheduler are four kinds of schedulers in the diagram: NOOP (No-Operation) scheduler,
and BVT (Borrowed Virtual Time) scheduler. the IO sensitive Round Robin scheduler, the priority based scheduler and
the BVT (Borrowed Virtual Time) scheduler. By default, BVT is used.
- **No-Operation scheduler**: - **No-Operation scheduler**:
@ -99,16 +100,27 @@ and BVT (Borrowed Virtual Time) scheduler.
tries to keep resources busy, and will run once it is ready. The idle thread tries to keep resources busy, and will run once it is ready. The idle thread
can run when the vCPU thread is blocked. can run when the vCPU thread is blocked.
- **IO sensitive Round Robin scheduler**:
The IORR (IO sensitive Round Robin) scheduler supports multiple vCPUs running
on one pCPU, scheduled by a IO sensitive round robin policy.
- **Priority based scheduler**:
The priority based scheduler can support vCPU scheduling based on their
pre-configured priorities. A vCPU can be running only if there is no
higher priority vCPU running on the same pCPU. For example, in some cases,
we have two VMs, one VM can be configured to use **PRIO_LOW** and the
other one to use **PRIO_HIGH**. The vCPU of the **PRIO_LOW** VM can
only be running when the vCPU of the **PRIO_HIGH** VM voluntarily relinquishes
usage of the pCPU.
- **Borrowed Virtual Time scheduler**: - **Borrowed Virtual Time scheduler**:
BVT (Borrowed Virtual time) is a virtual time based scheduling BVT (Borrowed Virtual time) is a virtual time based scheduling
algorithm, it dispatches the runnable thread with the earliest algorithm, it dispatches the runnable thread with the earliest
effective virtual time. effective virtual time.
TODO: BVT scheduler will be built on top of prioritized scheduling
mechanism, i.e. higher priority threads get scheduled first, and same
priority tasks are scheduled per BVT.
- **Virtual time**: The thread with the earliest effective virtual - **Virtual time**: The thread with the earliest effective virtual
time (EVT) is dispatched first. time (EVT) is dispatched first.
- **Warp**: a latency-sensitive thread is allowed to warp back in - **Warp**: a latency-sensitive thread is allowed to warp back in