* [PATCH 1/2] f2fs: move discard parameters into discard_cmd_control @ 2022-01-25 20:22 Jaegeuk Kim 2022-01-25 20:22 ` [PATCH 2/2] f2fs: expose discard related parameters in sysfs Jaegeuk Kim 2022-01-29 6:29 ` [f2fs-dev] [PATCH 1/2] f2fs: move discard parameters into discard_cmd_control Chao Yu 0 siblings, 2 replies; 4+ messages in thread From: Jaegeuk Kim @ 2022-01-25 20:22 UTC (permalink / raw) To: linux-kernel, linux-f2fs-devel; +Cc: Konstantin Vyshetsky, Jaegeuk Kim From: Konstantin Vyshetsky <vkon@google.com> This patch unifies parameters related to how often discard is issued and how many requests go out at the same time by placing them in discard_cmd_control. The move will allow the parameters to be modified in the future without relying on hard-coded values. Signed-off-by: Konstantin Vyshetsky <vkon@google.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> --- fs/f2fs/f2fs.h | 4 ++++ fs/f2fs/segment.c | 22 +++++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h index 8178a9152e49..63c90416364b 100644 --- a/fs/f2fs/f2fs.h +++ b/fs/f2fs/f2fs.h @@ -398,6 +398,10 @@ struct discard_cmd_control { struct mutex cmd_lock; unsigned int nr_discards; /* # of discards in the list */ unsigned int max_discards; /* max. discards to be issued */ + unsigned int max_discard_request; /* max. discard request per round */ + unsigned int min_discard_issue_time; /* min. interval between discard issue */ + unsigned int mid_discard_issue_time; /* mid. interval between discard issue */ + unsigned int max_discard_issue_time; /* max. interval between discard issue */ unsigned int discard_granularity; /* discard granularity */ unsigned int undiscard_blks; /* # of undiscard blocks */ unsigned int next_pos; /* next discard position */ diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c index 216538b57331..56211e201d51 100644 --- a/fs/f2fs/segment.c +++ b/fs/f2fs/segment.c @@ -1156,14 +1156,14 @@ static void __init_discard_policy(struct f2fs_sb_info *sbi, dpolicy->ordered = false; dpolicy->granularity = granularity; - dpolicy->max_requests = DEF_MAX_DISCARD_REQUEST; + dpolicy->max_requests = dcc->max_discard_request; dpolicy->io_aware_gran = MAX_PLIST_NUM; dpolicy->timeout = false; if (discard_type == DPOLICY_BG) { - dpolicy->min_interval = DEF_MIN_DISCARD_ISSUE_TIME; - dpolicy->mid_interval = DEF_MID_DISCARD_ISSUE_TIME; - dpolicy->max_interval = DEF_MAX_DISCARD_ISSUE_TIME; + dpolicy->min_interval = dcc->min_discard_issue_time; + dpolicy->mid_interval = dcc->mid_discard_issue_time; + dpolicy->max_interval = dcc->max_discard_issue_time; dpolicy->io_aware = true; dpolicy->sync = false; dpolicy->ordered = true; @@ -1171,12 +1171,12 @@ static void __init_discard_policy(struct f2fs_sb_info *sbi, dpolicy->granularity = 1; if (atomic_read(&dcc->discard_cmd_cnt)) dpolicy->max_interval = - DEF_MIN_DISCARD_ISSUE_TIME; + dcc->min_discard_issue_time; } } else if (discard_type == DPOLICY_FORCE) { - dpolicy->min_interval = DEF_MIN_DISCARD_ISSUE_TIME; - dpolicy->mid_interval = DEF_MID_DISCARD_ISSUE_TIME; - dpolicy->max_interval = DEF_MAX_DISCARD_ISSUE_TIME; + dpolicy->min_interval = dcc->min_discard_issue_time; + dpolicy->mid_interval = dcc->mid_discard_issue_time; + dpolicy->max_interval = dcc->max_discard_issue_time; dpolicy->io_aware = false; } else if (discard_type == DPOLICY_FSTRIM) { dpolicy->io_aware = false; @@ -1781,7 +1781,7 @@ static int issue_discard_thread(void *data) struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info; wait_queue_head_t *q = &dcc->discard_wait_queue; struct discard_policy dpolicy; - unsigned int wait_ms = DEF_MIN_DISCARD_ISSUE_TIME; + unsigned int wait_ms = dcc->min_discard_issue_time; int issued; set_freezable(); @@ -2180,6 +2180,10 @@ static int create_discard_cmd_control(struct f2fs_sb_info *sbi) atomic_set(&dcc->discard_cmd_cnt, 0); dcc->nr_discards = 0; dcc->max_discards = MAIN_SEGS(sbi) << sbi->log_blocks_per_seg; + dcc->max_discard_request = DEF_MAX_DISCARD_REQUEST; + dcc->min_discard_issue_time = DEF_MIN_DISCARD_ISSUE_TIME; + dcc->mid_discard_issue_time = DEF_MID_DISCARD_ISSUE_TIME; + dcc->max_discard_issue_time = DEF_MAX_DISCARD_ISSUE_TIME; dcc->undiscard_blks = 0; dcc->next_pos = 0; dcc->root = RB_ROOT_CACHED; -- 2.35.0.rc0.227.g00780c9af4-goog ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH 2/2] f2fs: expose discard related parameters in sysfs 2022-01-25 20:22 [PATCH 1/2] f2fs: move discard parameters into discard_cmd_control Jaegeuk Kim @ 2022-01-25 20:22 ` Jaegeuk Kim 2022-01-29 6:30 ` [f2fs-dev] " Chao Yu 2022-01-29 6:29 ` [f2fs-dev] [PATCH 1/2] f2fs: move discard parameters into discard_cmd_control Chao Yu 1 sibling, 1 reply; 4+ messages in thread From: Jaegeuk Kim @ 2022-01-25 20:22 UTC (permalink / raw) To: linux-kernel, linux-f2fs-devel; +Cc: Konstantin Vyshetsky, Jaegeuk Kim From: Konstantin Vyshetsky <vkon@google.com> This patch exposes max_discard_request, min_discard_issue_time, mid_discard_issue_time, and max_discard_issue_time in sysfs. This will allow the user to fine tune discard operations. Signed-off-by: Konstantin Vyshetsky <vkon@google.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> --- Documentation/ABI/testing/sysfs-fs-f2fs | 27 +++++++++++++++++++++++++ fs/f2fs/sysfs.c | 8 ++++++++ 2 files changed, 35 insertions(+) diff --git a/Documentation/ABI/testing/sysfs-fs-f2fs b/Documentation/ABI/testing/sysfs-fs-f2fs index 2416b03ff283..87d3884c90ea 100644 --- a/Documentation/ABI/testing/sysfs-fs-f2fs +++ b/Documentation/ABI/testing/sysfs-fs-f2fs @@ -98,6 +98,33 @@ Description: Controls the issue rate of discard commands that consist of small checkpoint is triggered, and issued during the checkpoint. By default, it is disabled with 0. +What: /sys/fs/f2fs/<disk>/max_discard_request +Date: December 2021 +Contact: "Konstantin Vyshetsky" <vkon@google.com> +Description: Controls the number of discards a thread will issue at a time. + Higher number will allow the discard thread to finish its work + faster, at the cost of higher latency for incomming I/O. + +What: /sys/fs/f2fs/<disk>/min_discard_issue_time +Date: December 2021 +Contact: "Konstantin Vyshetsky" <vkon@google.com> +Description: Controls the interval the discard thread will wait between + issuing discard requests when there are discards to be issued and + no I/O aware interruptions occur. + +What: /sys/fs/f2fs/<disk>/mid_discard_issue_time +Date: December 2021 +Contact: "Konstantin Vyshetsky" <vkon@google.com> +Description: Controls the interval the discard thread will wait between + issuing discard requests when there are discards to be issued and + an I/O aware interruption occurs. + +What: /sys/fs/f2fs/<disk>/max_discard_issue_time +Date: December 2021 +Contact: "Konstantin Vyshetsky" <vkon@google.com> +Description: Controls the interval the discard thread will wait when there are + no discard operations to be issued. + What: /sys/fs/f2fs/<disk>/discard_granularity Date: July 2017 Contact: "Chao Yu" <yuchao0@huawei.com> diff --git a/fs/f2fs/sysfs.c b/fs/f2fs/sysfs.c index 2bccdaedfb00..281bc0133ee6 100644 --- a/fs/f2fs/sysfs.c +++ b/fs/f2fs/sysfs.c @@ -716,6 +716,10 @@ F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, gc_idle, gc_mode); F2FS_RW_ATTR(F2FS_SBI, f2fs_sb_info, gc_urgent, gc_mode); F2FS_RW_ATTR(SM_INFO, f2fs_sm_info, reclaim_segments, rec_prefree_segments); F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, max_small_discards, max_discards); +F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, max_discard_request, max_discard_request); +F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, min_discard_issue_time, min_discard_issue_time); +F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, mid_discard_issue_time, mid_discard_issue_time); +F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, max_discard_issue_time, max_discard_issue_time); F2FS_RW_ATTR(DCC_INFO, discard_cmd_control, discard_granularity, discard_granularity); F2FS_RW_ATTR(RESERVED_BLOCKS, f2fs_sb_info, reserved_blocks, reserved_blocks); F2FS_RW_ATTR(SM_INFO, f2fs_sm_info, batched_trim_sections, trim_sections); @@ -832,6 +836,10 @@ static struct attribute *f2fs_attrs[] = { ATTR_LIST(reclaim_segments), ATTR_LIST(main_blkaddr), ATTR_LIST(max_small_discards), + ATTR_LIST(max_discard_request), + ATTR_LIST(min_discard_issue_time), + ATTR_LIST(mid_discard_issue_time), + ATTR_LIST(max_discard_issue_time), ATTR_LIST(discard_granularity), ATTR_LIST(pending_discard), ATTR_LIST(batched_trim_sections), -- 2.35.0.rc0.227.g00780c9af4-goog ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [f2fs-dev] [PATCH 2/2] f2fs: expose discard related parameters in sysfs 2022-01-25 20:22 ` [PATCH 2/2] f2fs: expose discard related parameters in sysfs Jaegeuk Kim @ 2022-01-29 6:30 ` Chao Yu 0 siblings, 0 replies; 4+ messages in thread From: Chao Yu @ 2022-01-29 6:30 UTC (permalink / raw) To: Jaegeuk Kim, linux-kernel, linux-f2fs-devel; +Cc: Konstantin Vyshetsky On 2022/1/26 4:22, Jaegeuk Kim wrote: > From: Konstantin Vyshetsky <vkon@google.com> > > This patch exposes max_discard_request, min_discard_issue_time, > mid_discard_issue_time, and max_discard_issue_time in sysfs. This will > allow the user to fine tune discard operations. > > Signed-off-by: Konstantin Vyshetsky <vkon@google.com> > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> Reviewed-by: Chao Yu <chao@kernel.org> Thanks, ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [f2fs-dev] [PATCH 1/2] f2fs: move discard parameters into discard_cmd_control 2022-01-25 20:22 [PATCH 1/2] f2fs: move discard parameters into discard_cmd_control Jaegeuk Kim 2022-01-25 20:22 ` [PATCH 2/2] f2fs: expose discard related parameters in sysfs Jaegeuk Kim @ 2022-01-29 6:29 ` Chao Yu 1 sibling, 0 replies; 4+ messages in thread From: Chao Yu @ 2022-01-29 6:29 UTC (permalink / raw) To: Jaegeuk Kim, linux-kernel, linux-f2fs-devel; +Cc: Konstantin Vyshetsky On 2022/1/26 4:22, Jaegeuk Kim wrote: > From: Konstantin Vyshetsky <vkon@google.com> > > This patch unifies parameters related to how often discard is issued and > how many requests go out at the same time by placing them in > discard_cmd_control. The move will allow the parameters to be modified > in the future without relying on hard-coded values. > > Signed-off-by: Konstantin Vyshetsky <vkon@google.com> > Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org> Reviewed-by: Chao Yu <chao@kernel.org> Thanks, ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2022-01-29 6:30 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-01-25 20:22 [PATCH 1/2] f2fs: move discard parameters into discard_cmd_control Jaegeuk Kim 2022-01-25 20:22 ` [PATCH 2/2] f2fs: expose discard related parameters in sysfs Jaegeuk Kim 2022-01-29 6:30 ` [f2fs-dev] " Chao Yu 2022-01-29 6:29 ` [f2fs-dev] [PATCH 1/2] f2fs: move discard parameters into discard_cmd_control Chao Yu
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).