kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Glauber Costa <glommer@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Rik van Riel <riel@redhat.com>,
	kvm@vger.kernel.org, avi@redhat.com, zamsden@redhat.com,
	mtosatti@redhat.com, mingo@elte.hu
Subject: Re: [RFC v2 4/7] change kernel accounting to include steal time
Date: Thu, 02 Sep 2010 20:24:10 -0700	[thread overview]
Message-ID: <4C806A5A.7000403@goop.org> (raw)
In-Reply-To: <20100902181956.GE5933@mothafucka.localdomain>

 On 09/02/2010 11:19 AM, Glauber Costa wrote:
> On Tue, Aug 31, 2010 at 10:11:49AM +0200, Peter Zijlstra wrote:
>> I think its easier (and sufficient) for the host to tell the guest how
>> long it was _not_ running. That can simply be passed in when you start
>> the vcpu again and doesn't need a fancy communication channel.
>>
>> The guests sched_clock() will measure wall time, the guests
>> sched_clock_stolen() will report the accumulation of these stolen times.
>>
>> Then you can make sched_clock_unstolen() be sched_clock() -
>> sched_clock_stolen(). And like Jeremy said, if you make the sched_fair
>> stuff use sched_clock_unstolen() things should more or less work.
> So what's the big drawback of just making sched_clock return sched_clock_unstolen?
> When there is no steal time involved, they will just be equal anyway.
> And this way, everybody that relies on sched_clock for whatever reason,
> will probably work.

I can say from experience that it definitely does not work.  That's what
I tried up until recently when I reverted it all.

It doesn't work for two semi-related reasons:

    * Using sched_clock_unstolen() to measure idle/sleep times is
      completely meaningless (nobody cares if the cpu was "stolen" while
      you were sleeping).
    * The notion of unstolen time is inherently per-cpu, so the unstolen
      clocks are completely unsynchronized between cpus, whereas
      sched_clock is expected to be moderately well synchronized.

A corollary to this is that if a task sleeps on one cpu and wakes on
another, then "sleep_time = sleep_end - sleep_start" is completely,
utterly, meaningless if you use per-cpu unstolen time as your timebase
sleep_start/end.

(The surprising thing is that it actually works surprisingly well, in
that the system runs and there's only occasional oddities like "idle
time" being completely misreported, and sometimes processes go to sleep
for really long times.)

    J

  reply	other threads:[~2010-09-03  3:24 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-08-30 16:06 [RFC v2 0/7] kvm stael time implementation Glauber Costa
2010-08-30 16:06 ` [RFC v2 1/7] change headers preparing for steal time Glauber Costa
2010-08-30 16:06   ` [RFC 1/8] Implement getnsboottime kernel API Glauber Costa
2010-08-30 16:06     ` [RFC v2 2/7] always call kvm_write_guest Glauber Costa
2010-08-30 16:06       ` [RFC 2/8] change headers preparing for steal time Glauber Costa
2010-08-30 16:06         ` [RFC 3/8] always call kvm_write_guest Glauber Costa
2010-08-30 16:06           ` [RFC v2 3/7] measure time out of guest Glauber Costa
2010-08-30 16:06             ` [RFC v2 4/7] change kernel accounting to include steal time Glauber Costa
2010-08-30 16:06               ` [RFC 4/8] measure time out of guest Glauber Costa
2010-08-30 16:06                 ` [RFC 5/8] change kernel accounting to include steal time Glauber Costa
2010-08-30 16:06                   ` [RFC v2 5/7] kvm steal time implementation Glauber Costa
2010-08-30 16:06                     ` [RFC 6/8] " Glauber Costa
2010-08-30 16:06                       ` [RFC v2 6/7] touch softlockup watchdog Glauber Costa
2010-08-30 16:06                         ` [RFC v2 7/7] tell guest about steal time feature Glauber Costa
2010-08-30 16:06                           ` [RFC 7/8] touch softlockup watchdog Glauber Costa
2010-08-30 16:06                             ` [RFC 8/8] tell guest about steal time feature Glauber Costa
2010-08-30 17:33                         ` [RFC v2 6/7] touch softlockup watchdog Jeremy Fitzhardinge
2010-08-30 18:07                           ` Glauber Costa
2010-08-30 16:46                   ` [RFC 5/8] change kernel accounting to include steal time Peter Zijlstra
2010-08-30 17:26                     ` Glauber Costa
2010-08-30 17:30               ` [RFC v2 4/7] " Jeremy Fitzhardinge
2010-08-30 18:39                 ` Rik van Riel
2010-08-30 19:07                   ` Jeremy Fitzhardinge
2010-08-30 19:14                     ` Peter Zijlstra
2010-08-30 19:17                     ` Rik van Riel
2010-08-30 19:20                       ` Peter Zijlstra
2010-08-30 19:45                         ` Rik van Riel
2010-08-30 22:56                           ` Jeremy Fitzhardinge
2010-08-30 23:03                             ` Rik van Riel
2010-08-31  8:11                               ` Peter Zijlstra
2010-09-02 18:19                                 ` Glauber Costa
2010-09-03  3:24                                   ` Jeremy Fitzhardinge [this message]
2010-09-03  7:18                                   ` Peter Zijlstra
2010-09-01 23:56     ` [RFC 1/8] Implement getnsboottime kernel API Zachary Amsden
2010-08-30 16:37 ` [RFC v2 0/7] kvm stael time implementation Peter Zijlstra
2010-08-30 16:45   ` Jeremy Fitzhardinge
2010-08-30 17:21     ` Glauber Costa
2010-08-30 17:20 ` Jeremy Fitzhardinge
2010-08-30 17:06 [RFC v2 0/7] kvm steal time implementation proposal Glauber Costa
2010-08-30 17:06 ` [RFC v2 4/7] change kernel accounting to include steal time Glauber Costa

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=4C806A5A.7000403@goop.org \
    --to=jeremy@goop.org \
    --cc=avi@redhat.com \
    --cc=glommer@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=mtosatti@redhat.com \
    --cc=peterz@infradead.org \
    --cc=riel@redhat.com \
    --cc=zamsden@redhat.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;
as well as URLs for NNTP newsgroup(s).