lkml.org 
[lkml]   [2011]   [Feb]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v3 3/6] KVM-GST: KVM Steal time accounting
    From
    Date
    On Tue, 2011-02-15 at 16:35 +0200, Avi Kivity wrote:
    > On 02/11/2011 08:19 PM, Glauber Costa wrote:
    > > This patch accounts steal time time in kernel/sched.
    > > I kept it from last proposal, because I still see advantages
    > > in it: Doing it here will give us easier access from scheduler
    > > variables such as the cpu rq. The next patch shows an example of
    > > usage for it.
    > >
    > > Since functions like account_idle_time() can be called from
    > > multiple places, not only account_process_tick(), steal time
    > > grabbing is repeated in each account function separatedely.
    > >
    >
    > I still don't see how we export this to userspace for top(1) and friends.
    >

    The existing steal time stuff is:

    kernel/sched.c:account_steal_time()

    cpustat->steal = cputime64_add(cpustat->steal, cputime64);

    and

    fs/proc/stat.c:show_stat()


    steal = cputime64_add(steal, kstat_cpu(i).cpustat.steal);

    seq_printf(p, "cpu %llu %llu %llu %llu %llu %llu %llu %llu %llu "
    "%llu\n",
    (unsigned long long)cputime64_to_clock_t(user),
    (unsigned long long)cputime64_to_clock_t(nice),
    (unsigned long long)cputime64_to_clock_t(system),
    (unsigned long long)cputime64_to_clock_t(idle),
    (unsigned long long)cputime64_to_clock_t(iowait),
    (unsigned long long)cputime64_to_clock_t(irq),
    (unsigned long long)cputime64_to_clock_t(softirq),
    (unsigned long long)cputime64_to_clock_t(steal),
    (unsigned long long)cputime64_to_clock_t(guest),
    (unsigned long long)cputime64_to_clock_t(guest_nice));


    etc..

    Glauber's patch is making sure we call account_steal_time(), which is
    currently only called from arch code like:

    # git grep account_steal_
    arch/ia64/xen/time.c: account_steal_ticks(stolen);
    arch/powerpc/kernel/time.c: account_steal_time(stolen);
    arch/s390/kernel/vtime.c: account_steal_time(steal);
    arch/x86/xen/time.c: account_steal_ticks(ticks);
    include/linux/kernel_stat.h:extern void account_steal_time(cputime_t);
    include/linux/kernel_stat.h:extern void account_steal_ticks(unsigned long ticks);
    kernel/sched.c:void account_steal_time(cputime_t cputime)
    kernel/sched.c:void account_steal_ticks(unsigned long ticks)
    kernel/sched.c: account_steal_time(jiffies_to_cputime(ticks));





    \
     
     \ /
      Last update: 2011-02-15 15:49    [W:0.024 / U:61.232 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site