All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@zip.com.au>
To: Rik van Riel <riel@conectiva.com.br>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [RFC][PATCH] iowait statistics
Date: Mon, 13 May 2002 19:18:34 -0700	[thread overview]
Message-ID: <3CE073FA.57DAC578@zip.com.au> (raw)
In-Reply-To: <Pine.LNX.4.44L.0205132214480.32261-100000@imladris.surriel.com>

Rik van Riel wrote:
> 
> Hi,
> 
> the following patch implements iowait statistics in a simple way:
> 
> 1) if we go to sleep while waiting on a page or buffer, we
>    increment nr_iowait_tasks, note that this is done only in
>    the slow path so overhead shouldn't even be measurable
> 
> 2) if no process is running, the timer interrupt adds a jiffy
>    to the iowait time
> 
> 3) iowait time is counted separately from user/system/idle and
>    can overlap with either system or idle (when no process is
>    running the system can still be busy processing interrupts)
> 
> 4) on SMP systems the iowait time can be overestimated, no big
>    deal IMHO but cheap suggestions for improvement are welcome

I suspect that a number of these statistical accounting mechanisms
are going to break.  The new irq-affinity code works awfully well.

The kernel profiler in 2.5 doesn't work very well at present.
When investigating this, I ran a busy-wait process.  It attached
itself to CPU #3 and that CPU received precisely zero interrupts
across a five minute period.  So the profiler cunningly avoids profiling
busy CPUs, which is rather counter-productive.  Fortunate that oprofile
uses NMI.

> ...
> ===== fs/buffer.c 1.64 vs edited =====
> --- 1.64/fs/buffer.c    Mon May 13 19:04:59 2002
> +++ edited/fs/buffer.c  Mon May 13 19:16:57 2002
> @@ -156,8 +156,10 @@
>         get_bh(bh);
>         add_wait_queue(&bh->b_wait, &wait);
>         do {
> +               atomic_inc(&nr_iowait_tasks);
>                 run_task_queue(&tq_disk);
>                 set_task_state(tsk, TASK_UNINTERRUPTIBLE);
> +               atomic_dec(&nr_iowait_tasks);
>                 if (!buffer_locked(bh))
>                         break;
>                 schedule();

Shouldn't the atomic_inc cover the schedule()?


-

WARNING: multiple messages have this Message-ID (diff)
From: Andrew Morton <akpm@zip.com.au>
To: Rik van Riel <riel@conectiva.com.br>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [RFC][PATCH] iowait statistics
Date: Mon, 13 May 2002 19:18:34 -0700	[thread overview]
Message-ID: <3CE073FA.57DAC578@zip.com.au> (raw)
In-Reply-To: Pine.LNX.4.44L.0205132214480.32261-100000@imladris.surriel.com

Rik van Riel wrote:
> 
> Hi,
> 
> the following patch implements iowait statistics in a simple way:
> 
> 1) if we go to sleep while waiting on a page or buffer, we
>    increment nr_iowait_tasks, note that this is done only in
>    the slow path so overhead shouldn't even be measurable
> 
> 2) if no process is running, the timer interrupt adds a jiffy
>    to the iowait time
> 
> 3) iowait time is counted separately from user/system/idle and
>    can overlap with either system or idle (when no process is
>    running the system can still be busy processing interrupts)
> 
> 4) on SMP systems the iowait time can be overestimated, no big
>    deal IMHO but cheap suggestions for improvement are welcome

I suspect that a number of these statistical accounting mechanisms
are going to break.  The new irq-affinity code works awfully well.

The kernel profiler in 2.5 doesn't work very well at present.
When investigating this, I ran a busy-wait process.  It attached
itself to CPU #3 and that CPU received precisely zero interrupts
across a five minute period.  So the profiler cunningly avoids profiling
busy CPUs, which is rather counter-productive.  Fortunate that oprofile
uses NMI.

