Messages in this thread Patch in this message | | | Subject | [PATCH] f2fs: including waf data in f2fs status information | From | beomsu kim <> | Date | Wed, 31 May 2023 17:20:38 +0900 |
| |
When evaluating in f2fs, it takes much time to obtain waf data. This patch helps to obtain waf data without calcluation.
Signed-off-by: Beomsu Kim <beomsu7.kim@samsung.com> --- fs/f2fs/iostat.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
diff --git a/fs/f2fs/iostat.c b/fs/f2fs/iostat.c index 3d5bfb1ad585..6ae9659d69e7 100644 --- a/fs/f2fs/iostat.c +++ b/fs/f2fs/iostat.c @@ -34,10 +34,22 @@ int __maybe_unused iostat_info_seq_show(struct seq_file *seq, void *offset) { struct super_block *sb = seq->private; struct f2fs_sb_info *sbi = F2FS_SB(sb); + struct f2fs_stat_info *si = F2FS_STAT(sbi); + int j; + unsigned long long waf = 0; + unsigned long long data_written_to_storage = 0, data_written_by_user = 0; if (!sbi->iostat_enable) return 0; + for (j = FS_DATA_IO; j <= FS_CP_META_IO; j++) + data_written_to_storage += si->sbi->iostat_bytes[j]; + for (j = FS_DATA_IO; j <= FS_CDATA_IO; j++) + data_written_by_user += si->sbi->iostat_bytes[j]; + + if (data_written_by_user > 0) + waf = data_written_to_storage * 100 / data_written_by_user; + seq_printf(seq, "time: %-16llu\n", ktime_get_real_seconds()); seq_printf(seq, "\t\t\t%-16s %-16s %-16s\n", "io_bytes", "count", "avg_bytes"); @@ -81,6 +93,10 @@ int __maybe_unused iostat_info_seq_show(struct seq_file *seq, void *offset) IOSTAT_INFO_SHOW("fs discard", FS_DISCARD_IO); IOSTAT_INFO_SHOW("fs flush", FS_FLUSH_IO); + /* print waf */ + seq_puts(seq, "[WAF]\n"); + seq_printf(seq, "fs waf: %llu.%02llu\n", waf / 100, waf % 100); + return 0; } -- 2.17.1
| |