public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* Scheduler Situation
@ 2007-08-03 12:07 T. J. Brumfield
  2007-08-03 12:31 ` Alistair John Strachan
                   ` (4 more replies)
  0 siblings, 5 replies; 21+ messages in thread
From: T. J. Brumfield @ 2007-08-03 12:07 UTC (permalink / raw)
  To: linux-kernel

First off, I am an avid reader of the LKML but I'm not a developer.
Admittedly I am a piss-poor C developer who likes to poke around the
code, play with patches and attempt to learn, but in reality at best I
pretend I understand it, and I don't really.  I fully defer to the
technical knowledge of far greater minds on this list.  Even having a
basic understanding of C and looking at the code, I still don't
understand basic kernel operations like memory management or CPU
scheduling well enough to see in code what works best.

What I can say, is that someone who has had years of project
management experience, it is painfully obvious here that there are
events here in personal issues which should be easy to spot and
rectify.

I, like many people, had been using Con's patches for years and were
greatly pleased by them.  I've experimented with a variety of kernel
flavor and patches, often woefully trying to amass my own collection
of custom patches and often breaking things while trying to integrate
too many patches at once that don't patch nicely with one another.
And when I've had questions, I often read through Con's mailing list
archives from his site.

It would appear he spent 4 years working on his patch-set, primarily
based around his version of a scheduler.  And in reading the LKML it
seems that aspects of his patch-set he pushed for mainline inclusion.
He was shot down saying that his ideas were flat-out wrong, and still
he worked for years to improve his work.  He answered questions, fixed
bugs, and made himself very available.

It may very well be that CFS is a better scheduler than SD.  Ingo is a
very respected coder, and from even Con's mouth it seems that CFS is
pretty simple in its execution.  Ingo seems to suggest that since he
posted his code so quickly after he wrote it, that he didn't do
anything wrong.

Linus, a man I greatly admire and respect, especially for his
blunt/terse statements, also seems to suggest that no one has wronged
Con here.  However in insisting that the decision was based on Con's
inability to support his code, I can fully understand why Con would
leave kernel development permanently.

The simple truth is that Con poured years into a project despite being
rebuffed and told he was wrong.  The moment that people change their
minds and realize that his concepts have merit, no one apologizes for
all the past criticism.  Ingo did very much credit Con for
inspiration, but I can't see how this decision was anything but
political.  Linus said it himself, that he trusts Ingo to stand behind
the code, and he didn't trust Con to do the same.

I am reticent to accuse anyone of dishonesty, but that statement just
doesn't seem to add up.  And even if that is the way Linus truly felt,
it doesn't seem fair given how well Con had supported his code and his
users.  Regardless for a man who claims to not make political
decisions on code, that is exactly how he operated here.  He chose the
person over the code.  From his own mouth, it seemed he remains very
put off by earlier comments from the "Con camp" that perhaps there
should be separation between the server and desktop kernels.

And while Linus is no-doubt correct that such a separation should not
occur, I never really saw Con push for such a thing.  I know I don't
fully understand the code, but it does seem to make sense to an idiot
like me however that with all the other kernel options to customize
your build for your needs, it isn't beyond reason to go with a
plugsched type solution.  The kernel is already immensely modular, no
doubt the most modular piece of code on the planet.

It works amazingly well in small embedded devices to large
multi-processor servers across multiple architectures and processor
types.  The reason I'm posting on an issue I'm sure that many people
are already sick of, is that I'm sure many people would like to see
two things happen.

1 - Can someone please explain why the kernel can be modular in every
other aspect, including offering a choice of IO schedulers, but not
kernel schedulers?

2 - Can't we all agree that this was poorly handled?  Politics should
not affect code, and we are all adults.  People should accept
rejection of patches, and what not.  At the same time, if I were Con
I'd be extremely hurt, and many people have echoed this very
sentiment.  I think a project of this size that depends so much on a
large community for testing, contributions, etc. can't afford to
alienate people in this fashion.  Con may never come back to kernel
land.  That's unfortunate, but this needs to be addressed.  I'm sure a
whole lot of people would feel better if they knew this kind of
treatment is not likely to happen again, and ideally I think Con
should get an apology.

If I'm a developer who sits outside the usual circle of contributers,
and I have an idea for a big change in the kernel, how likely am I to
devote a bunch of time if I have the impression that my work will be
shot down, rewritten by another person, and lastly I will be
personally attacked rather than thanked for my contributions?

