[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <05ec7efc-fb9c-ae24-5770-66fc472545a4@redhat.com>
Date: Tue, 27 Jun 2017 14:28:17 +0200
From: Paolo Bonzini <pbonzini@...hat.com>
To: Wanpeng Li <kernellwp@...il.com>
Cc: Yang Zhang <yang.zhang.wz@...il.com>,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>,
"H. Peter Anvin" <hpa@...or.com>,
the arch/x86 maintainers <x86@...nel.org>,
Jonathan Corbet <corbet@....net>, tony.luck@...el.com,
Borislav Petkov <bp@...en8.de>,
Peter Zijlstra <peterz@...radead.org>, mchehab@...nel.org,
Andrew Morton <akpm@...ux-foundation.org>, krzk@...nel.org,
jpoimboe@...hat.com, Andy Lutomirski <luto@...nel.org>,
Christian Borntraeger <borntraeger@...ibm.com>,
Thomas Garnier <thgarnie@...gle.com>,
Robert Gerst <rgerst@...il.com>,
Mathias Krause <minipli@...glemail.com>,
douly.fnst@...fujitsu.com, Nicolai Stange <nicstange@...il.com>,
Frederic Weisbecker <fweisbec@...il.com>, dvlasenk@...hat.com,
Daniel Bristot de Oliveira <bristot@...hat.com>,
yamada.masahiro@...ionext.com, mika.westerberg@...ux.intel.com,
Chen Yu <yu.c.chen@...el.com>, aaron.lu@...el.com,
Steven Rostedt <rostedt@...dmis.org>,
Kyle Huey <me@...ehuey.com>, Len Brown <len.brown@...el.com>,
Prarit Bhargava <prarit@...hat.com>,
hidehiro.kawai.ez@...achi.com, fengtiantian@...wei.com,
pmladek@...e.com, jeyu@...hat.com, Larry.Finger@...inger.net,
zijun_hu@....com, luisbg@....samsung.com, johannes.berg@...el.com,
niklas.soderlund+renesas@...natech.se, zlpnobody@...il.com,
Alexey Dobriyan <adobriyan@...il.com>, fgao@...ai8.com,
ebiederm@...ssion.com,
Subash Abhinov Kasiviswanathan <subashab@...eaurora.org>,
Arnd Bergmann <arnd@...db.de>,
Matt Fleming <matt@...eblueprint.co.uk>,
Mel Gorman <mgorman@...hsingularity.net>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
linux-doc@...r.kernel.org, linux-edac@...r.kernel.org,
kvm <kvm@...r.kernel.org>
Subject: Re: [PATCH 2/2] x86/idle: use dynamic halt poll
On 27/06/2017 14:23, Wanpeng Li wrote:
>>>> I have considered single_task_running() before. But since there is no
>>>> such paravirtual interface currently and i am not sure whether it is a
>>>> information leak from host if introducing such interface, so i didn't do
>>>> it. Do you mean vcpu_is_preempted can do the same thing? I check the
>>>> code and seems it only tells whether the VCPU is scheduled out or not
>>>> which cannot satisfy the needs.
>>> Can you help to answer my confusion? I have double checked the code, but
>>> still not get your point. Do you think it is necessary to introduce an
>>> paravirtual interface to expose single_task_running() to guest?
>
> I think vcpu_is_preempted is a good enough replacement.
> For example, vcpu->arch.st.steal.preempted is 0 when the vCPU is sched
> in and vmentry, then several tasks are enqueued on the same pCPU and
> waiting on cfs red-black tree, the guest should avoid to poll in this
> scenario, however, vcpu_is_preempted returns false and guest decides
> to poll.
... which is not necessarily _wrong_. It's just a different heuristic.
In the end, the guest could run with "idle=poll" even, and there's
little the host scheduler can do about it, except treating it as a CPU
bound task.
Paolo
Powered by blists - more mailing lists