All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jaegeuk Kim <jaegeuk@kernel.org>
To: Chao Yu <yuchao0@huawei.com>
Cc: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net
Subject: Re: [f2fs-dev] [PATCH 5/5] f2fs: show more debug info for per-temperature log
Date: Wed, 24 Jun 2020 15:31:14 -0700	[thread overview]
Message-ID: <20200624223114.GA192472@google.com> (raw)
In-Reply-To: <20200618063625.110273-5-yuchao0@huawei.com>

On 06/18, Chao Yu wrote:
> - Add to account and show per-log dirty_seg, full_seg and valid_blocks
> in debugfs.
> - reformat printed info.
> 
>     TYPE            segno    secno   zoneno  dirty_seg   full_seg  valid_blk
>   - COLD   data:     1523     1523     1523          1          0        399
>   - WARM   data:      769      769      769         20        255     133098
>   - HOT    data:      767      767      767          9          0        167
>   - Dir   dnode:       22       22       22          3          0         70
>   - File  dnode:      722      722      722         14         10       6505
>   - Indir nodes:        2        2        2          1          0          3
> 
> Signed-off-by: Chao Yu <yuchao0@huawei.com>
> ---
>  fs/f2fs/debug.c | 67 ++++++++++++++++++++++++++++++++++++++++---------
>  fs/f2fs/f2fs.h  |  3 +++
>  2 files changed, 58 insertions(+), 12 deletions(-)
> 
> diff --git a/fs/f2fs/debug.c b/fs/f2fs/debug.c
> index 0dbcb0f9c019..aa1fd2de11ba 100644
> --- a/fs/f2fs/debug.c
> +++ b/fs/f2fs/debug.c
> @@ -174,6 +174,29 @@ static void update_general_status(struct f2fs_sb_info *sbi)
>  	for (i = META_CP; i < META_MAX; i++)
>  		si->meta_count[i] = atomic_read(&sbi->meta_count[i]);
>  
> +	for (i = 0; i < NO_CHECK_TYPE; i++) {
> +		si->dirty_seg[i] = 0;
> +		si->full_seg[i] = 0;
> +		si->valid_blks[i] = 0;
> +	}
> +
> +	for (i = 0; i < MAIN_SEGS(sbi); i++) {
> +		int blks = get_seg_entry(sbi, i)->valid_blocks;
> +		int type = get_seg_entry(sbi, i)->type;
> +
> +		if (!blks)
> +			continue;
> +
> +		if (IS_CURSEG(sbi, i))
> +			continue;

How about adding current segments as well? Especially, it's hard to see any
valid blocks for cold node with this.

> +
> +		if (blks == sbi->blocks_per_seg)
> +			si->full_seg[type]++;
> +		else
> +			si->dirty_seg[type]++;
> +		si->valid_blks[type] += blks;
> +	}
> +
>  	for (i = 0; i < 2; i++) {
>  		si->segment_count[i] = sbi->segment_count[i];
>  		si->block_count[i] = sbi->block_count[i];
> @@ -329,30 +352,50 @@ static int stat_show(struct seq_file *s, void *v)
>  		seq_printf(s, "\nMain area: %d segs, %d secs %d zones\n",
>  			   si->main_area_segs, si->main_area_sections,
>  			   si->main_area_zones);
> -		seq_printf(s, "  - COLD  data: %d, %d, %d\n",
> +		seq_printf(s, "    TYPE         %8s %8s %8s %10s %10s %10s\n",
> +			   "segno", "secno", "zoneno", "dirty_seg", "full_seg", "valid_blk");
> +		seq_printf(s, "  - COLD   data: %8d %8d %8d %10u %10u %10u\n",
>  			   si->curseg[CURSEG_COLD_DATA],
>  			   si->cursec[CURSEG_COLD_DATA],
> -			   si->curzone[CURSEG_COLD_DATA]);
> -		seq_printf(s, "  - WARM  data: %d, %d, %d\n",
> +			   si->curzone[CURSEG_COLD_DATA],
> +			   si->dirty_seg[CURSEG_COLD_DATA],
> +			   si->full_seg[CURSEG_COLD_DATA],
> +			   si->valid_blks[CURSEG_COLD_DATA]);
> +		seq_printf(s, "  - WARM   data: %8d %8d %8d %10u %10u %10u\n",
>  			   si->curseg[CURSEG_WARM_DATA],
>  			   si->cursec[CURSEG_WARM_DATA],
> -			   si->curzone[CURSEG_WARM_DATA]);
> -		seq_printf(s, "  - HOT   data: %d, %d, %d\n",
> +			   si->curzone[CURSEG_WARM_DATA],
> +			   si->dirty_seg[CURSEG_WARM_DATA],
> +			   si->full_seg[CURSEG_WARM_DATA],
> +			   si->valid_blks[CURSEG_WARM_DATA]);
> +		seq_printf(s, "  - HOT    data: %8d %8d %8d %10u %10u %10u\n",
>  			   si->curseg[CURSEG_HOT_DATA],
>  			   si->cursec[CURSEG_HOT_DATA],
> -			   si->curzone[CURSEG_HOT_DATA]);
> -		seq_printf(s, "  - Dir   dnode: %d, %d, %d\n",
> +			   si->curzone[CURSEG_HOT_DATA],
> +			   si->dirty_seg[CURSEG_HOT_DATA],
> +			   si->full_seg[CURSEG_HOT_DATA],
> +			   si->valid_blks[CURSEG_HOT_DATA]);
> +		seq_printf(s, "  - Dir   dnode: %8d %8d %8d %10u %10u %10u\n",
>  			   si->curseg[CURSEG_HOT_NODE],
>  			   si->cursec[CURSEG_HOT_NODE],
> -			   si->curzone[CURSEG_HOT_NODE]);
> -		seq_printf(s, "  - File   dnode: %d, %d, %d\n",
> +			   si->curzone[CURSEG_HOT_NODE],
> +			   si->dirty_seg[CURSEG_HOT_NODE],
> +			   si->full_seg[CURSEG_HOT_NODE],
> +			   si->valid_blks[CURSEG_HOT_NODE]);
> +		seq_printf(s, "  - File  dnode: %8d %8d %8d %10u %10u %10u\n",
>  			   si->curseg[CURSEG_WARM_NODE],
>  			   si->cursec[CURSEG_WARM_NODE],
> -			   si->curzone[CURSEG_WARM_NODE]);
> -		seq_printf(s, "  - Indir nodes: %d, %d, %d\n",
> +			   si->curzone[CURSEG_WARM_NODE],
> +			   si->dirty_seg[CURSEG_WARM_NODE],
> +			   si->full_seg[CURSEG_WARM_NODE],
> +			   si->valid_blks[CURSEG_WARM_NODE]);
> +		seq_printf(s, "  - Indir nodes: %8d %8d %8d %10u %10u %10u\n",
>  			   si->curseg[CURSEG_COLD_NODE],
>  			   si->cursec[CURSEG_COLD_NODE],
> -			   si->curzone[CURSEG_COLD_NODE]);
> +			   si->curzone[CURSEG_COLD_NODE],
> +			   si->dirty_seg[CURSEG_COLD_NODE],
> +			   si->full_seg[CURSEG_COLD_NODE],
> +			   si->valid_blks[CURSEG_COLD_NODE]);
>  		seq_printf(s, "\n  - Valid: %d\n  - Dirty: %d\n",
>  			   si->main_area_segs - si->dirty_count -
>  			   si->prefree_count - si->free_segs,
> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
> index 72a667f1d678..70565d81320b 100644
> --- a/fs/f2fs/f2fs.h
> +++ b/fs/f2fs/f2fs.h
> @@ -3536,6 +3536,9 @@ struct f2fs_stat_info {
>  	int curseg[NR_CURSEG_TYPE];
>  	int cursec[NR_CURSEG_TYPE];
>  	int curzone[NR_CURSEG_TYPE];
> +	unsigned int dirty_seg[NR_CURSEG_TYPE];
> +	unsigned int full_seg[NR_CURSEG_TYPE];
> +	unsigned int valid_blks[NR_CURSEG_TYPE];
>  
>  	unsigned int meta_count[META_MAX];
>  	unsigned int segment_count[2];
> -- 
> 2.18.0.rc1


_______________________________________________
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: Chao Yu <yuchao0@huawei.com>
Cc: linux-f2fs-devel@lists.sourceforge.net,
	linux-kernel@vger.kernel.org, chao@kernel.org
Subject: Re: [PATCH 5/5] f2fs: show more debug info for per-temperature log
Date: Wed, 24 Jun 2020 15:31:14 -0700	[thread overview]
Message-ID: <20200624223114.GA192472@google.com> (raw)
In-Reply-To: <20200618063625.110273-5-yuchao0@huawei.com>

On 06/18, Chao Yu wrote:
> - Add to account and show per-log dirty_seg, full_seg and valid_blocks
> in debugfs.
> - reformat printed info.
> 
>     TYPE            segno    secno   zoneno  dirty_seg   full_seg  valid_blk
>   - COLD   data:     1523     1523     1523          1          0        399
>   - WARM   data:      769      769      769         20        255     133098
>   - HOT    data:      767      767      767          9          0        167
>   - Dir   dnode:       22       22       22          3          0         70
>   - File  dnode:      722      722      722         14         10       6505
>   - Indir nodes:        2        2        2          1          0          3
> 
> Signed-off-by: Chao Yu <yuchao0@huawei.com>
> ---
>  fs/f2fs/debug.c | 67 ++++++++++++++++++++++++++++++++++++++++---------
>  fs/f2fs/f2fs.h  |  3 +++
>  2 files changed, 58 insertions(+), 12 deletions(-)
> 
> diff --git a/fs/f2fs/debug.c b/fs/f2fs/debug.c
> index 0dbcb0f9c019..aa1fd2de11ba 100644
> --- a/fs/f2fs/debug.c
> +++ b/fs/f2fs/debug.c
> @@ -174,6 +174,29 @@ static void update_general_status(struct f2fs_sb_info *sbi)
>  	for (i = META_CP; i < META_MAX; i++)
>  		si->meta_count[i] = atomic_read(&sbi->meta_count[i]);
>  
> +	for (i = 0; i < NO_CHECK_TYPE; i++) {
> +		si->dirty_seg[i] = 0;
> +		si->full_seg[i] = 0;
> +		si->valid_blks[i] = 0;
> +	}
> +
> +	for (i = 0; i < MAIN_SEGS(sbi); i++) {
> +		int blks = get_seg_entry(sbi, i)->valid_blocks;
> +		int type = get_seg_entry(sbi, i)->type;
> +
> +		if (!blks)
> +			continue;
> +
> +		if (IS_CURSEG(sbi, i))
> +			continue;

How about adding current segments as well? Especially, it's hard to see any
valid blocks for cold node with this.

> +
> +		if (blks == sbi->blocks_per_seg)
> +			si->full_seg[type]++;
> +		else
> +			si->dirty_seg[type]++;
> +		si->valid_blks[type] += blks;
> +	}
> +
>  	for (i = 0; i < 2; i++) {
>  		si->segment_count[i] = sbi->segment_count[i];
>  		si->block_count[i] = sbi->block_count[i];
> @@ -329,30 +352,50 @@ static int stat_show(struct seq_file *s, void *v)
>  		seq_printf(s, "\nMain area: %d segs, %d secs %d zones\n",
>  			   si->main_area_segs, si->main_area_sections,
>  			   si->main_area_zones);
> -		seq_printf(s, "  - COLD  data: %d, %d, %d\n",
> +		seq_printf(s, "    TYPE         %8s %8s %8s %10s %10s %10s\n",
> +			   "segno", "secno", "zoneno", "dirty_seg", "full_seg", "valid_blk");
> +		seq_printf(s, "  - COLD   data: %8d %8d %8d %10u %10u %10u\n",
>  			   si->curseg[CURSEG_COLD_DATA],
>  			   si->cursec[CURSEG_COLD_DATA],
> -			   si->curzone[CURSEG_COLD_DATA]);
> -		seq_printf(s, "  - WARM  data: %d, %d, %d\n",
> +			   si->curzone[CURSEG_COLD_DATA],
> +			   si->dirty_seg[CURSEG_COLD_DATA],
> +			   si->full_seg[CURSEG_COLD_DATA],
> +			   si->valid_blks[CURSEG_COLD_DATA]);
> +		seq_printf(s, "  - WARM   data: %8d %8d %8d %10u %10u %10u\n",
>  			   si->curseg[CURSEG_WARM_DATA],
>  			   si->cursec[CURSEG_WARM_DATA],
> -			   si->curzone[CURSEG_WARM_DATA]);
> -		seq_printf(s, "  - HOT   data: %d, %d, %d\n",
> +			   si->curzone[CURSEG_WARM_DATA],
> +			   si->dirty_seg[CURSEG_WARM_DATA],
> +			   si->full_seg[CURSEG_WARM_DATA],
> +			   si->valid_blks[CURSEG_WARM_DATA]);
> +		seq_printf(s, "  - HOT    data: %8d %8d %8d %10u %10u %10u\n",
>  			   si->curseg[CURSEG_HOT_DATA],
>  			   si->cursec[CURSEG_HOT_DATA],
> -			   si->curzone[CURSEG_HOT_DATA]);
> -		seq_printf(s, "  - Dir   dnode: %d, %d, %d\n",
> +			   si->curzone[CURSEG_HOT_DATA],
> +			   si->dirty_seg[CURSEG_HOT_DATA],
> +			   si->full_seg[CURSEG_HOT_DATA],
> +			   si->valid_blks[CURSEG_HOT_DATA]);
> +		seq_printf(s, "  - Dir   dnode: %8d %8d %8d %10u %10u %10u\n",
>  			   si->curseg[CURSEG_HOT_NODE],
>  			   si->cursec[CURSEG_HOT_NODE],
> -			   si->curzone[CURSEG_HOT_NODE]);
> -		seq_printf(s, "  - File   dnode: %d, %d, %d\n",
> +			   si->curzone[CURSEG_HOT_NODE],
> +			   si->dirty_seg[CURSEG_HOT_NODE],
> +			   si->full_seg[CURSEG_HOT_NODE],
> +			   si->valid_blks[CURSEG_HOT_NODE]);
> +		seq_printf(s, "  - File  dnode: %8d %8d %8d %10u %10u %10u\n",
>  			   si->curseg[CURSEG_WARM_NODE],
>  			   si->cursec[CURSEG_WARM_NODE],
> -			   si->curzone[CURSEG_WARM_NODE]);
> -		seq_printf(s, "  - Indir nodes: %d, %d, %d\n",
> +			   si->curzone[CURSEG_WARM_NODE],
> +			   si->dirty_seg[CURSEG_WARM_NODE],
> +			   si->full_seg[CURSEG_WARM_NODE],
> +			   si->valid_blks[CURSEG_WARM_NODE]);
> +		seq_printf(s, "  - Indir nodes: %8d %8d %8d %10u %10u %10u\n",
>  			   si->curseg[CURSEG_COLD_NODE],
>  			   si->cursec[CURSEG_COLD_NODE],
> -			   si->curzone[CURSEG_COLD_NODE]);
> +			   si->curzone[CURSEG_COLD_NODE],
> +			   si->dirty_seg[CURSEG_COLD_NODE],
> +			   si->full_seg[CURSEG_COLD_NODE],
> +			   si->valid_blks[CURSEG_COLD_NODE]);
>  		seq_printf(s, "\n  - Valid: %d\n  - Dirty: %d\n",
>  			   si->main_area_segs - si->dirty_count -
>  			   si->prefree_count - si->free_segs,
> diff --git a/fs/f2fs/f2fs.h b/fs/f2fs/f2fs.h
> index 72a667f1d678..70565d81320b 100644
> --- a/fs/f2fs/f2fs.h
> +++ b/fs/f2fs/f2fs.h
> @@ -3536,6 +3536,9 @@ struct f2fs_stat_info {
>  	int curseg[NR_CURSEG_TYPE];
>  	int cursec[NR_CURSEG_TYPE];
>  	int curzone[NR_CURSEG_TYPE];
> +	unsigned int dirty_seg[NR_CURSEG_TYPE];
> +	unsigned int full_seg[NR_CURSEG_TYPE];
> +	unsigned int valid_blks[NR_CURSEG_TYPE];
>  
>  	unsigned int meta_count[META_MAX];
>  	unsigned int segment_count[2];
> -- 
> 2.18.0.rc1

  reply	other threads:[~2020-06-24 22:31 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-18  6:36 [f2fs-dev] [PATCH 1/5] f2fs: fix to wait page writeback before update Chao Yu
2020-06-18  6:36 ` Chao Yu
2020-06-18  6:36 ` [f2fs-dev] [PATCH 2/5] f2fs: add prefix for exported symbols Chao Yu
2020-06-18  6:36   ` Chao Yu
2020-06-18  6:36 ` [f2fs-dev] [PATCH 3/5] f2fs: shrink node_write lock coverage Chao Yu
2020-06-18  6:36   ` Chao Yu
2020-06-19  5:56   ` [f2fs-dev] " Jaegeuk Kim
2020-06-19  5:56     ` Jaegeuk Kim
2020-06-18  6:36 ` [f2fs-dev] [PATCH 4/5] f2fs: clean up parameter of f2fs_allocate_data_block() Chao Yu
2020-06-18  6:36   ` Chao Yu
2020-06-18  6:36 ` [f2fs-dev] [PATCH 5/5] f2fs: show more debug info for per-temperature log Chao Yu
2020-06-18  6:36   ` Chao Yu
2020-06-24 22:31   ` Jaegeuk Kim [this message]
2020-06-24 22:31     ` Jaegeuk Kim
2020-06-28  1:35     ` [f2fs-dev] " Chao Yu
2020-06-28  1:35       ` Chao Yu
2020-06-18 23:59 ` [f2fs-dev] [PATCH 1/5] f2fs: fix to wait page writeback before update Jaegeuk Kim
2020-06-18 23:59   ` Jaegeuk Kim
2020-06-19  1:44   ` [f2fs-dev] " Chao Yu
2020-06-19  1:44     ` Chao Yu
2020-06-19  5:49     ` [f2fs-dev] " Jaegeuk Kim
2020-06-19  5:49       ` Jaegeuk Kim
2020-06-19  6:44       ` [f2fs-dev] " Chao Yu
2020-06-19  6:44         ` Chao Yu
2020-06-19 22:47         ` [f2fs-dev] " Jaegeuk Kim
2020-06-19 22:47           ` Jaegeuk Kim
2020-06-20  0:52           ` [f2fs-dev] " Chao Yu
2020-06-20  0:52             ` Chao Yu
2020-06-21 16:38             ` [f2fs-dev] " Jaegeuk Kim
2020-06-21 16:38               ` Jaegeuk Kim
2020-06-22  0:51               ` [f2fs-dev] " Chao Yu
2020-06-22  0:51                 ` Chao Yu
2020-06-24 15:55                 ` [f2fs-dev] " Jaegeuk Kim
2020-06-24 15:55                   ` Jaegeuk Kim
2020-06-28  1:26                   ` [f2fs-dev] " Chao Yu
2020-06-28  1:26                     ` Chao Yu
2024-03-08  6:20           ` [f2fs-dev] " Chao Yu
2024-03-08  6:20             ` 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=20200624223114.GA192472@google.com \
    --to=jaegeuk@kernel.org \
    --cc=linux-f2fs-devel@lists.sourceforge.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=yuchao0@huawei.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.