Introduce a new field "guest" in cpustat
PATCH RESEND 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.
Signed-off-by Laurent Vivier <[email protected]>
Signature · 2 lines
------------- [email protected] -------------- "Software is hard" - Donald Knuth
fs/proc/proc_misc.c +11 -4
@@ -443,6 +443,7 @@ static int show_stat(struct seq_file *p,int i;unsigned long jif;cputime64_t user, nice, system, idle, iowait, irq, softirq, steal; +cputime64_t guest;u64 sum =0 ;struct timespec boottime;unsigned int *per_irq_sum;
@@ -453,6 +454,7 @@ static int show_stat(struct seq_file *p, user = nice = system = idle = iowait = irq = softirq = steal = cputime64_zero; + guest = cputime64_zero;getboottime (&boottime); jif = boottime.tv_sec;
@@ -467,6 +469,7 @@ 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); + guest =cputime64_add (guest,kstat_cpu (i).cpustat.guest);for (j =0 ; j <NR_IRQS ; j++) {unsigned int temp =kstat_cpu (i).irqs[j]; sum += temp;
@@ -474,7 +477,7 @@ static int show_stat(struct seq_file *p, } } - seq_printf(p, "cpu %llu %llu %llu %llu %llu %llu %llu %llu\n", + 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),
@@ -482,7 +485,8 @@ static int show_stat(struct seq_file *p, (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 (steal), + (unsigned long long)cputime64_to_clock_t(guest));for_each_online_cpu (i) {/* Copy values here to work around gcc-2.95.3, gcc-2.96 */
@@ -494,7 +498,9 @@ 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; - seq_printf(p, "cpu%d %llu %llu %llu %llu %llu %llu %llu %llu\n", + 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),
@@ -503,7 +509,8 @@ static int show_stat(struct seq_file *p, (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 (steal), + (unsigned long long)cputime64_to_clock_t(guest)); }seq_printf (p,"intr %llu" , (unsigned long long )sum);
include/linux/kernel_stat.h +1 -0
@@ -23,6 +23,7 @@ struct cpu_usage_stat {cputime64_t idle;cputime64_t iowait;cputime64_t steal; +cputime64_t guest; };struct kernel_stat {