From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Dan Hecht <dhecht@vmware.com>
Cc: Chris Wright <chrisw@sous-sol.org>,
dwalker@mvista.com, john stultz <johnstul@us.ibm.com>,
Thomas Gleixner <tglx@linutronix.de>,
Virtualization Mailing List <virtualization@lists.osdl.org>,
cpufreq@lists.linux.org.uk, Ingo Molnar <mingo@elte.hu>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Con Kolivas <kernel@kolivas.org>
Subject: Re: Stolen and degraded time and schedulers
Date: Tue, 13 Mar 2007 21:37:59 -0700 [thread overview]
Message-ID: <45F77C27.8090604@goop.org> (raw)
In-Reply-To: <45F74515.7010808@vmware.com>
Dan Hecht wrote:
> With your previous definition of work time, would it be that:
>
> monotonic_time == work_time + stolen_time ??
(By monotonic time, I presume you mean monotonic real time.) Yes, I
suppose you could, but I don't think that's terribly useful. I think
work_time is probably most naturally measured in cpu clock cycles rather
than an actual time unit. You could convert it to ns, but I don't see
the point.
I know its a term in general use, but I don't think the term "stolen
time" is all that useful, particularly when we're talking about a more
general notion of cpu work contributing to the progress of process
execution. In the cpufreq case, time isn't "stolen" per se.
(I guess I don't like the term stolen time because you don't refer to
time spent on other processes as being stolen from your process: its
just processor time being distributed.)
> i.e. would you be defining stolen_time to include the time lost to
> processes due to the cpu running at a lower frequency? How does this
> play into the other potential users, besides sched_clock(), of stolen
> time? We should make sure that the abstraction introduced here makes
> sense in those places too.
Be specific. What other uses are there?
> For example, the stuff that happens in update_process_times(). I
> think we'd want to account the stolen time to cpustat->steal.
I guess we could do something for that. Would we account non-full-speed
cpus to it? Maybe?
How is cpustat->steal used? How does it get out to usermode?
> Also we'd probably want account for stolen time with regards to
> task_running_tick(). (Though, in the latter case, maybe we first have
> to move the scheduler away from assuming HZ rate decrementing of
> p->time_slice to get this right. i.e. remove the tick based assumption
> from the scheduler, and then maybe stolen time falls in more naturally
> when accounting time slices).
I think the important part is that sched_clock() be used to actually
compute how much time each process gets. The fact that a time quantum
gets stolen is less important. Or do you mean something else?
> I guess taking your cpufreq as an example of work_time progressing
> slower than monotonic_time (and assuming that the remaining time is
> what you would call stolen), then e.g. top would report 50% of your
> cpu stolen when you cpu is running at 1/2 max rate.
Yes. In the same way that clock modulation gates the cpu clock, the
hypervisor effectively gates the clock by giving time to other vcpus.
> And p->time_slice would decrement at 1/2 the rate it normally did when
> running at 1/2 speed. Is this the right thing to do? If so, then I
> agree it makes sense to model hypervisor stolen time in terms of your
> "work time".
Yes, that's my thought.
> But, if not, then maybe the amount of work you can get done during a
> period of time that is not stolen and the stolen time itself are
> really two different notions, and shouldn't be confused. I can see
> arguments both ways.
It seems to me like a nice opportunity to solve two problems with one
mechanism.
J
WARNING: multiple messages have this Message-ID (diff)
From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Dan Hecht <dhecht@vmware.com>
Cc: dwalker@mvista.com, cpufreq@lists.linux.org.uk,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Con Kolivas <kernel@kolivas.org>,
Chris Wright <chrisw@sous-sol.org>,
Virtualization Mailing List <virtualization@lists.osdl.org>,
john stultz <johnstul@us.ibm.com>, Ingo Molnar <mingo@elte.hu>,
Thomas Gleixner <tglx@linutronix.de>
Subject: Re: Stolen and degraded time and schedulers
Date: Tue, 13 Mar 2007 21:37:59 -0700 [thread overview]
Message-ID: <45F77C27.8090604@goop.org> (raw)
In-Reply-To: <45F74515.7010808@vmware.com>
Dan Hecht wrote:
> With your previous definition of work time, would it be that:
>
> monotonic_time == work_time + stolen_time ??
(By monotonic time, I presume you mean monotonic real time.) Yes, I
suppose you could, but I don't think that's terribly useful. I think
work_time is probably most naturally measured in cpu clock cycles rather
than an actual time unit. You could convert it to ns, but I don't see
the point.
I know its a term in general use, but I don't think the term "stolen
time" is all that useful, particularly when we're talking about a more
general notion of cpu work contributing to the progress of process
execution. In the cpufreq case, time isn't "stolen" per se.
(I guess I don't like the term stolen time because you don't refer to
time spent on other processes as being stolen from your process: its
just processor time being distributed.)
> i.e. would you be defining stolen_time to include the time lost to
> processes due to the cpu running at a lower frequency? How does this
> play into the other potential users, besides sched_clock(), of stolen
> time? We should make sure that the abstraction introduced here makes
> sense in those places too.
Be specific. What other uses are there?
> For example, the stuff that happens in update_process_times(). I
> think we'd want to account the stolen time to cpustat->steal.
I guess we could do something for that. Would we account non-full-speed
cpus to it? Maybe?
How is cpustat->steal used? How does it get out to usermode?
> Also we'd probably want account for stolen time with regards to
> task_running_tick(). (Though, in the latter case, maybe we first have
> to move the scheduler away from assuming HZ rate decrementing of
> p->time_slice to get this right. i.e. remove the tick based assumption
> from the scheduler, and then maybe stolen time falls in more naturally
> when accounting time slices).
I think the important part is that sched_clock() be used to actually
compute how much time each process gets. The fact that a time quantum
gets stolen is less important. Or do you mean something else?
> I guess taking your cpufreq as an example of work_time progressing
> slower than monotonic_time (and assuming that the remaining time is
> what you would call stolen), then e.g. top would report 50% of your
> cpu stolen when you cpu is running at 1/2 max rate.
Yes. In the same way that clock modulation gates the cpu clock, the
hypervisor effectively gates the clock by giving time to other vcpus.
> And p->time_slice would decrement at 1/2 the rate it normally did when
> running at 1/2 speed. Is this the right thing to do? If so, then I
> agree it makes sense to model hypervisor stolen time in terms of your
> "work time".
Yes, that's my thought.
> But, if not, then maybe the amount of work you can get done during a
> period of time that is not stolen and the stolen time itself are
> really two different notions, and shouldn't be confused. I can see
> arguments both ways.
It seems to me like a nice opportunity to solve two problems with one
mechanism.
J
next prev parent reply other threads:[~2007-03-14 4:37 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-03-13 16:31 Stolen and degraded time and schedulers Jeremy Fitzhardinge
2007-03-13 16:31 ` Jeremy Fitzhardinge
2007-03-13 20:12 ` john stultz
2007-03-13 20:32 ` Jeremy Fitzhardinge
2007-03-13 20:32 ` Jeremy Fitzhardinge
2007-03-13 21:27 ` Daniel Walker
2007-03-13 21:27 ` Daniel Walker
2007-03-13 21:59 ` Jeremy Fitzhardinge
2007-03-13 21:59 ` Jeremy Fitzhardinge
2007-03-14 0:43 ` Dan Hecht
2007-03-14 4:37 ` Jeremy Fitzhardinge [this message]
2007-03-14 4:37 ` Jeremy Fitzhardinge
2007-03-14 13:58 ` Lennart Sorensen
2007-03-14 15:08 ` Jeremy Fitzhardinge
2007-03-14 15:12 ` Lennart Sorensen
2007-03-14 15:12 ` Lennart Sorensen
2007-03-14 19:02 ` Dan Hecht
2007-03-14 19:34 ` Jeremy Fitzhardinge
2007-03-14 19:45 ` Rik van Riel
2007-03-14 19:45 ` Rik van Riel
2007-03-14 19:47 ` Jeremy Fitzhardinge
2007-03-14 19:47 ` Jeremy Fitzhardinge
2007-03-14 20:02 ` Rik van Riel
2007-03-14 20:02 ` Rik van Riel
2007-03-14 20:26 ` Dan Hecht
2007-03-14 20:31 ` Jeremy Fitzhardinge
2007-03-14 20:46 ` Dan Hecht
2007-03-14 20:46 ` Dan Hecht
2007-03-14 21:18 ` Jeremy Fitzhardinge
2007-03-15 19:09 ` Dan Hecht
2007-03-15 19:09 ` Dan Hecht
2007-03-15 19:18 ` Jeremy Fitzhardinge
2007-03-15 19:18 ` Jeremy Fitzhardinge
2007-03-15 19:48 ` Rik van Riel
2007-03-15 19:48 ` Rik van Riel
2007-03-15 19:53 ` Jeremy Fitzhardinge
2007-03-15 19:53 ` Jeremy Fitzhardinge
2007-03-15 20:07 ` Dan Hecht
2007-03-15 20:07 ` Dan Hecht
2007-03-15 20:14 ` Rik van Riel
2007-03-15 20:14 ` Rik van Riel
2007-03-15 20:35 ` Dan Hecht
2007-03-15 20:35 ` Dan Hecht
2007-03-16 8:59 ` Martin Schwidefsky
2007-03-14 20:38 ` Ingo Molnar
2007-03-14 20:38 ` Ingo Molnar
2007-03-14 20:59 ` Jeremy Fitzhardinge
2007-03-16 8:38 ` Ingo Molnar
2007-03-16 8:38 ` Ingo Molnar
2007-03-16 16:53 ` Jeremy Fitzhardinge
2007-03-15 5:23 ` Paul Mackerras
2007-03-15 5:23 ` Paul Mackerras
2007-03-15 19:33 ` Jeremy Fitzhardinge
2007-03-14 2:00 ` Daniel Walker
2007-03-14 6:52 ` Jeremy Fitzhardinge
2007-03-14 8:20 ` Zan Lynx
2007-03-14 16:11 ` Daniel Walker
2007-03-14 16:11 ` Daniel Walker
2007-03-14 16:37 ` Jeremy Fitzhardinge
2007-03-14 16:59 ` Daniel Walker
2007-03-14 17:08 ` Jeremy Fitzhardinge
2007-03-14 18:06 ` Daniel Walker
2007-03-14 18:06 ` Daniel Walker
2007-03-14 18:41 ` Jeremy Fitzhardinge
2007-03-14 19:00 ` Daniel Walker
2007-03-14 19:44 ` Jeremy Fitzhardinge
2007-03-14 20:33 ` Daniel Walker
2007-03-14 21:16 ` Jeremy Fitzhardinge
2007-03-14 21:34 ` Daniel Walker
2007-03-14 21:42 ` Jeremy Fitzhardinge
2007-03-14 21:36 ` Con Kolivas
2007-03-14 21:36 ` Con Kolivas
2007-03-14 21:38 ` Jeremy Fitzhardinge
2007-03-14 21:38 ` Jeremy Fitzhardinge
2007-03-14 21:40 ` Con Kolivas
2007-03-14 21:40 ` Con Kolivas
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=45F77C27.8090604@goop.org \
--to=jeremy@goop.org \
--cc=chrisw@sous-sol.org \
--cc=cpufreq@lists.linux.org.uk \
--cc=dhecht@vmware.com \
--cc=dwalker@mvista.com \
--cc=johnstul@us.ibm.com \
--cc=kernel@kolivas.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=tglx@linutronix.de \
--cc=virtualization@lists.osdl.org \
/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.