Introduce a new field "guest" in cpustat
Subsystems (2)
PATCH 1/4 Introduce a new field "guest" in cpustat
[PATCH 1/4] as recent CPUs introduce a third running state, after "user" and "system", we need a new field, "guest", in cpustat to store the time used by the CPU to run virtual CPU. Modify /proc/stat to display this new field.
Signature · 2 lines
------------- Laurent.Vivier-6ktuUTfB/[email protected] -------------- "Software is hard" - Donald Knuth
fs/proc/proc_misc.c +38 -0
@@ -443,6 +443,9 @@ static int show_stat(struct seq_file *p,int i;unsigned long jif;cputime64_t user, nice, system, idle, iowait, irq, softirq, steal; +#ifdef CONFIG_GUEST_ACCOUNTING +cputime64_t guest; +#endif u64 sum =0 ;struct timespec boottime;unsigned int *per_irq_sum;
@@ -453,6 +456,9 @@ static int show_stat(struct seq_file *p, user = nice = system = idle = iowait = irq = softirq = steal = cputime64_zero; +#ifdef CONFIG_GUEST_ACCOUNTING + guest = cputime64_zero; +#endif getboottime (&boottime); jif = boottime.tv_sec;
@@ -467,6 +473,9 @@ static int show_stat(struct seq_file *p, irq =cputime64_add (irq,kstat_cpu (i).cpustat.irq); softirq =cputime64_add (softirq,kstat_cpu (i).cpustat.softirq); steal =cputime64_add (steal,kstat_cpu (i).cpustat.steal); +#ifdef CONFIG_GUEST_ACCOUNTING + guest =cputime64_add (guest,kstat_cpu (i).cpustat.guest); +#endif for (j =0 ; j <NR_IRQS ; j++) {unsigned int temp =kstat_cpu (i).irqs[j]; sum += temp;
@@ -474,6 +483,18 @@ static int show_stat(struct seq_file *p, } } +#ifdef CONFIG_GUEST_ACCOUNTING +seq_printf (p,"cpu %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)); +#else seq_printf(p, "cpu %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),
@@ -483,6 +504,7 @@ static int show_stat(struct seq_file *p, (unsigned long long )cputime64_to_clock_t (irq), (unsigned long long )cputime64_to_clock_t (softirq), (unsigned long long)cputime64_to_clock_t(steal)); +#endif for_each_online_cpu (i) {/* Copy values here to work around gcc-2.95.3, gcc-2.96 */
@@ -494,6 +516,21 @@ static int show_stat(struct seq_file *p, irq =kstat_cpu (i).cpustat.irq; softirq =kstat_cpu (i).cpustat.softirq; steal =kstat_cpu (i).cpustat.steal; +#ifdef CONFIG_GUEST_ACCOUNTING + guest =kstat_cpu (i).cpustat.guest; +seq_printf (p, +"cpu%d %llu %llu %llu %llu %llu %llu %llu %llu %llu\n" , + i, + (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)); +#else seq_printf(p, "cpu%d %llu %llu %llu %llu %llu %llu %llu %llu\n", i, (unsigned long long)cputime64_to_clock_t(user),
@@ -504,6 +541,7 @@ static int show_stat(struct seq_file *p, (unsigned long long )cputime64_to_clock_t (irq), (unsigned long long )cputime64_to_clock_t (softirq), (unsigned long long)cputime64_to_clock_t(steal)); +#endif }seq_printf (p,"intr %llu" , (unsigned long long )sum);
include/linux/kernel_stat.h +3 -0
@@ -23,6 +23,9 @@ struct cpu_usage_stat {cputime64_t idle;cputime64_t iowait;cputime64_t steal; +#ifdef CONFIG_GUEST_ACCOUNTING +cputime64_t guest; +#endif };struct kernel_stat {
init/Kconfig +4 -0
@@ -167,6 +167,10 @@ config BSD_PROCESS_ACCT_V3 for processing it. A preliminary version of these tools is available at <http://www.physik3.uni-rostock.de/tim/kernel/utils/acct/>. +config GUEST_ACCOUNTING + bool + default n + config TASKSTATS bool "Export task/process statistics through netlink (EXPERIMENTAL)" depends on NET
-------------------------------------------------------------------------
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/
_______________________________________________
kvm-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel