public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Willy Tarreau <w@1wt.eu>
To: Ingo Molnar <mingo@elte.hu>
Cc: linux-kernel@vger.kernel.org,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	Mike Galbraith <efault@gmx.de>,
	Arjan van de Ven <arjan@infradead.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Dmitry Adamushko <dmitry.adamushko@gmail.com>,
	Srivatsa Vaddagiri <vatsa@linux.vnet.ibm.com>
Subject: Re: [patch] CFS scheduler, -v19
Date: Sun, 8 Jul 2007 19:46:13 +0200	[thread overview]
Message-ID: <20070708174612.GA4035@1wt.eu> (raw)
In-Reply-To: <20070706173319.GA2356@elte.hu>

Hi Ingo !

On Fri, Jul 06, 2007 at 07:33:19PM +0200, Ingo Molnar wrote:
> 
> i'm pleased to announce release -v19 of the CFS scheduler patchset.
> 
> The rolled-up CFS patch against today's -git kernel, v2.6.22-rc7, 
> v2.6.22-rc6-mm1, v2.6.21.5 or v2.6.20.14 can be downloaded from the 
> usual place:
> 
>     http://people.redhat.com/mingo/cfs-scheduler/
>  
> The biggest user-visible change in -v19 is reworked sleeper fairness: 
> it's similar in behavior to -v18 but works more consistently across nice 
> levels. Fork-happy workloads (like kernel builds) should behave better 
> as well. There are also a handful of speedups: unsigned math, 32-bit 
> speedups, O(1) task pickup, debloating and other micro-optimizations.

Interestingly, I also noticed the possibility of O(1) task pickup when
playing with v18, but did not detect any noticeable improvement with it.
Of course, it depends on the workload and I probably didn't perform the
most relevant tests.

V19 works very well here on 2.6.20.14. I could start 32k busy loops at
nice +19 (I exhausted the 32k pids limit), and could still perform normal
operations. I noticed that 'vmstat' scans all the pid entries under /proc,
which takes ages to collect data before displaying a line. Obviously, the
system sometimes shows some short latencies, but not much more than what
you get from and SSH through a remote DSL connection.

Here's a vmstat 1 output :

 r  b  w   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id
32437  0  0      0 809724    488   6196    0    0     1     0  135     0 24 72 4
32436  0  0      0 811336    488   6196    0    0     0     0  717     0 78 22 0
32436  0  0      0 812956    488   6196    0    0     0     0  727     0 79 21 0
32436  0  0      0 810164    400   6196    0    0     0     0  707     0 80 20 0
32436  0  0      0 815116    400   6436    0    0     0     0  769     0 77 23 0
32436  0  0      0 811644    400   6436    0    0     0     0  715     0 80 20 0

Amusingly, I started mpg123 during this test and it skipped quite a bit.
After setting all tasks to SCHED_IDLE, it did not skip anymore. All this
seems to behave like one could expect.

I also started 30k processes distributed in 130 groups of 234 chained by pipes
in which one byte is passed. I get an average of 8000 in the run queue. The
context switch rate is very low and sometimes even null in this test, maybe
some of them are starving, I really do not know :

 r  b  w   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id
7752  0  1      0 656892    244   4196    0    0     0     0  725     0 16 84  0
7781  0  1      0 656768    244   4196    0    0     0     0  724     0 16 84  0
8000  0  1      0 656916    244   4196    0    0     0     0 2631     0  9 91  0
8025  0  1      0 656916    244   4196    0    0     0     0 2023     0 11 89  0
8083  0  1      0 659124    244   4196    0    0     0     0 3379     0 10 90  0
8054  0  1      0 658752    244   4196    0    0     0     0  726     0 17 83  0

With fewer of them, I can achieve very high context switch rates, well above
what I got with v18 (around 515k) :

 r  b  w   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id
48  0  0      0 1977580   5196  49900    0    0     0    28  261 579893 23 77  0
44  0  0      0 1977580   5196  49900    0    0     0     0  253 578454 17 83  0
48  0  0      0 1977580   5196  49900    0    0     0     0  254 574118 22 78  0
41  0  0      0 1977580   5196  49900    0    0     0     0  253 579261 23 77  0

(this is still on my dual athlon 1.5 GHz).

In my tree, I have replaced the rbtree with the ebtree we talked about,
but it did not bring any performance boost because, eventhough insert()
and delete() are faster, the scheduler is already quite good at avoiding
them as much as possible, mostly relying on rb_next() which has the same
cost in both trees. All in all, the only variations I noticed were caused
by cacheline alignment when I tried to reorder fields in the eb_node. So
I will stop my experimentations here since I don't see any more room for
improvement.