I'm really hoping that we can take moment to display some
consideration for the feelings of others here, not to babysit or
placate, but rather to set a precedent for such an important project
on how contributers will be treated.

-- T. J. Brumfield
"In the beginning the Universe was created. This has made a lot of
people very angry and been widely regarded as a bad move."
--Douglas Adams
"Nihilism makes me smile."
--Christopher Quic

^ permalink raw reply	[flat|nested] 21+ messages in thread
* Re: about modularization
@ 2007-08-06 20:20 Mitchell Erblich
  2007-08-06 20:50 ` Rene Herman
  0 siblings, 1 reply; 21+ messages in thread
From: Mitchell Erblich @ 2007-08-06 20:20 UTC (permalink / raw)
  To: linux-kernel; +Cc: Ingo Molnar, "T. J. Brumfield"

Ingo Molnar and group,

    If we just concentrate on CPU schedulars...

     IMO,  POSIX requirements almost guarantee
     the support for modularization. The different
     task scheds allow a set of task class specific
     funcs to be generated. The question is whether
     those modular schedulars will ALWAYS consume
     kernel footprint space?

    With the arg of modularization is really targeted
    to optional hardware and decreases the kernel
    footprint size. Then here is a arg to support only 1
    default schedular and take the rest of the sched
    code and modularize that..

      IMO, ONLY some envs REQUIRE RT
      sched and some envs REQUIRE MP
      (multi-core and multi-processor) scheduling.
      I question whether the core kernel needs
      this support.
      .
    This additional capability could be removed
    from the growing kernel footprint and
    additional schedulars could be kept in the src
    code base with increasingly minimal effort if full
    modularization support were added.

    Thus, a hybrid schedular approach could be taken
    that would default to a single uni-processor schedular
    (ex: CFS) and the other schedulars could be
    modularized.

    Mitchell Erblich
    ------------------------







    Ingo Molnar wrote:
>
> * T. J. Brumfield <enderandrew@gmail.com> wrote:
>
> > 1 - Can someone please explain why the kernel can be modular in every
> > other aspect, including offering a choice of IO schedulers, but not
> > kernel schedulers?
>
> that's a fundamental misconception. If you boot into a distro kernel on
> a typical PC, about half of the kernel code that the box runs in any
> moment will be in modules, half of it is in the "kernel core". For
> example, on a random laptop:
>
>  $ echo `lsmod | cut -c1-30 | cut -d' ' -f2-` | sed 's/Size //' |
>    sed 's/ /+/g' | bc
>  2513784
>
> i.e. 2.5 MB of modules. The core kernel's size:
>
>  $ dmesg | grep 'kernel code'
>  Memory: 2053212k/2087808k available (2185k kernel code, 33240k reserved,
1174k data, 244k init, 1170304k highmem)
>
> 2.1 MB of kernel core code. (of course the total body of "possible
> drivers" is 10 times larger than that of the core kernel - but the
> fundamental 'variety' is not.)
>
> most of the modules are for stuff where there is a significant physical
> difference between the components they support. Drivers for different
> pieces of hardware. Filesystem drivers for different on-disk physical
> layouts. Network protocol drivers for different on-wire formats. The
> sanest technological decision there is clearly to modularize.
>
> And note that often it's not even about choice there: the user's system
> has a particular piece of hardware, to which there is usually one
> primary driver. The user does not have any real 'choice' over the
> modularization here, it's largely a technological act to make the
> kernel's footprint smaller.
>
> But the kernel core, which does not depend as much on the physical
> properties of the stuff it supports (it depends on the physics of the
> machine of course, but those rules are mostly shared between all
> machines of that architecture), and is fundamentally influenced by the
> syscall API (which is not modular either) and by our OS design
> decisions, has much less reason to be modularized.
>
> The core kernel was always non-modular, and it depends on the technical
> details whether we want to or _have to_ modularize something so that it
> becomes modular to the user too. For example we dont have 'competing',
> modular versions of the IPv4 stack. Neither of the VFS. Nor of timers,
> futexes, nor of locking code or of the CPU scheduler. But we can switch
> out any of those implementations from the core kernel, and did so
> numerous times in the past and will do so in the future.
>
> CPU schedulers are as core kernel code as it gets - you cannot even boot
> without having a CPU scheduler. IO schedulers, although similar in name,
> are quite different beasts from CPU schedulers, and they are somewhere
> between the core kernel and drivers. They are not 'physical drivers' (an
> IO scheduler can drive any disk), nor are they fully 'core kernel code'
> in the sense of a kernel not even being able to boot without them. Also,
> disks are physically different from CPUs, in a way which works _against_
> the user-modularization of CPU schedulers. (there are also many other
> differences which have been pointed out in the past)
>
> In any case, the IO subsystem maintainers decided to modularize IO
> schedulers, and that's their decision. One of the authors of the IO
> scheduler code said it on lkml recently that while modularization of IO
> scheduler had advantages too, in retrospect he wishes they would not
> have made IO schedulers modular and now that decision cannot be undone.
> So even that much different situation was far from a clear decision, and
> some negative effects can be felt today too, in form of having two
> primary IO schedulers but not having one IO scheduler that works well in
> all cases. For CPU schedulers the circumstances point away away from
> user-selectable modularization even stronger.
>
>         Ingo
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/


^ permalink raw reply	[flat|nested] 21+ messages in thread
* Re: about modularization
@ 2007-08-06 21:48 Mitchell Erblich
  2007-08-06 23:35 ` Rene Herman
  0 siblings, 1 reply; 21+ messages in thread
