All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Rafael C. de Almeida" <almeidaraf@gmail.com>
To: linux-kernel@vger.kernel.org
Subject: /proc/data information
Date: Sun, 13 Jul 2008 17:07:10 -0300	[thread overview]
Message-ID: <487A606E.5040202@gmail.com> (raw)

Hello,

I'm interested in knowing how the cpu data from /proc/stat is gathered.
Following my way from this function:

	http://lxr.linux.no/linux+v2.6.25.10/fs/proc/proc_misc.c#L459

I've figured that the time is probably gathered using those
account_*_time on sched.c. I'm not sure where the times are read from,
though.

Anyhow, I thought I'd do a little test. I expected that if I added
together all the values on the cpu line of /proc/stat, waited 1 second
and added together all the values again, then their difference would be
a constant value. That is, the value should be the same any time I would
repeat the experiment. My reasoning was that those values accounted for
some unit of time and that the amount of time units between seconds
should always be the same. I expected a small variation due to the
kernel not always being able to wake the process that was doing the
measurement in exactly one second.

What I noticed, though, was that sometimes there's a very big variation.
For this experiment I used the following bash code:

t=`head -n1 /proc/stat |
   awk '{ print $2 + $3 + $4 + $5 + $6 + $7 + $8 + $9 }'`
sleep 1
for (( i=0; i < 1800; i=i+1 )); do
        nt=`head -n1 /proc/stat |
            awk '{ print $2 + $3 + $4 + $5 + $6 + $7 + $8 + $9 }'`
        echo $(( $nt - $t )) >> /tmp/values
        t=$nt
        sleep 1
done

The file with all the values can be reached at:
	http://homepages.dcc.ufmg.br/~rafaelc/values

The mean of the numbers in the values file was: 109.85
The standard deviation was: 29.47
The maximum was: 589
The minimum was: 99

I found those values rather odd. They were gathered while I was using
the system like I usually do. There were 40 values above 200 and 7
above 300. I didn't expect those big values to show up. Why does it happen?

It looks like that when I run:

	% dd if=/dev/zero of=/tmp/foo

things get more variable. I'm not sure why that would happen. Running
CPU-bound process added for some variation, but not nearly as much as if
I used the dd command (remembert that my computer is rather old).

A little info about my system (Debian etch):
$ uname  -a
Linux gaz 2.6.18-6-686 #1 SMP Fri Jun 6 22:22:11 UTC 2008 i686 GNU/Linux
$ cat /proc/cpuinfo
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 8
model name	: Pentium III (Coppermine)
stepping	: 10
cpu MHz		: 898.087
cache size	: 256 KB
fdiv_bug	: no
hlt_bug		: no
f00f_bug	: no
coma_bug	: no
fpu		: yes
fpu_exception	: yes
cpuid level	: 2
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat
pse36 mmx fxsr sse up
bogomips	: 1797.57

$

[]'s
Rafael

             reply	other threads:[~2008-07-13 20:07 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-13 20:07 Rafael C. de Almeida [this message]
2008-07-14 16:38 ` /proc/data information Andi Kleen
2008-07-14 19:47   ` Rafael C. de Almeida

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=487A606E.5040202@gmail.com \
    --to=almeidaraf@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.