On Wed, 19 May 2021 at 03:21, Sean Christopherson <seanjc@xxxxxxxxxx> wrote: > > On Tue, May 18, 2021, Wanpeng Li wrote: > > From: Wanpeng Li <wanpengli@xxxxxxxxxxx> > > > > In case of under-committed scenarios, vCPU can get scheduling easily, > > kvm_vcpu_yield_to add extra overhead, we can observe a lot of race > > between vcpu->ready is true and yield fails due to p->state is > > TASK_RUNNING. Let's bail out in such scenarios by checking the length > > of current cpu runqueue, it can be treated as a hint of under-committed > > instead of guarantee of accuracy. The directed_yield_successful/attempted > > ratio can be improved from 50+% to 80+% in the under-committed scenario. > > The "50+% to 80+%" comment will be a bit confusing for future readers now that > the single_task_running() case counts as an attempt. I think the new comment > would be something like "30%+ of directed-yield attempts can avoid the expensive > lookups in kvm_sched_yield() in an under-committed scenario." That would also > provide the real justification, as bumping the success ratio isn't the true goal > of this path. Looks good. Hope Paolo can update the patch description when applying. :) "In case of under-committed scenarios, vCPU can get scheduling easily, kvm_vcpu_yield_to add extra overhead, we can observe a lot of races between vcpu->ready is true and yield fails due to p->state is TASK_RUNNING. Let's bail out in such scenarios by checking the length of current cpu runqueue, it can be treated as a hint of under-committed instead of guaranteeing accuracy. 30%+ of directed-yield attempts can avoid the expensive lookups in kvm_sched_yield() in an under-committed scenario. "