From: Laurent Vivier <Laurent.Vivier-6ktuUTfB/bM@public.gmane.org>
To: Avi Kivity <avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
Cc: kvm-devel
<kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org>,
linux-kernel
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
virtualization
<virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org>
Subject: Re: [PATCH/RFC 3/4]Introduce "account modifiers" mechanism
Date: Fri, 17 Aug 2007 15:08:22 +0200 [thread overview]
Message-ID: <46C59DC6.4020308@bull.net> (raw)
In-Reply-To: <46C59AB1.6070505-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
[-- Attachment #1.1: Type: text/plain, Size: 2354 bytes --]
Avi Kivity wrote:
> Laurent Vivier wrote:
>>>
>>>> - remove PATCH 3, and add in task_struct a "ktime vtime" where we accumulate
>>>> guest time (by calling something like guest_enter() and guest_exit() from the
>>>> virtualization engine), and when in account_system_time() we have cputime >
>>>> vtime we substrate vtime from cputime and add vtime to user time and guest time.
>>>> But doing like this we freeze in kernel/sched.c the link between system time,
>>>> user time and guest time (i.e. system time = system time - vtime, user time =
>>>> user time + vtime and guest time = guest time + vtime).
>>>>
>>> Actually, I think we can set a per-cpu "in_guest" flag for the scheduler
>>> code, which then knows to add the tick to the guest time. That seems
>>> the simplest possible solution.
>>>
>>> lguest or kvm would set the flag before running the guest (which is done
>>> with preempt disabled or using preemption hooks), and reset it
>>> afterwards.
>>>
>>> Thoughts?
>>>
>> It was my first attempt (except I didn't have a per-cpu flag, but a per-task
>> flag), it's not visible but I love simplicity... ;-)
>>
>> A KVM VCPU is stopped by preemption, so when we enter in scheduler we have
>> exited from VCPU and thus this flags is off (so we account 0 to the guest). What
>> I did then is "set the flag on when we enter in the VCPU, and
>> "account_system_time()" sets the flag off when it adds this timeslice to cpustat
>> (and compute correctly guest, user, system time). But I didn't like this idea
>> because all code executed after we entered in the VCPU is accounted to the guest
>> until we have an account_system_time() and I suppose we can have real system
>> time in this part. And I guess a VCPU can be less than 1 ms (unit of cputime) in
>> a timeslice.
>>
>> So ? What's best ?
>>
>
> The normal user/system accounting has the same issue, no? Whereever we
> happen to land (kernel or user) gets the whole tick.
Yes... but perhaps I should rewrite this too ;-)
> So I think it is okay to have the same limitation for guest time.
OK, so we can go back to my first patch.
Who can decide to introduce this into the kernel ?
Laurent
--
------------- Laurent.Vivier-6ktuUTfB/bM@public.gmane.org --------------
"Software is hard" - Donald Knuth
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
[-- Attachment #2: Type: text/plain, Size: 315 bytes --]
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
[-- Attachment #3: Type: text/plain, Size: 186 bytes --]
_______________________________________________
kvm-devel mailing list
kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/kvm-devel
next prev parent reply other threads:[~2007-08-17 13:08 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <46C4719A.2060308@bull.net>
2007-08-16 15:57 ` [PATCH/RFC 1/4]Introduce a new field "guest" in cpustat Laurent Vivier
[not found] ` <46C4720F.7030304@bull.net>
2007-08-16 15:57 ` [PATCH/RFC 2/4]Introduce a new field "guest" in task_struct Laurent Vivier
[not found] ` <46C4725A.4070607@bull.net>
2007-08-16 15:58 ` [PATCH/RFC 3/4]Introduce "account modifiers" mechanism Laurent Vivier
2007-08-16 22:39 ` Rusty Russell
[not found] ` <1187303955.6449.7.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-08-17 7:35 ` Laurent Vivier
[not found] ` <46C54FB8.7050504-6ktuUTfB/bM@public.gmane.org>
2007-08-17 8:30 ` Rusty Russell
[not found] ` <1187339450.6449.115.camel-bi+AKbBUZKY6gyzm1THtWbp2dZbC/Bob@public.gmane.org>
2007-08-17 9:16 ` Laurent Vivier
[not found] ` <46C56774.2030009-6ktuUTfB/bM@public.gmane.org>
2007-08-17 11:51 ` [PATCH/RFC 3/4, second shot]Introduce "account_guest_time" Laurent Vivier
2007-08-17 11:54 ` [PATCH/RFC 4/4, second shot]KVM uses "account_guest_time()" Laurent Vivier
[not found] ` <46C58C8C.3080803-6ktuUTfB/bM@public.gmane.org>
2007-08-17 13:03 ` Avi Kivity
[not found] ` <46C59C92.40902-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-17 13:16 ` Laurent Vivier
[not found] ` <46C59FA6.7020601-6ktuUTfB/bM@public.gmane.org>
2007-08-19 7:39 ` Avi Kivity
2007-08-17 12:59 ` [kvm-devel] [PATCH/RFC 3/4, second shot]Introduce "account_guest_time" Avi Kivity
2007-08-17 12:55 ` [PATCH/RFC 3/4]Introduce "account modifiers" mechanism Avi Kivity
[not found] ` <46C59AB1.6070505-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-17 13:08 ` Laurent Vivier [this message]
[not found] ` <46C59DC6.4020308-6ktuUTfB/bM@public.gmane.org>
2007-08-17 13:32 ` Christian Borntraeger
2007-08-19 7:41 ` Avi Kivity
2007-08-17 14:12 ` Laurent Vivier
[not found] ` <46C5ACE8.2050004-6ktuUTfB/bM@public.gmane.org>
2007-08-19 7:38 ` Avi Kivity
[not found] ` <46C7F362.80106-atKUWr5tajBWk0Htik3J/w@public.gmane.org>
2007-08-20 7:30 ` Laurent Vivier
[not found] ` <46C94306.8080300-6ktuUTfB/bM@public.gmane.org>
2007-08-20 7:55 ` Avi Kivity
[not found] ` <46C472D2.7000702@bull.net>
2007-08-16 15:59 ` [PATCH/RFC 4/4]Modify KVM to use the "account modifiers" Laurent Vivier
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=46C59DC6.4020308@bull.net \
--to=laurent.vivier-6ktuutfb/bm@public.gmane.org \
--cc=avi-atKUWr5tajBWk0Htik3J/w@public.gmane.org \
--cc=kvm-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox