All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Lezcano <daniel.lezcano@linaro.org>
To: Quan Xu <quan.xu0@gmail.com>,
	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 19:01:14 +0100	[thread overview]
Message-ID: <365f1aaa-0cda-ef58-5574-27810ec1789a@linaro.org> (raw)
In-Reply-To: <5deab1e9-cef2-0511-09d8-cef8e4323f02@gmail.com>

On 20/11/2017 08:05, Quan Xu wrote:

[ ... ]

>>>> 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.

The irq timings gives you an indication of the next interrupt deadline.

This information is a piece of the puzzle, you need to combine it with
the next timer expiration, and the next scheduling event. Then take the
earliest event in a timeline basis.

Using the trivial scheme above will work well with workload like videos
or mp3 but will fail as soon as the interrupts are not coming in a
regular basis and this is where the pattern recognition algorithm must act.

>> 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.

Sure, I will be glad if we can collaborate. I have some draft code but
before sharing it I would like we define what is the rate and what kind
of information we expect to infer from it. From my point of view it is a
value indicating the interrupt period per CPU, a short value indicates a
high number of interrupts on the CPU.

This value must decay with the time, the question here is what decay
function we apply to the rate from the last timestamp ?




-- 
 <http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs

Follow Linaro:  <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog

  parent reply	other threads:[~2017-11-20 18:01 UTC|newest]

Thread overview: 99+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-11-13 10:05 [PATCH RFC v3 0/6] x86/idle: add halt poll support Quan Xu
2017-11-13 10:06 ` [PATCH RFC v3 1/6] x86/paravirt: Add pv_idle_ops to paravirt ops Quan Xu
2017-11-13 10:53   ` Juergen Gross
2017-11-13 11:09     ` Wanpeng Li
2017-11-13 11:09       ` Wanpeng Li
2017-11-13 11:09     ` Wanpeng Li
2017-11-13 11:09     ` Wanpeng Li
2017-11-14  7:02     ` Quan Xu
2017-11-14  7:02     ` Quan Xu
2017-11-14  7:02     ` Quan Xu
2017-11-14  7:12       ` Wanpeng Li
2017-11-14  7:12         ` Wanpeng Li
2017-11-14  8:15         ` Quan Xu
2017-11-14  8:15         ` Quan Xu
2017-11-14  8:15           ` Quan Xu
2017-11-14  8:22           ` Wanpeng Li
2017-11-14  8:22             ` Wanpeng Li
2017-11-14  8:22             ` Wanpeng Li
2017-11-14  8:22             ` Wanpeng Li
2017-11-14 10:23             ` Quan Xu
2017-11-14 10:23               ` Quan Xu
2017-11-14 10:23             ` Quan Xu
2017-11-14 10:23             ` Quan Xu
2017-11-14  8:22           ` Wanpeng Li
2017-11-14  8:15         ` Quan Xu
2017-11-14  7:12       ` Wanpeng Li
2017-11-14  7:12       ` Wanpeng Li
2017-11-14  7:30       ` Juergen Gross
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:43             ` Quan Xu
2017-11-14 11:43             ` Quan Xu
2017-11-14 11:58               ` Juergen Gross
2017-11-14 11:58               ` Juergen Gross
2017-11-14 11:58                 ` Juergen Gross
2017-11-14 10:27           ` Juergen Gross
2017-11-14 10:27           ` Juergen Gross
2017-11-14  9:38         ` Quan Xu
2017-11-14  9:38         ` Quan Xu
2017-11-14  7:30       ` Juergen Gross
2017-11-13 10:53   ` Juergen Gross
2017-11-13 10:53   ` Juergen Gross
2017-11-13 10:06 ` Quan Xu
2017-11-13 10:06 ` [PATCH RFC v3 2/6] KVM guest: register kvm_idle_poll for pv_idle_ops Quan Xu
2017-11-13 10:06 ` Quan Xu
2017-11-13 10:06 ` [PATCH RFC v3 3/6] sched/idle: Add a generic poll before enter real idle path Quan Xu
2017-11-15 12:11   ` Peter Zijlstra
2017-11-15 12:11     ` Peter Zijlstra
2017-11-15 22:03     ` Thomas Gleixner
2017-11-15 22:03     ` Thomas Gleixner
2017-11-15 22:03     ` Thomas Gleixner
2017-11-16  8:45       ` Peter Zijlstra
2017-11-16  8:45         ` Peter Zijlstra
2017-11-16  8:58         ` Thomas Gleixner
2017-11-16  8:58         ` Thomas Gleixner
2017-11-16  8:58         ` Thomas Gleixner
2017-11-16  9:29         ` Quan Xu
2017-11-16  9:29         ` Quan Xu
2017-11-16  9:47           ` Thomas Gleixner
2017-11-16  9:47           ` Thomas Gleixner
2017-11-16  9:47           ` Thomas Gleixner
2017-11-16  9:29         ` Quan Xu
2017-11-16  8:45       ` Peter Zijlstra
2017-11-16  9:12       ` Quan Xu
2017-11-16  9:45         ` Daniel Lezcano
2017-11-20  7:05           ` Quan Xu
2017-11-20  7:05           ` Quan Xu
2017-11-20 18:01             ` Daniel Lezcano
2017-11-20 18:01             ` Daniel Lezcano [this message]
2017-11-20 18:01             ` Daniel Lezcano
2017-11-20  7:05           ` Quan Xu
2017-11-16  9:45         ` Daniel Lezcano
2017-11-16  9:45         ` Daniel Lezcano
2017-11-16  9:53         ` Thomas Gleixner
2017-11-16  9:53         ` Thomas Gleixner
2017-11-17 11:23           ` Quan Xu
2017-11-17 11:23           ` Quan Xu
2017-11-17 11:23           ` Quan Xu
2017-11-17 11:36             ` Thomas Gleixner
2017-11-17 11:36             ` Thomas Gleixner
2017-11-17 11:36               ` Thomas Gleixner
2017-11-17 11:36               ` Thomas Gleixner
2017-11-17 12:21               ` Quan Xu
2017-11-17 12:21                 ` Quan Xu
2017-11-17 12:21               ` Quan Xu
2017-11-17 12:21               ` Quan Xu
2017-11-16  9:53         ` Thomas Gleixner
2017-11-16  9:12       ` Quan Xu
2017-11-16  9:12       ` Quan Xu
2017-11-15 12:11   ` Peter Zijlstra
2017-11-13 10:06 ` Quan Xu
2017-11-15 21:31 ` [PATCH RFC v3 0/6] x86/idle: add halt poll support Konrad Rzeszutek Wilk
2017-11-15 21:31 ` [Xen-devel] " Konrad Rzeszutek Wilk
2017-11-15 21:31   ` Konrad Rzeszutek Wilk
2017-11-20  7:18   ` Quan Xu
2017-11-20  7:18   ` Quan Xu
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=365f1aaa-0cda-ef58-5574-27810ec1789a@linaro.org \
    --to=daniel.lezcano@linaro.org \
    --cc=bp@alien8.de \
    --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=quan.xu0@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.