2013-05-21 18:02:38

by frankcmoeller

[permalink] [raw]
Subject: Aw: Re: Ext4: Slow performance on first write after mount

Hi Andreas,

only a short question:

> I like the idea of keeping the high bits of the buddy bitmap in the group
> descriptor, instead of just the largest free order. It takes the same
> amount of space, but provides more information.
More informations for what? The allocator or better the good_group function
needs bb_largest_free_order and in some cases fragment count. Do you
want to use the bitmap for a not 100% correct fragment count calculation?
Or is there another use for it?

Best regards,
Frank

>
> > On Sun, 19 May 2013 21:36:02 +0200 (CEST) Frank C Moeller wrote:
> >> From my point (end user) I would prefer a builtin solution. I'm also a
> >> programmer and I can therefore understand why you don't want to change
> >> anything.
> >
> > It's not that I don't want to change anything, it's that I'm very
> > hesitant to add new mount options or new code paths that now need more
> > testing unless there's no other way of addressing a particular use
> > case. Another consideration is how to do it in such a way that it
> > doesn't degrade other users' performance.
> >
> > Issuing readahead requests for the bitmap blocks might be good
> > compromise; since they are readahead requests, as low priority
> > requests they won't interfere with anything else going on, and in
> > practice, unless you are starting your video recording **immediately**
> > after the reboot, it should address your concern.
>
> Right. Some of our users do something similar in userspace to avoid
> slowdown on first write, which doesn't _usually_ happen immediately
> after mount, but this isn't always helpful.
>
> > (Also note that for
> > most people willing to hack a DVR, adding a line to /etc/rc.local is
> > usually considered easier than building a new kernel from sources and
> > then after making file system format changes, requiring a reformat of
> > their data disk!)
>
> I think storing the buddy bitmap top bits in the GDT could be a COMPAT
> feature. It is just a hint that could be ignored or incorrect, since
> the actual bitmap would be authoritative.
>
> Cheers, Andreas
>
> > So it's not that I'm against solutions that involve kernel changes or
> > file system format changes. It's just that I want to make sure we
> > explore the entire solution space, since there are costs in terms of
> > testing costs, the need to do a backup-reformat-restore pass, etc,
> > etc., to some of the solutions that have been suggested so far.
> >
> > Regards,
> >
> > - Ted
>


2013-05-22 00:27:18

by Andreas Dilger

[permalink] [raw]
Subject: Re: Aw: Re: Ext4: Slow performance on first write after mount

On 2013-05-21, at 12:02 PM, [email protected] wrote:
>> I like the idea of keeping the high bits of the buddy bitmap
>> in the group descriptor, instead of just the largest free order.
>> It takes the same amount of space, but provides more information.
> More informations for what?

Sorry, what I meant to write was that it provides more information
than just recording e.g. the number of blocks in the largest free
extent.

> The allocator or better the good_group function
> needs bb_largest_free_order and in some cases fragment count. Do you
> want to use the bitmap for a not 100% correct fragment count calculation? Or is there another use for it?

The bitmap would provide the largest_free_order value directly
(assuming it is at least 4MB in size).

Cheers, Andreas

>>> On Sun, 19 May 2013 21:36:02 +0200 (CEST) Frank C Moeller wrote:
>>>> From my point (end user) I would prefer a builtin solution. I'm also a
>>>> programmer and I can therefore understand why you don't want to change
>>>> anything.
>>>
>>> It's not that I don't want to change anything, it's that I'm very
>>> hesitant to add new mount options or new code paths that now need more
>>> testing unless there's no other way of addressing a particular use
>>> case. Another consideration is how to do it in such a way that it
>>> doesn't degrade other users' performance.
>>>
>>> Issuing readahead requests for the bitmap blocks might be good
>>> compromise; since they are readahead requests, as low priority
>>> requests they won't interfere with anything else going on, and in
>>> practice, unless you are starting your video recording **immediately**
>>> after the reboot, it should address your concern.
>>
>> Right. Some of our users do something similar in userspace to avoid
>> slowdown on first write, which doesn't _usually_ happen immediately
>> after mount, but this isn't always helpful.
>>
>>> (Also note that for
>>> most people willing to hack a DVR, adding a line to /etc/rc.local is
>>> usually considered easier than building a new kernel from sources and
>>> then after making file system format changes, requiring a reformat of
>>> their data disk!)
>>
>> I think storing the buddy bitmap top bits in the GDT could be a COMPAT
>> feature. It is just a hint that could be ignored or incorrect, since
>> the actual bitmap would be authoritative.
>>
>> Cheers, Andreas
>>
>>> So it's not that I'm against solutions that involve kernel changes or
>>> file system format changes. It's just that I want to make sure we
>>> explore the entire solution space, since there are costs in terms of
>>> testing costs, the need to do a backup-reformat-restore pass, etc,
>>> etc., to some of the solutions that have been suggested so far.
>>>
>>> Regards,
>>>
>>> - Ted
>>


Cheers, Andreas