On Sat, Sep 18, 2010 at 8:53 PM, Arjan van de Ven <ar...@linux.intel.com> wrote:
>>> that's regurgitating systemd propaganda... but that does not make it true
>>> ;)
>>
>> It's common sense; in my Fedora laptop I don't use cups, but it's
>> started anyway. If I want to optimize the boot time for speed, I need
>> to manually turn off the services I'm not really using. Presumably
>> MeeGo is doing the same. However, if the process is not started at all
>> (with systemd), then I don't need to turn it off.
>
> Since cups is talked to over networking sockets, and not used always, we use
> xinetd to start it yes.
>
> you're getting to the whole crux of the problem: some things you need pretty
> much always, and some you really want
> to start on demand, because they're pretty rare.

Yes, and that's what systemd does, so you don't need to port on-demand
services to xinetd (or whatever); everything is handled the same way.

> In MeeGo we start the things we need always early, because starting them on
> demand is the worst thing you can do
> for startup performance (you introduce unneeded waits). But things like cups
> that are only rarely used we start ondemand
> using xinetd or dbus activation or whatever mechanism is appropriate.

I don't see the problem. If you need 10 services to start at init, you
tell systemd to start them at init, they all will start at the same
time, say time 0, however, as they are activated, they will traverse
the dependencies and active them as well. The end result would be the
same, except that in the upstart model somebody has to be smart about
marking the correct dependencies, but in the systemd model, the
dependencies are implicit. In fact, in all likelihood systemd would be
faster because it doesn't need to wait for the dependencies to finish
loading completely. Since upstart has explicit dependencies, it cannot
know when the dependency can really start service the dependent
requests.

>>>> But systemd turns the problem around; nothing gets started, unless
>>>> it's really used, so there's less need to customize (if any).
>>>
>>> systemd turns it into a worst case problem unfortunately, because now you
>>> hit the start latency ALL THE TIME.
>>> this is what I meant with design issues; systemd's design isn't going to
>>> give you a super fast boot. Now
>>> maybe they'll fix it sometime in the future.... but today it makes
>>> systemd
>>> entirely uninteresting for booting fast.
>>>
>>> yes it'll boot faster than the really really slow existing Fedora, but
>>> that's not an interesting benchmark point.
>>> the benchmark point should be the state of the art, not the worst of the
>>> industry.
>>
>> I don't know what you call "state of the art", is it a highly tweaked
>> sequence of events?
>
> we have a optimized critical path, mostly achieved by removing dependencies
> that were not needed...
> this is a sequential series of events that we just need to get X up and
> running.

Yes, you have to be smart about the dependencies because they have to
be explicitly stated.

With systemd the dependencies would be implicit.

> Then there are the non-critical path components that we start at lower
> priority to fill any gaps of CPU
> and IO time that might have been left by the critical path. We think we can
> achieve this same split between critical and non-critical with upstart.
>
> It's highly optimized, which is different from "highly tweaked" in that it
> does not need constant tinkering.

What happens if any of those services gets updated, and suddenly
requires a new dependency? Or doesn't require something any more. You
would need to tweak the scripts again, and of course nobody will tell
you that these changes happened, you would have to follow their
development. Or what happens if you have 10 companies having custom
services started? Each one of those companies would have to tweak
their scripts.

This model requires constant tinkering and is not scalable.

With systemd, since the dependencies are implicit, you don't have to
do a thing. As soon as a developer removes a dependency systemd will
do the right thing without modifications. And companies can add any
services they want without having to worry about upstart dependencies,
or having to bootchart the whole thing.

>>  I can get the same on my Fedora system if I want,
>> but that would require a lot of effort. And that's the point;
>> constantly tweaking the services to start at the right time simply
>> doesn't scale. With systemd such tweaking is not necessary.
>
> yeah because with systemd as is you get always the worst case (only spend
> the time starting the things up that you end up always starting right
> as you need them... which is the absolute worst possible time because it
> creates stalls in the boot right where you can't use them).

On-demand doesn't mean later, if you need 10 services to be started
right after boot-time, systemd would start those services right after
boottime... You demand them at time 0.

>>>>> It's ok to have multiple competing technologies; that's one of the ways
>>>>> innovation happens in open source.. competition.
>>>>
>>>> Sure, but we are not using any, so I don't see why we should assume
>>>> that upstart will be used. I think both approaches need to be
>>>> carefully and equally considered.
>>>
>>> oh trust me we are looking at all options, very very carefully. That's
>>> why I
>>> said that upstart currently is more likely than systemd,
>>> but frankly, for 1.2 we might also just stick with what we have now.. it
>>> works and is fast.
>>
>> Well, don't take this the wrong way, but I don't trust anyone's word
>> without evidence. A document explaining such detailed analysis with
>> hard numbers and preferably the tests to generate that data would be
>> very welcome. That's what I would consider careful.
>
> MeeGo currently boots in about 8 seconds on a netbook. We're not starting
> things we don't need to start.
> We start all the things we know we need anyway as early as possible so we
> don't need to wait on it later.

Exactly the same would happen with systemd, but the dependencies would
be implicit.

> We know exactly where we're spending time due to our bootchart tooling, and
> what it'd take to boot even faster
> (it's not "go to systemd" it is "need less disk size footprint" at this
> point)

Surely Intel and Nokia can afford to do this bootchart tooling and
optimize the booting process with sysvinit, upstart, or systemd. But
some methods require less effort than others, and if other not so big
companies are to use MeeGo in their products, it would certainly help
to have implicit dependencies to avoid spending resources on this
bootcharting process.

But it's definitely true what you are saying; after the bootcharting
is more or less solved, the real issues are on the services themselves
and systemd wouldn't help to solve that.

> For us to switch to some other method, and do a lot of work to see where it
> ends up, it needs to start with knowing
> that the new method gives us something that optimizes either the boot time
> or (at the same boot time) the maintenance work.
> with upstart we may get some interesting functionality (but we might just
> implement those few things ourselves, for reasons GregKH mentioned before).
> with systemd as it is today, we know we'll take 3 steps back in terms of
> boot flow. I'm not ready to do that at this point... and I'm not going to
> spend too much time on
> analysis of systemd until that changes.

Fortunately anybody else in the MeeGo community can do that :)

-- 
Felipe Contreras
_______________________________________________
MeeGo-dev mailing list
MeeGo-dev@meego.com
http://lists.meego.com/listinfo/meego-dev

Reply via email to