>  - debug: split out the debugging data into CONFIG_SCHED_DEBUG.

Hmmm that must be why I do not have /proc/sched_debug anymore ;-)

> As usual, any sort of feedback, bugreport, fix and suggestion is more 
> than welcome!

Done !

Cheers,
Willy


  reply	other threads:[~2007-07-08 17:47 UTC|newest]

Thread overview: 66+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-06 17:33 [patch] CFS scheduler, -v19 Ingo Molnar
2007-07-08 17:46 ` Willy Tarreau [this message]
2007-07-09 22:39   ` Ingo Molnar
2007-07-17 21:44     ` Willy Tarreau
2007-07-10  8:08 ` Mike Galbraith
2007-07-11 17:26   ` Bill Davidsen
2007-07-11 20:55     ` Ingo Molnar
2007-07-12 12:41       ` Bill Davidsen
2007-07-13 21:19       ` Bill Davidsen
2007-07-16 21:34         ` Chuck Ebbert
2007-07-16 21:55           ` Ingo Molnar
2007-07-17  4:22             ` Bill Davidsen
2007-07-17  5:01             ` Ian Kent
2007-07-17  7:45               ` Ingo Molnar
2007-07-17 11:17                 ` Ian Kent
2007-07-17 17:16                   ` Ingo Molnar
2007-07-18  1:24                     ` Bill Davidsen
2007-07-18  6:19                       ` Ian Kent
2007-07-17 16:30                 ` Chuck Ebbert
2007-07-17 21:16                 ` David Schwartz
2007-07-18  5:59                   ` Ian Kent
2007-07-18  7:54                     ` Ingo Molnar
2007-07-18 13:50                       ` Bill Davidsen
2007-07-18 17:23                       ` Linus Torvalds
2007-07-18 16:03                 ` Linus Torvalds
2007-07-18 17:31                   ` Ian Kent
2007-07-18 21:37                   ` Bill Davidsen
2007-07-19  8:53                     ` Ingo Molnar
2007-07-19 14:32                     ` Ingo Molnar
2007-07-19 17:06                       ` Bill Davidsen
2007-07-19 17:10                         ` Ingo Molnar
2007-07-19 17:17                         ` Ingo Molnar
2007-07-19 17:26                         ` Bill Davidsen
2007-07-19 17:42                           ` Ingo Molnar
2007-07-20  2:32                       ` Bill Davidsen
2007-07-19  8:16                   ` Ingo Molnar
2007-07-14 11:34 ` Markus
2007-07-14 15:11   ` Markus
2007-07-16  9:41     ` Ingo Molnar
2007-07-16 17:59       ` Markus
2007-07-17  7:37         ` Ingo Molnar
2007-07-17 13:06           ` Markus
2007-07-17 17:06             ` Ingo Molnar
2007-07-17 17:13               ` Ingo Molnar
2007-07-17 19:42               ` Markus
2007-07-17 20:09                 ` Ingo Molnar
2007-07-17 20:37                   ` Linus Torvalds
2007-07-17 20:43                     ` Ingo Molnar
2007-07-17 22:03                       ` Markus
2007-07-20 22:26                       ` Markus
2007-07-22 11:59                         ` konqueror suddenly vanishing, "konqueror: Fatal IO error: client killed" Ingo Molnar
2007-07-22 14:26                           ` Markus
2007-08-09 17:34                       ` [patch] CFS scheduler, -v19 Markus
2007-08-10  7:46                         ` Ingo Molnar
2007-08-14 17:15                           ` Markus
2007-10-17  0:02                       ` Markus
2007-07-14 17:19 ` Ed Tomlinson
2007-07-15  5:25   ` Mike Galbraith
2007-07-15 12:53     ` Markus
2007-07-15 19:46       ` Mike Galbraith
2007-07-15 21:11         ` Markus
2007-07-16  6:42           ` Mike Galbraith
2007-07-16  8:00     ` Ingo Molnar
2007-07-16  9:17   ` Ingo Molnar
2007-07-16 11:10     ` Ed Tomlinson
  -- strict thread matches above, loose matches on Subject: below --
2007-07-08 20:51 Al Boldi

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=20070708174612.GA4035@1wt.eu \
    --to=w@1wt.eu \
    --cc=akpm@linux-foundation.org \
    --cc=arjan@infradead.org \
    --cc=dmitry.adamushko@gmail.com \
    --cc=efault@gmx.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=vatsa@linux.vnet.ibm.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