fio.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).