lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Tue, 15 Feb 2011 15:45:55 +0100
From:	Peter Zijlstra <peterz@...radead.org>
To:	Avi Kivity <avi@...hat.com>
Cc:	Glauber Costa <glommer@...hat.com>, kvm@...r.kernel.org,
	linux-kernel@...r.kernel.org, Rik van Riel <riel@...hat.com>,
	Jeremy Fitzhardinge <jeremy.fitzhardinge@...rix.com>
Subject: Re: [PATCH v3 3/6] KVM-GST: KVM Steal time accounting

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));



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