[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CANRm+Cyd4ycNdDN8=M66re5RhnrJF=3HPiPuJeMAUgLRb1qBcg@mail.gmail.com>
Date: Tue, 27 Jun 2017 20:23:27 +0800
From: Wanpeng Li <kernellwp@...il.com>
To: Paolo Bonzini <pbonzini@...hat.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
2017-06-27 20:07 GMT+08:00 Paolo Bonzini <pbonzini@...hat.com>:
>
>
> On 27/06/2017 13:22, Yang Zhang wrote:
>>>>
>>>> Regarding the good/bad idea part, KVM's polling is made much more
>>>> acceptable by single_task_running(). At least you need to integrate it
>>>> with paravirtualization. If the VM is scheduled out, you shrink the
>>>> polling period. There is already vcpu_is_preempted for this, it is used
>>>> by mutexes.
>>>
>>> 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.
Regards,
Wanpeng Li
Powered by blists - more mailing lists