public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Peter Williams <pwil3058@bigpond.net.au>
To: Con Kolivas <kernel@kolivas.org>
Cc: Mike Galbraith <efault@gmx.de>,
	Helge Hafting <helgehaf@aitel.hist.no>,
	Trond Myklebust <trond.myklebust@fys.uio.no>,
	Ingo Molnar <mingo@elte.hu>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] sched: Fix adverse effects of NFS client    on interactive response
Date: Sun, 08 Jan 2006 10:31:19 +1100	[thread overview]
Message-ID: <43C04F47.7000002@bigpond.net.au> (raw)
In-Reply-To: <200601072030.59445.kernel@kolivas.org>

Con Kolivas wrote:
> On Saturday 07 January 2006 16:27, Mike Galbraith wrote:
> 
>>>  Personally, I think that all TASK_UNINTERRUPTIBLE sleeps should be
>>>treated as non interactive rather than just be heavily discounted (and
>>>that TASK_NONINTERACTIVE shouldn't be needed in conjunction with it) BUT
>>>I may be wrong especially w.r.t. media streamers such as audio and video
>>>players and the mechanisms they use to do sleeps between cpu bursts.
>>
>>Try it, you won't like it.  When I first examined sleep_avg woes, my
>>reaction was to nuke uninterruptible sleep too... boy did that ever _suck_
>>:)
> 
> 
> Glad you've seen why I put the uninterruptible sleep logic in there. In 
> essence this is why the NFS client interactive case is not as nice - the NFS 
> code doesn't do "work on behalf of" a cpu hog with the TASK_UNINTERRUPTIBLE 
> state. The uninterruptible sleep detection logic made a massive difference to 
> interactivity when cpu bound tasks do disk I/O.

TASK_NONINTERACTIVE doesn't mean that the task is a CPU hog.  It just 
means that this sleep should be ignored as far as determining whether 
this task is interactive or not.

Also, compensation for uninterruptible sleeps should be handled by the 
"fairness" mechanism (i.e. time slices and the active/expired arrays) 
not the "interactive response" mechanism.  In other words, doing a lot 
of uninterruptible sleeps is (theoretically) not a sign that the task is 
interactive or for that matter that it's non interactive so 
(theoretically) should just be ignored.  That bad things happen when it 
isn't needs explaining.

I see two possible reasons:

1. Audio/video streamers aren't really interactive but we want to treat 
them as such (to ensure they have low latency).  The fact that they 
aren't really interactive may mean that the sleeps they do between runs 
are uninterruptible and if we don't count uninterruptible sleep we'll 
miss them.

2. The X server isn't really a completely interactive program either. 
It handles a lot of interactive on behalf of interactive programs (which 
should involve interactive sleeps and help get it classified as 
interactive) but also does a lot of non interactive stuff (which can be 
CPU intensive and make it loose points due to CPU hoggishness) which 
probably involves uninterruptible sleep.  The combination of ignoring 
the uninterruptible sleep and the occasional high CPU usage rate could 
result in losing too much bonus with consequent poor interactive 
responsiveness.

So it would be interesting to know which programs suffered badly when 
uninterruptible sleep was ignored?  This may enable an alternate 
solution to be found.

In any case and in the meantime, perhaps the solution is to use 
TASK_NONINTERACTIVE where needed but treat 
TASK_INTERRUPTIBLE|TASK_NONINTERACTIVE sleep the same as 
TASK_UNINTERRUPTIBLE sleep instead of ignoring it?

Peter
-- 
Peter Williams                                   pwil3058@bigpond.net.au

"Learning, n. The kind of ignorance distinguishing the studious."
  -- Ambrose Bierce

  parent reply	other threads:[~2006-01-07 23:31 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-12-21  6:00 [PATCH] sched: Fix adverse effects of NFS client on interactive response Peter Williams
2005-12-21  6:09 ` Trond Myklebust
2005-12-21  6:32   ` Peter Williams
2005-12-21 13:21     ` Trond Myklebust
2005-12-21 13:36       ` Kyle Moffett
2005-12-21 13:40         ` Trond Myklebust
2005-12-22  2:26           ` Peter Williams
2005-12-22 22:08             ` Trond Myklebust
2005-12-22 22:33               ` Peter Williams
2005-12-22 22:59                 ` Trond Myklebust
2005-12-23  0:02                   ` Kyle Moffett
2005-12-23  0:25                     ` Trond Myklebust
2005-12-23  3:06                       ` Peter Williams
2005-12-23  9:39                         ` Trond Myklebust
2005-12-23 10:49                           ` Peter Williams
2005-12-23 12:51                             ` Trond Myklebust
2005-12-23 13:36                               ` Peter Williams
2006-01-02 12:09                                 ` Pekka Enberg
2005-12-23 19:07                           ` Lee Revell
2005-12-23 21:08                             ` Trond Myklebust
2005-12-23 21:17                               ` Lee Revell
2005-12-23 21:23                                 ` Trond Myklebust
2005-12-23 22:04                                   ` Lee Revell
2005-12-23 22:10                                     ` Trond Myklebust
2005-12-21 16:10         ` Horst von Brand
2005-12-21 20:36           ` Kyle Moffett
2005-12-21 22:59             ` Peter Williams
2005-12-21 16:11     ` Ingo Molnar
2005-12-21 22:49       ` Peter Williams
2006-01-02 11:01     ` Helge Hafting
2006-01-02 23:54       ` Peter Williams
2006-01-04  1:25         ` Peter Williams
2006-01-04  9:40           ` Marcelo Tosatti
2006-01-04 12:18             ` Con Kolivas
2006-01-04 10:31               ` Marcelo Tosatti
2006-01-04 21:51           ` Peter Williams
2006-01-05  6:31             ` Mike Galbraith
2006-01-05 11:31               ` Peter Williams
2006-01-05 14:31                 ` Mike Galbraith
2006-01-05 23:13                   ` Peter Williams
2006-01-05 23:33                     ` Con Kolivas
2006-01-06  0:02                       ` Peter Williams
2006-01-06  0:08                         ` Con Kolivas
2006-01-06  0:40                           ` Peter Williams
2006-01-06  7:39                     ` Mike Galbraith
2006-01-07  1:11                       ` Peter Williams
2006-01-07  5:27                         ` Mike Galbraith
2006-01-07  6:34                           ` Peter Williams
2006-01-07  8:54                             ` Mike Galbraith
2006-01-07 23:40                               ` Peter Williams
2006-01-08  5:51                                 ` Mike Galbraith
2006-01-07  9:30                           ` Con Kolivas
2006-01-07 10:23                             ` Mike Galbraith
2006-01-07 23:31                             ` Peter Williams [this message]
2006-01-08  0:38                               ` Con Kolivas

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=43C04F47.7000002@bigpond.net.au \
    --to=pwil3058@bigpond.net.au \
    --cc=efault@gmx.de \
    --cc=helgehaf@aitel.hist.no \
    --cc=kernel@kolivas.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=trond.myklebust@fys.uio.no \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox