Messages in this thread Patch in this message | | | Date | Wed, 1 Feb 2012 15:43:33 +0100 | From | Andrea Righi <> | Subject | Re: [PATCH] Add num_to_str() for speedup /proc/stat |
| |
On Mon, Jan 30, 2012 at 02:16:19PM +0900, KAMEZAWA Hiroyuki wrote: ... > diff --git a/fs/proc/stat.c b/fs/proc/stat.c > index 121f77c..0ff3b92 100644 > --- a/fs/proc/stat.c > +++ b/fs/proc/stat.c > @@ -89,18 +89,19 @@ static int show_stat(struct seq_file *p, void *v) > } > sum += arch_irq_stat(); > > - 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)); > + seq_puts(p, "cpu "); > + seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(user)); > + seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(nice)); > + seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(system)); > + seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(idle)); > + seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(iowait)); > + seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(irq)); > + seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(softirq)); > + seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(steal)); > + seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(guest)); > + seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(guest_nice)); > + seq_putc(p, '\n'); > + > for_each_online_cpu(i) { > /* Copy values here to work around gcc-2.95.3, gcc-2.96 */ > user = kcpustat_cpu(i).cpustat[CPUTIME_USER]; > @@ -113,26 +114,24 @@ static int show_stat(struct seq_file *p, void *v) > steal = kcpustat_cpu(i).cpustat[CPUTIME_STEAL]; > guest = kcpustat_cpu(i).cpustat[CPUTIME_GUEST]; > guest_nice = kcpustat_cpu(i).cpustat[CPUTIME_GUEST_NICE]; > - seq_printf(p, > - "cpu%d %llu %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), > - (unsigned long long)cputime64_to_clock_t(guest_nice)); > + seq_printf(p, "cpu %d", i); ^^^^^^ mmh... if I'm not wrong this looks like an ABI change.
Thanks, -Andrea
--- From: Andrea Righi <andrea@betterlinux.com> Subject: procfs: avoid breaking the ABI in /proc/stat
The speed up of /proc/stat changed the output of the cpu statistics adding an extra space between the string "cpu" and the cpu id.
Restore the old ABI by removing this space.
Signed-off-by: Andrea Righi <andrea@betterlinux.com> --- fs/proc/stat.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/fs/proc/stat.c b/fs/proc/stat.c index 0ff3b92..7ed7efa 100644 --- a/fs/proc/stat.c +++ b/fs/proc/stat.c @@ -114,7 +114,7 @@ static int show_stat(struct seq_file *p, void *v) steal = kcpustat_cpu(i).cpustat[CPUTIME_STEAL]; guest = kcpustat_cpu(i).cpustat[CPUTIME_GUEST]; guest_nice = kcpustat_cpu(i).cpustat[CPUTIME_GUEST_NICE]; - seq_printf(p, "cpu %d", i); + seq_printf(p, "cpu%d", i); seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(user)); seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(nice)); seq_put_decimal_ull(p, ' ', cputime64_to_clock_t(system));
| |