2022-03-01 11:33:36

by Jan Kara

[permalink] [raw]
Subject: Re: Different writeback timing since v5.14

Hi!

On Tue 01-03-22 11:11:57, Richard Weinberger wrote:
> Rafał and I discovered that page writeback on UBIFS behaves different since v5.14.
> When a simple write, such as "echo foo > /mnt/ubibfs/bar.txt", happens it takes
> a few seconds until writeback calls ubifs_writepage().
>
> Before commit ab19939a6a50 ("mm/page-writeback: Fix performance when BDI's share of ratio is 0.")
> it was 30 seconds (vm.dirty_expire_centisecs), after this change it happens after 5 seconds
> (vm.dirty_writeback_centisecs).
>
> Is this expected?
> Just want to make sure that the said commit didn't uncover an UBIFS issue.

Yes, I think it is expected. Likely the background threshold for UBIFS bdi
is very small (probably UBIFS is not used much for writeback compared to
other filesystems). Previously, we just used wb_stat() which returned 0
(PCP counter inexact value) and so background writeback didn't trigger. Now
we use wb_stat_sum() when threshold is small, get exact value of dirty
pages and decide to start background writeback.

The only thing is, whether it is really expected that the threshold for
UBIFS bdi is so small. You can check the values in
/sys/kernel/debug/bdi/<bdi>/stats.

Honza
--
Jan Kara <[email protected]>
SUSE Labs, CR


2022-03-01 18:31:50

by Richard Weinberger

[permalink] [raw]
Subject: Re: Different writeback timing since v5.14

Jan,

----- Ursprüngliche Mail -----
> Von: "Jan Kara" <[email protected]>
>> Is this expected?
>> Just want to make sure that the said commit didn't uncover an UBIFS issue.
>
> Yes, I think it is expected. Likely the background threshold for UBIFS bdi
> is very small (probably UBIFS is not used much for writeback compared to
> other filesystems). Previously, we just used wb_stat() which returned 0
> (PCP counter inexact value) and so background writeback didn't trigger. Now
> we use wb_stat_sum() when threshold is small, get exact value of dirty
> pages and decide to start background writeback.

Thanks for the prompt reply!

> The only thing is, whether it is really expected that the threshold for
> UBIFS bdi is so small. You can check the values in
> /sys/kernel/debug/bdi/<bdi>/stats.

BdiDirtyThresh is indeed 0.

BdiWriteback: 0 kB
BdiReclaimable: 0 kB
BdiDirtyThresh: 0 kB
DirtyThresh: 772620 kB
BackgroundThresh: 385836 kB
BdiDirtied: 0 kB
BdiWritten: 0 kB
BdiWriteBandwidth: 102400 kBps
b_dirty: 0
b_io: 0
b_more_io: 0
b_dirty_time: 0
bdi_list: 1
state: 1

Thanks,
//richard

2022-03-02 19:23:53

by Jan Kara

[permalink] [raw]
Subject: Re: Different writeback timing since v5.14

On Tue 01-03-22 16:05:54, Richard Weinberger wrote:
> Jan,
>
> ----- Urspr?ngliche Mail -----
> > Von: "Jan Kara" <[email protected]>
> >> Is this expected?
> >> Just want to make sure that the said commit didn't uncover an UBIFS issue.
> >
> > Yes, I think it is expected. Likely the background threshold for UBIFS bdi
> > is very small (probably UBIFS is not used much for writeback compared to
> > other filesystems). Previously, we just used wb_stat() which returned 0
> > (PCP counter inexact value) and so background writeback didn't trigger. Now
> > we use wb_stat_sum() when threshold is small, get exact value of dirty
> > pages and decide to start background writeback.
>
> Thanks for the prompt reply!
>
> > The only thing is, whether it is really expected that the threshold for
> > UBIFS bdi is so small. You can check the values in
> > /sys/kernel/debug/bdi/<bdi>/stats.
>
> BdiDirtyThresh is indeed 0.
>
> BdiWriteback: 0 kB
> BdiReclaimable: 0 kB
> BdiDirtyThresh: 0 kB
> DirtyThresh: 772620 kB
> BackgroundThresh: 385836 kB
> BdiDirtied: 0 kB
> BdiWritten: 0 kB
> BdiWriteBandwidth: 102400 kBps
> b_dirty: 0
> b_io: 0
> b_more_io: 0
> b_dirty_time: 0
> bdi_list: 1
> state: 1

Yes, so this looks expected given the BDI wasn't active yet at all...

Honza
--
Jan Kara <[email protected]>
SUSE Labs, CR