[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [RFC 0/6] XEN scheduling hardening
From: Andrii Anisov <andrii_anisov@xxxxxxxx> This is the very RFC series, which is aimed to address some of VCPU time accounting problems which affect scheduling fairness and accuracy. Please note that this is done for ARM64 yet. One of the scheduling problems is a misleading CPU idle time concept. Now for the CPU idle time, it is taken an idle vcpu run time. But idle vcpu run time includes IRQ processing, softirqs processing, tasklets processing, etc. Those tasks are not actual idle and they accounting may mislead CPU freq governors who rely on the CPU idle time. In this series, it is suggested to take the time of the actual CPU low power mode as the idle time. The other problem is that pure hypervisor tasks execution time is charged from the guest vcpu budget. For example, IRQ and softirq processing time are charged from the current vcpu budget, which is likely the guest vcpu. This is quite unfair and may break scheduling reliability. It is proposed to charge guest vcpus for the guest actual run time and time to serve guest's hypercalls and access to emulated iomem. All the rest is calculated as the hypervisor run time (IRQ and softirq processing, branch prediction hardening, etc.) While the series is the early RFC, several points are still untouched: - Now the time elapsed from the last rescheduling is not fully charged from the current vcpu budget. Are there any changes needed in the existing scheduling algorithms? - How to avoid the absolute top priority of tasklets (what is obeyed by all schedulers so far). Should idle vcpu be scheduled as the normal guest vcpus (through queues, priorities, etc)? - Idle vcpu naming is quite misleading. It is a kind of system (hypervisor) task which is responsible for some hypervisor work. Should it be renamed/reconsidered? Andrii Anisov (5): schedule: account true system idle time sysctl: extend XEN_SYSCTL_getcpuinfo interface xentop: show CPU load information arm64: call enter_hypervisor_head only when it is needed schedule: account all the hypervisor time to the idle vcpu Julien Grall (1): xen/arm: Re-enable interrupt later in the trap path tools/xenstat/libxenstat/src/xenstat.c | 38 +++++++++ tools/xenstat/libxenstat/src/xenstat.h | 9 ++ tools/xenstat/libxenstat/src/xenstat_priv.h | 3 + tools/xenstat/xentop/xentop.c | 30 +++++++ xen/arch/arm/arm64/entry.S | 17 ++-- xen/arch/arm/domain.c | 24 ++++++ xen/arch/arm/traps.c | 128 +++++++++++++++++++--------- xen/common/sched_credit.c | 2 +- xen/common/sched_credit2.c | 4 +- xen/common/sched_rt.c | 2 +- xen/common/schedule.c | 98 ++++++++++++++++++--- xen/common/sysctl.c | 2 + xen/include/public/sysctl.h | 2 + xen/include/xen/sched.h | 7 ++ 14 files changed, 303 insertions(+), 63 deletions(-) -- 2.7.4 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |