From: Jaegeuk Kim <jaegeuk@kernel.org>
To: Daejun Park <daejun7.park@samsung.com>
Cc: yongmyung lee <ymhungry.lee@samsung.com>,
Jieon Seol <jieon.seol@samsung.com>,
Mankyu PARK <manq.park@samsung.com>,
Sung-Jun Park <sungjun07.park@samsung.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-f2fs-devel@lists.sourceforge.net"
<linux-f2fs-devel@lists.sourceforge.net>,
Keoseong Park <keosung.park@samsung.com>,
Sang-yoon Oh <sangyoon.oh@samsung.com>,
SEUNGUK SHIN <seunguk.shin@samsung.com>,
Jinyoung CHOI <j-young.choi@samsung.com>,
Jaemyung Lee <jaemyung.lee@samsung.com>
Subject: Re: [f2fs-dev] [PATCH v2] f2fs: change write_hint for hot/warm nodes
Date: Tue, 3 Nov 2020 10:58:08 -0800 [thread overview]
Message-ID: <20201103185808.GB1273166@google.com> (raw)
In-Reply-To: <20201103083832epcms2p6c8b0e4470f1392772317ab2b25256b3d@epcms2p6>
On 11/03, Daejun Park wrote:
> In the fs-based mode of F2FS, the mapping of hot/warm node to
> WRITE_LIFE_NOT_SET should be changed to WRITE_LIFE_SHORT.
>
> As a result of analyzing the write pattern of f2fs using real workload,
> hot/warm nodes have high update ratio close to hot data.[*]
> However, F2FS passes write hints for hot/warm nodes as WRITE_LIFE_NOT_SET.
I prefer to keep it as is, since basically node blocks should be separatly
stored from data blocks in different erase blocks in order to match F2FS GC
and FTL GC units. And, we don't do IPU for node blocks which doesn't make sense
to say *update ratio*.
>
> Furthermore, WRITE_LIFE_NOT_SET is a default value of write hint when it is
> not provided from the file system.
> In storage, write_hint is used to distinguish streams (e.g. NVMe).
> So, the hot/warm node of F2FS is not distinguished from other write_hints,
> which can make the wrong stream seperation.
>
> * Liang, Yu, et al. "An empirical study of F2FS on mobile devices." 2017
> IEEE 23rd International Conference on Embedded and Real-Time Computing
> Systems and Applications (RTCSA).
>
> Signed-off-by: Daejun Park <daejun7.park@samsung.com>
> ---
> v2: update documentation and comments
> ---
> Documentation/filesystems/f2fs.rst | 4 ++--
> fs/f2fs/segment.c | 6 +++---
> 2 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/Documentation/filesystems/f2fs.rst b/Documentation/filesystems/f2fs.rst
> index b8ee761c9922..afa3da7cfade 100644
> --- a/Documentation/filesystems/f2fs.rst
> +++ b/Documentation/filesystems/f2fs.rst
> @@ -717,8 +717,8 @@ WRITE_LIFE_LONG " WRITE_LIFE_LONG
> ===================== ======================== ===================
> User F2FS Block
> ===================== ======================== ===================
> - META WRITE_LIFE_MEDIUM;
> - HOT_NODE WRITE_LIFE_NOT_SET
> + META WRITE_LIFE_MEDIUM
> + HOT_NODE WRITE_LIFE_SHORT
> WARM_NODE "
> COLD_NODE WRITE_LIFE_NONE
> ioctl(COLD) COLD_DATA WRITE_LIFE_EXTREME
> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> index 1596502f7375..577ab7516c6b 100644
> --- a/fs/f2fs/segment.c
> +++ b/fs/f2fs/segment.c
> @@ -3160,8 +3160,8 @@ int f2fs_rw_hint_to_seg_type(enum rw_hint hint)
> *
> * User F2FS Block
> * ---- ---- -----
> - * META WRITE_LIFE_MEDIUM;
> - * HOT_NODE WRITE_LIFE_NOT_SET
> + * META WRITE_LIFE_MEDIUM
> + * HOT_NODE WRITE_LIFE_SHORT
> * WARM_NODE "
> * COLD_NODE WRITE_LIFE_NONE
> * ioctl(COLD) COLD_DATA WRITE_LIFE_EXTREME
> @@ -3208,7 +3208,7 @@ enum rw_hint f2fs_io_type_to_rw_hint(struct f2fs_sb_info *sbi,
> return WRITE_LIFE_EXTREME;
> } else if (type == NODE) {
> if (temp == WARM || temp == HOT)
> - return WRITE_LIFE_NOT_SET;
> + return WRITE_LIFE_SHORT;
> else if (temp == COLD)
> return WRITE_LIFE_NONE;
> } else if (type == META) {
> --
> 2.25.1
_______________________________________________
Linux-f2fs-devel mailing list
Linux-f2fs-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel
WARNING: multiple messages have this Message-ID (diff)
From: Jaegeuk Kim <jaegeuk@kernel.org>
To: Daejun Park <daejun7.park@samsung.com>
Cc: "chao@kernel.org" <chao@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"linux-f2fs-devel@lists.sourceforge.net"
<linux-f2fs-devel@lists.sourceforge.net>,
Chao Yu <yuchao0@huawei.com>,
yongmyung lee <ymhungry.lee@samsung.com>,
Jieon Seol <jieon.seol@samsung.com>,
Sang-yoon Oh <sangyoon.oh@samsung.com>,
Mankyu PARK <manq.park@samsung.com>,
Sung-Jun Park <sungjun07.park@samsung.com>,
Keoseong Park <keosung.park@samsung.com>,
SEUNGUK SHIN <seunguk.shin@samsung.com>,
Jinyoung CHOI <j-young.choi@samsung.com>,
Jaemyung Lee <jaemyung.lee@samsung.com>
Subject: Re: [PATCH v2] f2fs: change write_hint for hot/warm nodes
Date: Tue, 3 Nov 2020 10:58:08 -0800 [thread overview]
Message-ID: <20201103185808.GB1273166@google.com> (raw)
In-Reply-To: <20201103083832epcms2p6c8b0e4470f1392772317ab2b25256b3d@epcms2p6>
On 11/03, Daejun Park wrote:
> In the fs-based mode of F2FS, the mapping of hot/warm node to
> WRITE_LIFE_NOT_SET should be changed to WRITE_LIFE_SHORT.
>
> As a result of analyzing the write pattern of f2fs using real workload,
> hot/warm nodes have high update ratio close to hot data.[*]
> However, F2FS passes write hints for hot/warm nodes as WRITE_LIFE_NOT_SET.
I prefer to keep it as is, since basically node blocks should be separatly
stored from data blocks in different erase blocks in order to match F2FS GC
and FTL GC units. And, we don't do IPU for node blocks which doesn't make sense
to say *update ratio*.
>
> Furthermore, WRITE_LIFE_NOT_SET is a default value of write hint when it is
> not provided from the file system.
> In storage, write_hint is used to distinguish streams (e.g. NVMe).
> So, the hot/warm node of F2FS is not distinguished from other write_hints,
> which can make the wrong stream seperation.
>
> * Liang, Yu, et al. "An empirical study of F2FS on mobile devices." 2017
> IEEE 23rd International Conference on Embedded and Real-Time Computing
> Systems and Applications (RTCSA).
>
> Signed-off-by: Daejun Park <daejun7.park@samsung.com>
> ---
> v2: update documentation and comments
> ---
> Documentation/filesystems/f2fs.rst | 4 ++--
> fs/f2fs/segment.c | 6 +++---
> 2 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/Documentation/filesystems/f2fs.rst b/Documentation/filesystems/f2fs.rst
> index b8ee761c9922..afa3da7cfade 100644
> --- a/Documentation/filesystems/f2fs.rst
> +++ b/Documentation/filesystems/f2fs.rst
> @@ -717,8 +717,8 @@ WRITE_LIFE_LONG " WRITE_LIFE_LONG
> ===================== ======================== ===================
> User F2FS Block
> ===================== ======================== ===================
> - META WRITE_LIFE_MEDIUM;
> - HOT_NODE WRITE_LIFE_NOT_SET
> + META WRITE_LIFE_MEDIUM
> + HOT_NODE WRITE_LIFE_SHORT
> WARM_NODE "
> COLD_NODE WRITE_LIFE_NONE
> ioctl(COLD) COLD_DATA WRITE_LIFE_EXTREME
> diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
> index 1596502f7375..577ab7516c6b 100644
> --- a/fs/f2fs/segment.c
> +++ b/fs/f2fs/segment.c
> @@ -3160,8 +3160,8 @@ int f2fs_rw_hint_to_seg_type(enum rw_hint hint)
> *
> * User F2FS Block
> * ---- ---- -----
> - * META WRITE_LIFE_MEDIUM;
> - * HOT_NODE WRITE_LIFE_NOT_SET
> + * META WRITE_LIFE_MEDIUM
> + * HOT_NODE WRITE_LIFE_SHORT
> * WARM_NODE "
> * COLD_NODE WRITE_LIFE_NONE
> * ioctl(COLD) COLD_DATA WRITE_LIFE_EXTREME
> @@ -3208,7 +3208,7 @@ enum rw_hint f2fs_io_type_to_rw_hint(struct f2fs_sb_info *sbi,
> return WRITE_LIFE_EXTREME;
> } else if (type == NODE) {
> if (temp == WARM || temp == HOT)
> - return WRITE_LIFE_NOT_SET;
> + return WRITE_LIFE_SHORT;
> else if (temp == COLD)
> return WRITE_LIFE_NONE;
> } else if (type == META) {
> --
> 2.25.1
next prev parent reply other threads:[~2020-11-03 18:58 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20201103083832epcms2p6c8b0e4470f1392772317ab2b25256b3d@epcms2p6>
2020-11-03 8:38 ` [f2fs-dev] [PATCH v2] f2fs: change write_hint for hot/warm nodes Daejun Park
2020-11-03 8:38 ` Daejun Park
2020-11-03 9:01 ` [f2fs-dev] " Chao Yu
2020-11-03 9:01 ` Chao Yu
2020-11-03 18:58 ` Jaegeuk Kim [this message]
2020-11-03 18:58 ` Jaegeuk Kim
2020-11-05 3:15 ` [f2fs-dev] " Chao Yu
2020-11-05 3:15 ` Chao Yu
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=20201103185808.GB1273166@google.com \
--to=jaegeuk@kernel.org \
--cc=daejun7.park@samsung.com \
--cc=j-young.choi@samsung.com \
--cc=jaemyung.lee@samsung.com \
--cc=jieon.seol@samsung.com \
--cc=keosung.park@samsung.com \
--cc=linux-f2fs-devel@lists.sourceforge.net \
--cc=linux-kernel@vger.kernel.org \
--cc=manq.park@samsung.com \
--cc=sangyoon.oh@samsung.com \
--cc=seunguk.shin@samsung.com \
--cc=sungjun07.park@samsung.com \
--cc=ymhungry.lee@samsung.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.