> ...
> ===== fs/buffer.c 1.64 vs edited =====
> --- 1.64/fs/buffer.c    Mon May 13 19:04:59 2002
> +++ edited/fs/buffer.c  Mon May 13 19:16:57 2002
> @@ -156,8 +156,10 @@
>         get_bh(bh);
>         add_wait_queue(&bh->b_wait, &wait);
>         do {
> +               atomic_inc(&nr_iowait_tasks);
>                 run_task_queue(&tq_disk);
>                 set_task_state(tsk, TASK_UNINTERRUPTIBLE);
> +               atomic_dec(&nr_iowait_tasks);
>                 if (!buffer_locked(bh))
>                         break;
>                 schedule();

Shouldn't the atomic_inc cover the schedule()?


-
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/

  reply	other threads:[~2002-05-14  2:14 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-05-14  1:19 [RFC][PATCH] iowait statistics Rik van Riel
2002-05-14  1:19 ` Rik van Riel
2002-05-14  2:18 ` Andrew Morton [this message]
2002-05-14  2:18   ` Andrew Morton
2002-05-14 12:30   ` Rik van Riel
2002-05-14 12:30     ` Rik van Riel
2002-05-15 17:02   ` Denis Vlasenko
2002-05-15 17:02     ` Denis Vlasenko
2002-05-16  7:41     ` Andrew Morton
2002-05-16  7:41       ` Andrew Morton
2002-05-16 14:04       ` Denis Vlasenko
2002-05-14 15:39 ` William Lee Irwin III
2002-05-14 15:39   ` William Lee Irwin III
2002-05-14 16:36   ` Rik van Riel
2002-05-14 16:36     ` Rik van Riel
2002-05-14 16:54     ` William Lee Irwin III
2002-05-14 16:54       ` William Lee Irwin III
2002-05-15 17:17       ` Denis Vlasenko
2002-05-15 17:17         ` Denis Vlasenko
2002-05-15 14:03         ` Rik van Riel
2002-05-15 14:03           ` Rik van Riel
2002-05-15 20:17           ` Denis Vlasenko
2002-05-15 20:17             ` Denis Vlasenko
2002-05-15 16:13             ` Rik van Riel
2002-05-15 16:13               ` Rik van Riel
2002-05-15 16:21               ` William Lee Irwin III
2002-05-15 16:21                 ` William Lee Irwin III
2002-05-15 17:00               ` William Lee Irwin III
2002-05-15 17:00                 ` William Lee Irwin III
2002-05-15 18:16                 ` Bill Davidsen
2002-05-15 18:16                   ` Bill Davidsen
2002-05-15 18:30                 ` William Lee Irwin III
2002-05-15 18:30                   ` William Lee Irwin III
2002-05-15 18:33                   ` Rik van Riel
2002-05-15 18:33                     ` Rik van Riel
2002-05-15 18:46                     ` William Lee Irwin III
2002-05-15 18:46                       ` William Lee Irwin III
2002-05-15 19:00                       ` Rik van Riel
2002-05-15 19:00                         ` Rik van Riel
2002-05-16 11:42                         ` Denis Vlasenko
2002-05-16 11:42                           ` Denis Vlasenko
2002-05-16  9:49               ` Leigh Brown
2002-05-16 14:51                 ` Rik van Riel
2002-05-16 16:44                   ` Leigh Brown
2002-05-17  8:02                     ` Jens Axboe
2002-05-16 11:14               ` Denis Vlasenko
2002-05-16 11:14                 ` Denis Vlasenko
2002-05-15 15:15         ` Bill Davidsen
2002-05-15 15:15           ` Bill Davidsen
2002-05-16 10:58           ` Denis Vlasenko
2002-05-16 10:58             ` Denis Vlasenko
2002-05-14 18:19     ` Martin J. Bligh
2002-05-14 18:19       ` Martin J. Bligh
2002-05-15  1:31 ` Bill Davidsen
2002-05-15  1:41   ` William Lee Irwin III
2002-05-15  1:41     ` William Lee Irwin III
2002-05-15 14:39     ` Bill Davidsen

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=3CE073FA.57DAC578@zip.com.au \
    --to=akpm@zip.com.au \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=riel@conectiva.com.br \
    /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.