From: Quan Xu <quan.xu0@gmail.com>
To: Daniel Lezcano <daniel.lezcano@linaro.org>,
Thomas Gleixner <tglx@linutronix.de>,
Peter Zijlstra <peterz@infradead.org>
Cc: Quan Xu <quan.xu03@gmail.com>,
kvm@vger.kernel.org, linux-doc@vger.kernel.org,
linux-fsdevel@vger.kernel.org,
LKML <linux-kernel@vger.kernel.org>,
virtualization@lists.linux-foundation.org, x86@kernel.org,
xen-devel@lists.xenproject.org,
Yang Zhang <yang.zhang.wz@gmail.com>,
Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
Borislav Petkov <bp@alien8.de>, Kyle Huey <me@kylehuey.com>,
Len Brown <len.brown@intel.com>,
Andy Lutomirski <luto@kernel.org>,
Tom Lendacky <thomas.lendacky@amd.com>,
Tobias Klauser <tklauser@distanz.ch>
Subject: Re: [PATCH RFC v3 3/6] sched/idle: Add a generic poll before enter real idle path
Date: Mon, 20 Nov 2017 15:05:01 +0800 [thread overview]
Message-ID: <5deab1e9-cef2-0511-09d8-cef8e4323f02@gmail.com> (raw)
In-Reply-To: <93a26005-aa37-82e1-5c04-a82c9027bac8@linaro.org>
On 2017-11-16 17:45, Daniel Lezcano wrote:
> On 16/11/2017 10:12, Quan Xu wrote:
>>
>> On 2017-11-16 06:03, Thomas Gleixner wrote:
>>> On Wed, 15 Nov 2017, Peter Zijlstra wrote:
>>>
>>>> On Mon, Nov 13, 2017 at 06:06:02PM +0800, Quan Xu wrote:
>>>>> From: Yang Zhang <yang.zhang.wz@gmail.com>
>>>>>
>>>>> Implement a generic idle poll which resembles the functionality
>>>>> found in arch/. Provide weak arch_cpu_idle_poll function which
>>>>> can be overridden by the architecture code if needed.
>>>> No, we want less of those magic hooks, not more.
>>>>
>>>>> Interrupts arrive which may not cause a reschedule in idle loops.
>>>>> In KVM guest, this costs several VM-exit/VM-entry cycles, VM-entry
>>>>> for interrupts and VM-exit immediately. Also this becomes more
>>>>> expensive than bare metal. Add a generic idle poll before enter
>>>>> real idle path. When a reschedule event is pending, we can bypass
>>>>> the real idle path.
>>>> Why not do a HV specific idle driver?
>>> If I understand the problem correctly then he wants to avoid the heavy
>>> lifting in tick_nohz_idle_enter() in the first place, but there is
>>> already
>>> an interesting quirk there which makes it exit early. See commit
>>> 3c5d92a0cfb5 ("nohz: Introduce arch_needs_cpu"). The reason for this
>>> commit
>>> looks similar. But lets not proliferate that. I'd rather see that go
>>> away.
>> agreed.
>>
>> Even we can get more benifit than commit 3c5d92a0cfb5 ("nohz: Introduce
>> arch_needs_cpu")
>> in kvm guest. I won't proliferate that..
>>
>>> But the irq_timings stuff is heading into the same direction, with a more
>>> complex prediction logic which should tell you pretty good how long that
>>> idle period is going to be and in case of an interrupt heavy workload
>>> this
>>> would skip the extra work of stopping and restarting the tick and
>>> provide a
>>> very good input into a polling decision.
>>
>> interesting. I have tested with IRQ_TIMINGS related code, which seems
>> not working so far.
> I don't know how you tested it, can you elaborate what you meant by
> "seems not working so far" ?
Daniel, I tried to enable IRQ_TIMINGS* manually. used
irq_timings_next_event()
to return estimation of the earliest interrupt. However I got a constant.
> There are still some work to do to be more efficient. The prediction
> based on the irq timings is all right if the interrupts have a simple
> periodicity. But as soon as there is a pattern, the current code can't
> handle it properly and does bad predictions.
>
> I'm working on a self-learning pattern detection which is too heavy for
> the kernel, and with it we should be able to detect properly the
> patterns and re-ajust the period if it changes. I'm in the process of
> making it suitable for kernel code (both math and perf).
>
> One improvement which can be done right now and which can help you is
> the interrupts rate on the CPU. It is possible to compute it and that
> will give an accurate information for the polling decision.
>
>
As tglx said, talk to each other / work together to make it usable for
all use cases.
could you share how to enable it to get the interrupts rate on the CPU?
I can try it
in cloud scenario. of course, I'd like to work with you to improve it.
Quan
Alibaba Cloud
next prev parent reply other threads:[~2017-11-20 7:05 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1510567565-5118-1-git-send-email-quan.xu0@gmail.com>
[not found] ` <1510567565-5118-2-git-send-email-quan.xu0@gmail.com>
2017-11-13 10:53 ` [PATCH RFC v3 1/6] x86/paravirt: Add pv_idle_ops to paravirt ops Juergen Gross
2017-11-13 11:09 ` Wanpeng Li
2017-11-14 7:02 ` Quan Xu
2017-11-14 7:12 ` Wanpeng Li
2017-11-14 8:15 ` Quan Xu
2017-11-14 8:22 ` Wanpeng Li
2017-11-14 10:23 ` Quan Xu
2017-11-14 7:30 ` Juergen Gross
2017-11-14 9:38 ` Quan Xu
2017-11-14 10:27 ` Juergen Gross
2017-11-14 11:43 ` Quan Xu
2017-11-14 11:58 ` Juergen Gross
[not found] ` <1510567565-5118-4-git-send-email-quan.xu0@gmail.com>
2017-11-15 12:11 ` [PATCH RFC v3 3/6] sched/idle: Add a generic poll before enter real idle path Peter Zijlstra
2017-11-15 22:03 ` Thomas Gleixner
2017-11-16 8:45 ` Peter Zijlstra
2017-11-16 8:58 ` Thomas Gleixner
2017-11-16 9:29 ` Quan Xu
2017-11-16 9:47 ` Thomas Gleixner
2017-11-16 9:12 ` Quan Xu
2017-11-16 9:45 ` Daniel Lezcano
2017-11-20 7:05 ` Quan Xu [this message]
2017-11-20 18:01 ` Daniel Lezcano
2017-11-16 9:53 ` Thomas Gleixner
2017-11-17 11:23 ` Quan Xu
2017-11-17 11:36 ` Thomas Gleixner
2017-11-17 12:21 ` Quan Xu
2017-11-15 21:31 ` [Xen-devel] [PATCH RFC v3 0/6] x86/idle: add halt poll support Konrad Rzeszutek Wilk
2017-11-20 7:18 ` Quan Xu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5deab1e9-cef2-0511-09d8-cef8e4323f02@gmail.com \
--to=quan.xu0@gmail.com \
--cc=bp@alien8.de \
--cc=daniel.lezcano@linaro.org \
--cc=hpa@zytor.com \
--cc=kvm@vger.kernel.org \
--cc=len.brown@intel.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@kernel.org \
--cc=me@kylehuey.com \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=quan.xu03@gmail.com \
--cc=tglx@linutronix.de \
--cc=thomas.lendacky@amd.com \
--cc=tklauser@distanz.ch \
--cc=virtualization@lists.linux-foundation.org \
--cc=x86@kernel.org \
--cc=xen-devel@lists.xenproject.org \
--cc=yang.zhang.wz@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®