* [PATCH 0/1] fix runtime when used with thinktime
[not found] <CGME20230217070403epcas5p1f2c7eec62578c28429e8029681f7d341@epcas5p1.samsung.com>
@ 2023-02-17 7:03 ` Ankit Kumar
[not found] ` <CGME20230217070403epcas5p2f01122718255b22f003ba9f77f92f3b2@epcas5p2.samsung.com>
2023-02-18 2:52 ` [PATCH 0/1] " Jens Axboe
0 siblings, 2 replies; 3+ messages in thread
From: Ankit Kumar @ 2023-02-17 7:03 UTC (permalink / raw)
To: axboe; +Cc: fio, vincentfu, Ankit Kumar
Runtime for fio jobs when used in conjuction with thinktime,
thinktime_iotime and thinktime_spin were sometimes more than
what is specified. Added a fix so that fio doesn't spin or sleep
for any duration beyond runtime.
For the first cycle when we specify thinktime and thinktime_iotime,
fio starts by doing I/O for thinktime + thinktime_iotime, which
should just be for thinktime_iotime. Addedd a fix for that.
Ankit Kumar (1):
backend: fix runtime when used with thinktime
backend.c | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
--
2.17.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH 1/1] backend: fix runtime when used with thinktime
[not found] ` <CGME20230217070403epcas5p2f01122718255b22f003ba9f77f92f3b2@epcas5p2.samsung.com>
@ 2023-02-17 7:03 ` Ankit Kumar
0 siblings, 0 replies; 3+ messages in thread
From: Ankit Kumar @ 2023-02-17 7:03 UTC (permalink / raw)
To: axboe; +Cc: fio, vincentfu, Ankit Kumar
Runtime for fio jobs when used in conjuction with thinktime,
thinktime_iotime and thinktime_spin were sometimes more than
what is specified. Add a fix so that fio doesn't spin or sleep
for any duration beyond runtime.
For the first cycle fio starts by doing I/O for
thinktime + thinktime_iotime, which should just be for
thinktime_iotime. Add a fix for that.
Signed-off-by: Ankit Kumar <ankit.kumar@samsung.com>
---
backend.c | 24 ++++++++++++++++++++----
1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/backend.c b/backend.c
index 0ccc7c2b..995be032 100644
--- a/backend.c
+++ b/backend.c
@@ -866,6 +866,7 @@ static void handle_thinktime(struct thread_data *td, enum fio_ddir ddir,
struct timespec *time)
{
unsigned long long b;
+ unsigned long long runtime_left;
uint64_t total;
int left;
struct timespec now;
@@ -874,7 +875,7 @@ static void handle_thinktime(struct thread_data *td, enum fio_ddir ddir,
if (td->o.thinktime_iotime) {
fio_gettime(&now, NULL);
if (utime_since(&td->last_thinktime, &now)
- >= td->o.thinktime_iotime + td->o.thinktime) {
+ >= td->o.thinktime_iotime) {
stall = true;
} else if (!fio_option_is_set(&td->o, thinktime_blocks)) {
/*
@@ -897,11 +898,24 @@ static void handle_thinktime(struct thread_data *td, enum fio_ddir ddir,
io_u_quiesce(td);
+ left = td->o.thinktime_spin;
+ if (td->o.timeout) {
+ runtime_left = td->o.timeout - utime_since_now(&td->epoch);
+ if (runtime_left < (unsigned long long)left)
+ left = runtime_left;
+ }
+
total = 0;
- if (td->o.thinktime_spin)
- total = usec_spin(td->o.thinktime_spin);
+ if (left)
+ total = usec_spin(left);
left = td->o.thinktime - total;
+ if (td->o.timeout) {
+ runtime_left = td->o.timeout - utime_since_now(&td->epoch);
+ if (runtime_left < (unsigned long long)left)
+ left = runtime_left;
+ }
+
if (left)
total += usec_sleep(td, left);
@@ -930,8 +944,10 @@ static void handle_thinktime(struct thread_data *td, enum fio_ddir ddir,
fio_gettime(time, NULL);
td->last_thinktime_blocks = b;
- if (td->o.thinktime_iotime)
+ if (td->o.thinktime_iotime) {
+ fio_gettime(&now, NULL);
td->last_thinktime = now;
+ }
}
/*
--
2.17.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH 0/1] fix runtime when used with thinktime
2023-02-17 7:03 ` [PATCH 0/1] fix runtime when used with thinktime Ankit Kumar
[not found] ` <CGME20230217070403epcas5p2f01122718255b22f003ba9f77f92f3b2@epcas5p2.samsung.com>
@ 2023-02-18 2:52 ` Jens Axboe
1 sibling, 0 replies; 3+ messages in thread
From: Jens Axboe @ 2023-02-18 2:52 UTC (permalink / raw)
To: Ankit Kumar; +Cc: fio, vincentfu
On Fri, 17 Feb 2023 12:33:21 +0530, Ankit Kumar wrote:
> Runtime for fio jobs when used in conjuction with thinktime,
> thinktime_iotime and thinktime_spin were sometimes more than
> what is specified. Added a fix so that fio doesn't spin or sleep
> for any duration beyond runtime.
>
> For the first cycle when we specify thinktime and thinktime_iotime,
> fio starts by doing I/O for thinktime + thinktime_iotime, which
> should just be for thinktime_iotime. Addedd a fix for that.
>
> [...]
Applied, thanks!
[1/1] backend: fix runtime when used with thinktime
commit: f9fc7a27cae5ea2dbb310c05f7b693c68ba15537
Best regards,
--
Jens Axboe
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-02-18 2:53 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <CGME20230217070403epcas5p1f2c7eec62578c28429e8029681f7d341@epcas5p1.samsung.com>
2023-02-17 7:03 ` [PATCH 0/1] fix runtime when used with thinktime Ankit Kumar
[not found] ` <CGME20230217070403epcas5p2f01122718255b22f003ba9f77f92f3b2@epcas5p2.samsung.com>
2023-02-17 7:03 ` [PATCH 1/1] backend: " Ankit Kumar
2023-02-18 2:52 ` [PATCH 0/1] " Jens Axboe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).