* [PATCH 0/1] number_ios and io_size behave differently for trimwrite [not found] <CGME20220913105531epcas5p3576d018441951d5555544a2d5ddefab7@epcas5p3.samsung.com> @ 2022-09-13 10:45 ` Ankit Kumar 2022-09-13 10:45 ` [PATCH 1/1] backend: number of ios not as expected " Ankit Kumar 2022-09-13 21:03 ` [PATCH 0/1] number_ios and io_size behave differently " Jens Axboe 0 siblings, 2 replies; 5+ messages in thread From: Ankit Kumar @ 2022-09-13 10:45 UTC (permalink / raw) To: axboe; +Cc: fio, vincentfu, Ankit Kumar Add changes for number_ios such that we actually do trim and then writes for those number of I/O's. This will make the behaviour similar to io_size. Update the documentation to clarify the exact behaviour for trimwrite workloads. Ankit Kumar (1): backend: number of ios not as expected for trimwrite HOWTO.rst | 6 +++++- backend.c | 6 ++++-- fio.1 | 5 ++++- 3 files changed, 13 insertions(+), 4 deletions(-) -- 2.17.1 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 1/1] backend: number of ios not as expected for trimwrite 2022-09-13 10:45 ` [PATCH 0/1] number_ios and io_size behave differently for trimwrite Ankit Kumar @ 2022-09-13 10:45 ` Ankit Kumar 2022-09-13 16:07 ` Vincent Fu 2022-09-13 21:03 ` [PATCH 0/1] number_ios and io_size behave differently " Jens Axboe 1 sibling, 1 reply; 5+ messages in thread From: Ankit Kumar @ 2022-09-13 10:45 UTC (permalink / raw) To: axboe; +Cc: fio, vincentfu, Ankit Kumar number_ios should be twice for trimwrite, just like size or io_size. Update the documentation for "rw=trimwrite" to explain the changes. Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com> --- HOWTO.rst | 6 +++++- backend.c | 6 ++++-- fio.1 | 5 ++++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/HOWTO.rst b/HOWTO.rst index 2c6c6dbe..924f5ed9 100644 --- a/HOWTO.rst +++ b/HOWTO.rst @@ -1129,7 +1129,11 @@ I/O type Random mixed reads and writes. **trimwrite** Sequential trim+write sequences. Blocks will be trimmed first, - then the same blocks will be written to. + then the same blocks will be written to. So if ``io_size=64K`` + is specified, Fio will trim a total of 64K bytes and also + write 64K bytes on the same trimmed blocks. This behaviour + will be consistent with ``number_ios`` or other Fio options + limiting the total bytes or number of I/O's. Fio defaults to read if the option is not specified. For the mixed I/O types, the default is to split them 50/50. For certain types of I/O the diff --git a/backend.c b/backend.c index fe614f6e..ec535bcc 100644 --- a/backend.c +++ b/backend.c @@ -971,9 +971,11 @@ static void do_io(struct thread_data *td, uint64_t *bytes_done) total_bytes += td->o.size; /* In trimwrite mode, each byte is trimmed and then written, so - * allow total_bytes to be twice as big */ - if (td_trimwrite(td)) + * allow total_bytes or number of ios to be twice as big */ + if (td_trimwrite(td)) { total_bytes += td->total_io_size; + td->o.number_ios *= 2; + } while ((td->o.read_iolog_file && !flist_empty(&td->io_log_list)) || (!flist_empty(&td->trim_list)) || !io_issue_bytes_exceeded(td) || diff --git a/fio.1 b/fio.1 index 67d7c710..c67bd464 100644 --- a/fio.1 +++ b/fio.1 @@ -900,7 +900,10 @@ Random mixed reads and writes. .TP .B trimwrite Sequential trim+write sequences. Blocks will be trimmed first, -then the same blocks will be written to. +then the same blocks will be written to. So if `io_size=64K' is specified, +Fio will trim a total of 64K bytes and also write 64K bytes on the same +trimmed blocks. This behaviour will be consistent with `number_ios' or +other Fio options limiting the total bytes or number of I/O's. .RE .P Fio defaults to read if the option is not specified. For the mixed I/O -- 2.17.1 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH 1/1] backend: number of ios not as expected for trimwrite 2022-09-13 10:45 ` [PATCH 1/1] backend: number of ios not as expected " Ankit Kumar @ 2022-09-13 16:07 ` Vincent Fu 2022-09-13 21:02 ` Jens Axboe 0 siblings, 1 reply; 5+ messages in thread From: Vincent Fu @ 2022-09-13 16:07 UTC (permalink / raw) To: Ankit Kumar, axboe; +Cc: fio On 9/13/22 06:45, Ankit Kumar wrote: > number_ios should be twice for trimwrite, just like size or > io_size. Update the documentation for "rw=trimwrite" to explain the > changes. > > Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com> > --- > HOWTO.rst | 6 +++++- > backend.c | 6 ++++-- > fio.1 | 5 ++++- > 3 files changed, 13 insertions(+), 4 deletions(-) > > diff --git a/HOWTO.rst b/HOWTO.rst > index 2c6c6dbe..924f5ed9 100644 > --- a/HOWTO.rst > +++ b/HOWTO.rst > @@ -1129,7 +1129,11 @@ I/O type > Random mixed reads and writes. > **trimwrite** > Sequential trim+write sequences. Blocks will be trimmed first, > - then the same blocks will be written to. > + then the same blocks will be written to. So if ``io_size=64K`` > + is specified, Fio will trim a total of 64K bytes and also > + write 64K bytes on the same trimmed blocks. This behaviour > + will be consistent with ``number_ios`` or other Fio options > + limiting the total bytes or number of I/O's. > > Fio defaults to read if the option is not specified. For the mixed I/O > types, the default is to split them 50/50. For certain types of I/O the > diff --git a/backend.c b/backend.c > index fe614f6e..ec535bcc 100644 > --- a/backend.c > +++ b/backend.c > @@ -971,9 +971,11 @@ static void do_io(struct thread_data *td, uint64_t *bytes_done) > total_bytes += td->o.size; > > /* In trimwrite mode, each byte is trimmed and then written, so > - * allow total_bytes to be twice as big */ > - if (td_trimwrite(td)) > + * allow total_bytes or number of ios to be twice as big */ > + if (td_trimwrite(td)) { > total_bytes += td->total_io_size; > + td->o.number_ios *= 2; > + } > > while ((td->o.read_iolog_file && !flist_empty(&td->io_log_list)) || > (!flist_empty(&td->trim_list)) || !io_issue_bytes_exceeded(td) || > diff --git a/fio.1 b/fio.1 > index 67d7c710..c67bd464 100644 > --- a/fio.1 > +++ b/fio.1 > @@ -900,7 +900,10 @@ Random mixed reads and writes. > .TP > .B trimwrite > Sequential trim+write sequences. Blocks will be trimmed first, > -then the same blocks will be written to. > +then the same blocks will be written to. So if `io_size=64K' is specified, > +Fio will trim a total of 64K bytes and also write 64K bytes on the same > +trimmed blocks. This behaviour will be consistent with `number_ios' or > +other Fio options limiting the total bytes or number of I/O's. > .RE > .P > Fio defaults to read if the option is not specified. For the mixed I/O This is the right behavior because io_size and number_ios should be consistent. But this will require folks who have worked around the inconsistent behavior to adjust. I'll let Jens make the final call on this one. Reviewed-by: Vincent Fu <vincent.fu@samsung.com> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 1/1] backend: number of ios not as expected for trimwrite 2022-09-13 16:07 ` Vincent Fu @ 2022-09-13 21:02 ` Jens Axboe 0 siblings, 0 replies; 5+ messages in thread From: Jens Axboe @ 2022-09-13 21:02 UTC (permalink / raw) To: Vincent Fu, Ankit Kumar; +Cc: fio On 9/13/22 10:07 AM, Vincent Fu wrote: > On 9/13/22 06:45, Ankit Kumar wrote: >> number_ios should be twice for trimwrite, just like size or >> io_size. Update the documentation for "rw=trimwrite" to explain the >> changes. >> >> Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com> >> --- >> HOWTO.rst | 6 +++++- >> backend.c | 6 ++++-- >> fio.1 | 5 ++++- >> 3 files changed, 13 insertions(+), 4 deletions(-) >> >> diff --git a/HOWTO.rst b/HOWTO.rst >> index 2c6c6dbe..924f5ed9 100644 >> --- a/HOWTO.rst >> +++ b/HOWTO.rst >> @@ -1129,7 +1129,11 @@ I/O type >> Random mixed reads and writes. >> **trimwrite** >> Sequential trim+write sequences. Blocks will be trimmed first, >> - then the same blocks will be written to. >> + then the same blocks will be written to. So if ``io_size=64K`` >> + is specified, Fio will trim a total of 64K bytes and also >> + write 64K bytes on the same trimmed blocks. This behaviour >> + will be consistent with ``number_ios`` or other Fio options >> + limiting the total bytes or number of I/O's. >> Fio defaults to read if the option is not specified. For the mixed I/O >> types, the default is to split them 50/50. For certain types of I/O the >> diff --git a/backend.c b/backend.c >> index fe614f6e..ec535bcc 100644 >> --- a/backend.c >> +++ b/backend.c >> @@ -971,9 +971,11 @@ static void do_io(struct thread_data *td, uint64_t *bytes_done) >> total_bytes += td->o.size; >> /* In trimwrite mode, each byte is trimmed and then written, so >> - * allow total_bytes to be twice as big */ >> - if (td_trimwrite(td)) >> + * allow total_bytes or number of ios to be twice as big */ >> + if (td_trimwrite(td)) { >> total_bytes += td->total_io_size; >> + td->o.number_ios *= 2; >> + } >> while ((td->o.read_iolog_file && !flist_empty(&td->io_log_list)) || >> (!flist_empty(&td->trim_list)) || !io_issue_bytes_exceeded(td) || >> diff --git a/fio.1 b/fio.1 >> index 67d7c710..c67bd464 100644 >> --- a/fio.1 >> +++ b/fio.1 >> @@ -900,7 +900,10 @@ Random mixed reads and writes. >> .TP >> .B trimwrite >> Sequential trim+write sequences. Blocks will be trimmed first, >> -then the same blocks will be written to. >> +then the same blocks will be written to. So if `io_size=64K' is specified, >> +Fio will trim a total of 64K bytes and also write 64K bytes on the same >> +trimmed blocks. This behaviour will be consistent with `number_ios' or >> +other Fio options limiting the total bytes or number of I/O's. >> .RE >> .P >> Fio defaults to read if the option is not specified. For the mixed I/O > > This is the right behavior because io_size and number_ios should be consistent. But this will require folks who have worked around the inconsistent behavior to adjust. I'll let Jens make the final call on this one. > > Reviewed-by: Vincent Fu <vincent.fu@samsung.com> For cases like this, I do still prefer to fix it up so that it's consistent. -- Jens Axboe ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 0/1] number_ios and io_size behave differently for trimwrite 2022-09-13 10:45 ` [PATCH 0/1] number_ios and io_size behave differently for trimwrite Ankit Kumar 2022-09-13 10:45 ` [PATCH 1/1] backend: number of ios not as expected " Ankit Kumar @ 2022-09-13 21:03 ` Jens Axboe 1 sibling, 0 replies; 5+ messages in thread From: Jens Axboe @ 2022-09-13 21:03 UTC (permalink / raw) To: Ankit Kumar; +Cc: vincentfu, fio On Tue, 13 Sep 2022 16:15:26 +0530, Ankit Kumar wrote: > Add changes for number_ios such that we actually do trim and then writes > for those number of I/O's. This will make the behaviour similar to > io_size. > Update the documentation to clarify the exact behaviour for trimwrite > workloads. > > Ankit Kumar (1): > backend: number of ios not as expected for trimwrite > > [...] Applied, thanks! [1/1] backend: number of ios not as expected for trimwrite commit: 08996af41b2566565cbcdee71766030a2c8ba377 Best regards, -- Jens Axboe ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2022-09-13 21:04 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <CGME20220913105531epcas5p3576d018441951d5555544a2d5ddefab7@epcas5p3.samsung.com>
2022-09-13 10:45 ` [PATCH 0/1] number_ios and io_size behave differently for trimwrite Ankit Kumar
2022-09-13 10:45 ` [PATCH 1/1] backend: number of ios not as expected " Ankit Kumar
2022-09-13 16:07 ` Vincent Fu
2022-09-13 21:02 ` Jens Axboe
2022-09-13 21:03 ` [PATCH 0/1] number_ios and io_size behave differently " Jens Axboe
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.