From: Mitchell Erblich @ 2007-08-06 21:48 UTC (permalink / raw)
  To: Rene Herman; +Cc: linux-kernel, Ingo Molnar, "T. J. Brumfield"

Rene,

    Of the uni-processor systems currently that can run Linux, I would not
    doubt if  99.9999% percent are uni-cores. It will be probably
    3-5 years minimum before the multi-core processors will have any
    decent percentage of systems.

    And I am not suggesting not supporting them. I am only suggesting
   is wrt the schedular, bring the system up with a default schedular,
   and then load additional functionality based on the hardware/software
    requirements of the system.

    Thus, the fallout MIGHT be a uni-processor CFS that would not migrate
    tasks between multiple CPUs and as additional processors are brought
    online, migration could be enabled, and gang type scheduling,  whatever
    could be then used.


    IMO, if their is a fault (because of heat, etc) the user would rather
bring
    up the system in a degraded mode. Same reason applies to...
    boot -s..

    Mitchell Erblich
------------------------------


Rene Herman wrote:
>
> On 08/06/2007 10:20 PM, Mitchell Erblich wrote:
>
> >     Thus, a hybrid schedular approach could be taken
> >     that would default to a single uni-processor schedular
>
> What a brilliant idea in a world where buying a non multi core CPU is
> getting to be only somewhat easier than a non SMT one...
>
> Rene.
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/


^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2007-09-01 21:47 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-03 12:07 Scheduler Situation T. J. Brumfield
2007-08-03 12:31 ` Alistair John Strachan
2007-08-03 12:52 ` Oleksandr Natalenko
     [not found]   ` <192840a00708030616g22d9dd16o95b2620bfe3347a8@mail.gmail.com>
2007-08-03 13:27     ` Андрій Мішковський
2007-08-03 13:45       ` Alistair John Strachan
2007-08-03 13:00 ` debian developer
2007-08-03 15:28   ` about modularization Ingo Molnar
2007-08-03 13:19 ` Ingo Molnar
     [not found]   ` <cdc89fe60708030651s54b5f0e0j938450632cf621c5@mail.gmail.com>
2007-08-03 13:52     ` Fwd: " T. J. Brumfield
2007-08-03 15:02       ` Ingo Molnar
2007-08-03 15:13       ` Ingo Molnar
2007-08-03 17:47   ` Rene Herman
2007-08-03 18:59     ` Ingo Molnar
2007-09-01 22:02   ` Oleg Verych
     [not found] ` <200708031354.15485.alistair@devzero.co.uk>
     [not found]   ` <cdc89fe60708030712q391de609o3999a870ea7cbcbd@mail.gmail.com>
     [not found]     ` <200708031540.29687.alistair@devzero.co.uk>
2007-08-03 14:51       ` Scheduler Situation T. J. Brumfield
2007-08-03 15:05         ` Alistair John Strachan
  -- strict thread matches above, loose matches on Subject: below --
2007-08-06 20:20 about modularization Mitchell Erblich
2007-08-06 20:50 ` Rene Herman
2007-08-06 21:48 Mitchell Erblich
2007-08-06 23:35 ` Rene Herman
2007-08-06 23:45   ` Rene Herman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox