[systemd-devel] [PATCH] [RFC][PLEASE TEST] readahead: chunk on spinning media

Kok, Auke-jan H auke-jan.h.kok at intel.com
Wed Mar 27 16:15:47 PDT 2013


On Wed, Mar 27, 2013 at 10:50 AM, Kok, Auke-jan H
<auke-jan.h.kok at intel.com> wrote:
> On Wed, Mar 27, 2013 at 4:55 AM, Kay Sievers <kay at vrfy.org> wrote:
>> On Sun, Mar 24, 2013 at 3:38 AM, Kok, Auke-jan H
>> <auke-jan.h.kok at intel.com> wrote:
>>
>>>>> I don't see anything in udev code setting IOPRIO... perhaps elevating
>>>>> the few calls doing bklid and mount might be helpful?
>>>>
>>>> Maybe that really makes a difference, we should definitely try that.
>>>> The blkid calls are really limited to a few bytes here and there, and
>>>> will never loop for a long time, so that should be fine.
>>>>
>>>> Do you have a box, where you could you give it a quick try to bump the
>>>> prio for the libblkid calls:
>>>>   ioprio_set(IOPRIO_WHO_PROCESS, getpid(), ...)
>>>> in:
>>>>   src/udev/udev-builtin-blkid.c
>>>> ?
>>>
>>> I left my non-ssd dev box in the office, so it'll be monday - but I'll
>>> absolutely give it a good test run.
>>
>> Could you still give that a simple try with current git and the
>> chunking in place, so that we have some idea if the blkid calls would
>> benefit from a higher priority?
>>
>> Even if we decide against doing that in the end, it would be nice to know ...
>
> I'm pretty sure it'll make a big dent, and I started looking at it already...

So, I just spent an hour or so playing around with some stuff, and
here are my thoughts: First off, it seems making the blkid parts run
at RT,0 prio (highest possible) does absolutely nothing, which
suggests that Lennart was right that almost all parts are already
cached.

However, while looking at the bootcharts I'm noticing `fsck` and
`systemd-fsck` is taking considerable time to complete:

before:
- all fsck's done around 5.5sec total (measured after kernel done booting)
- systemd-fsck's take ~ 2.4 secs
- fsck children run for 2.2-2.8 seconds

I then added RT,0 prio to systemd-fsck just before it forks it's children:

after:
- all fsck's done around 3.5secs total
- systemd-fsck's take ~0.8 secs
- fsck children run for 0.4-0.7 secs

All in all that's a big gain, and it immediately exposes that `lvm`
also is crazy slow (this is a vanilla fc18 install).

So, I'd be interested in making this the default. Maybe not RT,0 which
is a bit of a whammer, but certainly BE,0 or even RT,5 or something
like that.

Auke


More information about the systemd-devel mailing list