lkml.org 
[lkml]   [2021]   [Mar]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] f2fs: fix the discard thread sleep timeout under high utilization
    Date
    When f2fs is heavily utilized over 80%, the current discard policy
    sets the max sleep timeout of discard thread as 50ms
    (DEF_MIN_DISCARD_ISSUE_TIME). But this is set even when there are
    no pending discard commands to be issued. This results into
    unnecessary frequent and periodic wake ups of the discard thread.
    This patch adds check for pending discard commands in addition
    to heavy utilization condition to prevent those wake ups.

    Signed-off-by: Sahitya Tummala <stummala@codeaurora.org>
    ---
    fs/f2fs/segment.c | 5 ++++-
    1 file changed, 4 insertions(+), 1 deletion(-)

    diff --git a/fs/f2fs/segment.c b/fs/f2fs/segment.c
    index dced46c..df30220 100644
    --- a/fs/f2fs/segment.c
    +++ b/fs/f2fs/segment.c
    @@ -1112,6 +1112,8 @@ static void __init_discard_policy(struct f2fs_sb_info *sbi,
    struct discard_policy *dpolicy,
    int discard_type, unsigned int granularity)
    {
    + struct discard_cmd_control *dcc = SM_I(sbi)->dcc_info;
    +
    /* common policy */
    dpolicy->type = discard_type;
    dpolicy->sync = true;
    @@ -1129,7 +1131,8 @@ static void __init_discard_policy(struct f2fs_sb_info *sbi,
    dpolicy->io_aware = true;
    dpolicy->sync = false;
    dpolicy->ordered = true;
    - if (utilization(sbi) > DEF_DISCARD_URGENT_UTIL) {
    + if (utilization(sbi) > DEF_DISCARD_URGENT_UTIL &&
    + atomic_read(&dcc->discard_cmd_cnt)) {
    dpolicy->granularity = 1;
    dpolicy->max_interval = DEF_MIN_DISCARD_ISSUE_TIME;
    }
    --
    Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc.
    Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project.
    \
     
     \ /
      Last update: 2021-03-15 05:58    [W:4.812 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site