[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20230612075250epcms2p7d2e02243caa54d4a9ceb525a2b23d555@epcms2p7>
Date: Mon, 12 Jun 2023 16:52:50 +0900
From: beomsu kim <beomsu7.kim@...sung.com>
To: Chao Yu <chao@...nel.org>,
"jaegeuk@...nel.org" <jaegeuk@...nel.org>,
"linux-f2fs-devel@...ts.sourceforge.net"
<linux-f2fs-devel@...ts.sourceforge.net>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Yonggil Song <yonggil.song@...sung.com>,
Seokhwan Kim <sukka.kim@...sung.com>,
Daejun Park <daejun7.park@...sung.com>,
Seonghun Kim <seonghun-sui.kim@...sung.com>
Subject: RE:(2) [PATCH] f2fs: including waf data in f2fs status information
On 2023/6/2 12:48, beomsu kim wrote:
>> 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@...sung.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..6eab11b0610d 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);
>> + int j;
>> + unsigned long long waf = 0;
>> + unsigned long long data_written_to_storage = 0;
>> + unsigned long long data_written_by_user = 0;
>>
>> if (!sbi->iostat_enable)
>> return 0;
>>
>> + for (j = FS_DATA_IO; j <= FS_CP_META_IO; j++)
>
>FS_CDATA_IO is redundant?
I agree, and modified it.
>
>> + data_written_to_storage += sbi->iostat_bytes[j];
>> + for (j = FS_DATA_IO; j <= FS_CDATA_IO; j++)
>
>Just needs to include APP_WRITE_IO and APP_MAPPED_IO?
There is a slight time interval between requests in the form of APP_*_IO until they become requests in the form of FS_*_IO. On the other hand, we get the amount of file system meta data from FS_*_IO for 'data_written_to_storage'. So, If we use APP_*_IO for 'data_written_by_user', the 'waf' value returned during this time interval might have some difference from the actual value.
>
>Thanks,
>
>> + data_written_by_user += 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;
>> }
>>
Powered by blists - more mailing lists