public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Bill Huey <billh@gnuppy.monkey.org>
Cc: linux-kernel@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Con Kolivas <kernel@kolivas.org>, Nick Piggin <npiggin@suse.de>,
	Mike Galbraith <efault@gmx.de>,
	Arjan van de Ven <arjan@infradead.org>,
	Peter Williams <pwil3058@bigpond.net.au>,
	Thomas Gleixner <tglx@linutronix.de>,
	caglar@pardus.org.tr, Willy Tarreau <w@1wt.eu>,
	Gene Heskett <gene.heskett@gmail.com>, Mark Lord <lkml@rtr.ca>,
	William Lee Irwin III <wli@holomorphy.com>
Subject: Re: [patch] CFS scheduler, -v12
Date: Fri, 18 May 2007 09:31:47 +0200	[thread overview]
Message-ID: <20070518073147.GC28702@elte.hu> (raw)
In-Reply-To: <20070518001841.GA21140@gnuppy.monkey.org>


* Bill Huey <billh@gnuppy.monkey.org> wrote:

> On Sun, May 13, 2007 at 05:38:53PM +0200, Ingo Molnar wrote:
> > Even a simple 3D app like glxgears does a sys_sched_yield() for 
> > every frame it generates (!) on certain 3D cards, which in essence 
> > punishes any scheduler that implements sys_sched_yield() in a sane 
> > manner. This interaction of CFS's yield implementation with this 
> > user-space bug could be the main reason why some testers reported SD 
> > to be handling 3D games better than CFS. (SD uses a yield 
> > implementation similar to the vanilla scheduler.)
> > 
> > So i've added a yield workaround to -v12, which makes it work 
> > similar to how the vanilla scheduler and SD does it. (Xorg has been 
> > notified and this bug should be fixed there too. This took some time 
> > to debug because the 3D driver i'm using for testing does not use 
> > sys_sched_yield().) The workaround is activated by default so -v12 
> > should work 'out of the box'.
> 
> This is an incorrect analysis. [...]

i'm puzzled, incorrect in specifically what way?

> [...] OpenGL has the ability to "yield" after every frame specifically 
> for SGI IRIX (React/Pro) frame scheduler (driven by the system 
> vertical retrace interrupt) so that it can free up CPU resources for 
> other tasks to run. [...]

what you say makes no sense to me. The majority of Linux 3D apps are 
already driven by the vertical retrace interrupt and properly 'yield the 
CPU' if they wish so, but this has nothing to do with sys_sched_yield().

> The correct solution is for the app to use a directed yield and a 
> policy that can directly support it so that OpenGL can guaratee a 
> frame rate governed by CPU bandwidth allocated by the scheduler.
> 
> Will is working on such a mechanism now.

i'm even more puzzled. I've added sched_yield_to() to CFS -v6 and it's 
been part of CFS since then. I'm curious, on what mechanism is Will 
working and have any patches been sent to lkml for discussion?

	Ingo

      parent reply	other threads:[~2007-05-18  7:33 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-05-13 15:38 [patch] CFS scheduler, -v12 Ingo Molnar
2007-05-16  2:04 ` Peter Williams
2007-05-16  8:08   ` Ingo Molnar
2007-05-16 23:42     ` Peter Williams
     [not found]   ` <20070516063625.GA9058@elte.hu>
2007-05-17 23:45     ` Peter Williams
     [not found]       ` <20070518071325.GB28702@elte.hu>
2007-05-18 13:11         ` Peter Williams
2007-05-18 13:26           ` Peter Williams
2007-05-19 13:27           ` Dmitry Adamushko
2007-05-20  1:41             ` Peter Williams
2007-05-21  8:29             ` William Lee Irwin III
2007-05-21  8:57               ` Ingo Molnar
2007-05-21 12:08                 ` William Lee Irwin III
2007-05-22 16:48                 ` Chris Friesen
2007-05-22 20:15                   ` Ingo Molnar
2007-05-22 20:49                     ` Chris Friesen
2007-05-21 15:25           ` Dmitry Adamushko
2007-05-21 23:51             ` Peter Williams
2007-05-22  4:47               ` Peter Williams
2007-05-22 12:03                 ` Peter Williams
2007-05-24  7:43                   ` Peter Williams
2007-05-24 16:45                     ` Siddha, Suresh B
2007-05-24 23:23                       ` Peter Williams
2007-05-29 20:45                         ` Siddha, Suresh B
2007-05-29 23:54                           ` Peter Williams
2007-05-30  0:50                             ` Siddha, Suresh B
2007-05-30  2:18                               ` Peter Williams
2007-05-30  4:42                                 ` Siddha, Suresh B
2007-05-30  6:28                                   ` Peter Williams
2007-05-31  1:49                                   ` Peter Williams
2007-05-22 11:52               ` Dmitry Adamushko
2007-05-23  0:10                 ` Peter Williams
2007-05-18  0:18 ` Bill Huey
2007-05-18  1:01   ` Bill Huey
2007-05-18  4:13   ` William Lee Irwin III
2007-05-18  7:31   ` Ingo Molnar [this message]

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=20070518073147.GC28702@elte.hu \
    --to=mingo@elte.hu \
    --cc=akpm@linux-foundation.org \
    --cc=arjan@infradead.org \
    --cc=billh@gnuppy.monkey.org \
    --cc=caglar@pardus.org.tr \
    --cc=efault@gmx.de \
    --cc=gene.heskett@gmail.com \
    --cc=kernel@kolivas.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkml@rtr.ca \
    --cc=npiggin@suse.de \
    --cc=pwil3058@bigpond.net.au \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=w@1wt.eu \
    --cc=wli@holomorphy.com \
    /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