From: Wang Jianchao <jianchao.wan9@gmail.com>
To: Andreas Dilger <adilger@dilger.ca>
Cc: Theodore Ts'o <tytso@mit.edu>,
Ext4 Developers List <linux-ext4@vger.kernel.org>,
lishujin@kuaishou.com,
linux-fsdevel <linux-fsdevel@vger.kernel.org>
Subject: Re: [PATCH V2 4/7] ext4: add new helper interface ext4_insert_free_data
Date: Fri, 28 May 2021 11:40:12 +0800 [thread overview]
Message-ID: <b5e14639-7abf-ad9a-b7cd-8ce99e5828c1@gmail.com> (raw)
In-Reply-To: <D928EE21-92AA-40D8-BEAF-33A46E7DFFD3@dilger.ca>
On 2021/5/28 4:09 AM, Andreas Dilger wrote:
> On May 26, 2021, at 2:43 AM, Wang Jianchao <jianchao.wan9@gmail.com> wrote:
>>
>> Split the codes that inserts and merges ext4_free_data structures
>> into a new interface ext4_insert_free_data. This is preparing for
>> following async background discard.
>
> Thank you for your patch series. I think this is an important area to
> improve, since the current "-o discard" option adds too much overhead
> to be really usable in practice.
Yes, indeed
The discard can help to free unusable spaces back to storage cluster.
But do discard after every commit can be disaster,
- the jbd2 commit kthread can be blocked for long time sometimes, and
then all of the metadata modify operations are blocked due to no log
space
- the flooding discard can saturate the storage backend and then the
real write operations are blocked, especially the jbd2 log records
Even in the system with this patch, we can still observed the log write IO
can be blocked by the discard T_T...
>
> One problem with tracking the fine-grained freed extents and then using
> them directly to submit TRIM requests is that the underlying device may
> ignore TRIM requests that are too small. Submitting the TRIM right
> after each transaction commit does not allow much time for freed blocks
> to be aggregated (e.g. "rm -r" of a big directory tree), so it would be
> better to delay TRIM requests until more freed extents can be merged.
> Since most users only run fstrim once a day or every few days, it makes
> sense to allow time to merge freed space (tunable, maybe 5-15 minutes).
>
> However, tracking the rbtree for each group may be quite a lot of overhead
> if this is kept in memory for minutes or hours, so minimizing the memory
> usage to track freed extents is also important.
>
> We discussed on the ext4 developer call today whether it is necessary
> to track the fine-grained free extents in memory, or if it would be
> better to only track min/max freed blocks within each group? Depending
> on the fragmentation of the free blocks in the group, it may be enough
> to just store a single bit in each group (as is done today), and only
> clear this when there are blocks freed in the group.
>
> Either way, the improvement would be that the kernel is scheduling
> groups to be trimmed, and submitting TRIM requests at a much larger size,
> instead of depending on userspace to run fstrim. This also allows the
> fstrim scheduler to decide when the device is less busy and submit more
> TRIM requests, and back off when the device is busy.
Schedule a background trim task in kernel when the storage is not so busy
and pick up a block group that that has bigger enough free blocks.
This sounds fair.
>
> The other potential improvement is to track the TRIMMED state persistently
> in the block groups, so that unmount/remount doesn't result in every group
> being trimmed again. It would be good to refresh and include patches from:
>
> "ext4: introduce EXT4_BG_WAS_TRIMMED to optimize trim"
> https://patchwork.ozlabs.org/project/linux-ext4/list/?series=184981
>
> and
>
> e2fsprogs: add EXT2_FLAG_BG_WAS_TRIMMED to optimize fstrim
> https://patchwork.ozlabs.org/project/linux-ext4/list/?series=179639
>
> along with this series.
>
Yes, thanks a million
Best regard
Jianchao
>> Signed-off-by: Wang Jianchao <wangjianchao@kuaishou.com>
>
>
next prev parent reply other threads:[~2021-05-28 3:41 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <164ffa3b-c4d5-6967-feba-b972995a6dfb@gmail.com>
2021-05-26 8:42 ` [PATCH V2 1/7] ext4: remove the 'group' parameter of ext4_trim_extent Wang Jianchao
2021-05-27 19:47 ` Andreas Dilger
2021-06-23 13:13 ` Theodore Ts'o
2021-06-23 19:49 ` Theodore Ts'o
2021-07-02 10:27 ` Josh Triplett
2021-07-05 11:28 ` Wang Jianchao
[not found] ` <a602a6ba-2073-8384-4c8f-d669ee25c065@gmail.com>
2021-05-26 8:43 ` [PATCH V2 2/7] ext4: add new helper interface ext4_try_to_trim_range() Wang Jianchao
2021-05-27 19:48 ` Andreas Dilger
[not found] ` <49382052-6238-f1fb-40d1-b6b801b39ff7@gmail.com>
2021-05-26 8:43 ` [PATCH V2 3/7] ext4: remove the repeated comment of ext4_trim_all_free Wang Jianchao
2021-05-27 19:49 ` Andreas Dilger
[not found] ` <48e33dea-d15e-f211-0191-e01bd3eb17b3@gmail.com>
2021-05-26 8:43 ` [PATCH V2 4/7] ext4: add new helper interface ext4_insert_free_data Wang Jianchao
2021-05-27 20:09 ` Andreas Dilger
2021-05-28 3:40 ` Wang Jianchao [this message]
[not found] ` <67eeb65a-d413-c4f9-c06f-d5dcceca0e4f@gmail.com>
2021-05-26 8:43 ` [PATCH V2 5/7] ext4: get buddy cache after insert successfully Wang Jianchao
2021-06-23 3:06 ` Theodore Ts'o
[not found] ` <0b7915bc-193a-137b-4e52-8aaef8d6fef3@gmail.com>
2021-05-26 8:43 ` [PATCH V2 6/7] ext4: use bb_free_root to get the free data entry Wang Jianchao
2021-05-26 8:44 ` [PATCH V2 7/7] ext4: get discard out of jbd2 commit kthread contex Wang Jianchao
2021-05-27 20:18 ` Andreas Dilger
2021-05-28 3:06 ` Wang Jianchao
2021-06-22 0:55 ` Josh Triplett
2023-09-06 0:11 ` Sarthak Kukreti
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b5e14639-7abf-ad9a-b7cd-8ce99e5828c1@gmail.com \
--to=jianchao.wan9@gmail.com \
--cc=adilger@dilger.ca \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=lishujin@kuaishou.com \
--cc=tytso@mit.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).