The following changes since commit 988d97bac90c9ff3ee40a8ccd588fdf78f19320d:
client/server: percentile_precision wasn't net converted (2014-11-07 18:47:41
-0700)
are available in the git repository at:
git://git.kernel.dk/fio.git master
for you to fetch changes up to e5437a073e658e8154b9e87bab5c7b3b06ed4255:
Fix for a race when fio prints I/O statistics periodically (2014-11-09
20:24:14 -0700)
----------------------------------------------------------------
Vasily Tarasov (1):
Fix for a race when fio prints I/O statistics periodically
backend.c | 17 ++++++++++-------
stat.c | 2 +-
stat.h | 2 ++
3 files changed, 13 insertions(+), 8 deletions(-)
---
Diff of recent changes:
diff --git a/backend.c b/backend.c
index c0b446a..59a14d1 100644
--- a/backend.c
+++ b/backend.c
@@ -1484,18 +1484,21 @@ static void *thread_main(void *data)
clear_state = 1;
+ fio_mutex_down(stat_mutex);
if (td_read(td) && td->io_bytes[DDIR_READ]) {
- elapsed = utime_since_now(&td->start);
+ elapsed = mtime_since_now(&td->start);
td->ts.runtime[DDIR_READ] += elapsed;
}
if (td_write(td) && td->io_bytes[DDIR_WRITE]) {
- elapsed = utime_since_now(&td->start);
+ elapsed = mtime_since_now(&td->start);
td->ts.runtime[DDIR_WRITE] += elapsed;
}
if (td_trim(td) && td->io_bytes[DDIR_TRIM]) {
- elapsed = utime_since_now(&td->start);
+ elapsed = mtime_since_now(&td->start);
td->ts.runtime[DDIR_TRIM] += elapsed;
}
+ fio_gettime(&td->start, NULL);
+ fio_mutex_up(stat_mutex);
if (td->error || td->terminate)
break;
@@ -1511,16 +1514,16 @@ static void *thread_main(void *data)
do_verify(td, verify_bytes);
- td->ts.runtime[DDIR_READ] += utime_since_now(&td->start);
+ fio_mutex_down(stat_mutex);
+ td->ts.runtime[DDIR_READ] += mtime_since_now(&td->start);
+ fio_gettime(&td->start, NULL);
+ fio_mutex_up(stat_mutex);
if (td->error || td->terminate)
break;
}
update_rusage_stat(td);
- td->ts.runtime[DDIR_READ] = (td->ts.runtime[DDIR_READ] + 999) / 1000;
- td->ts.runtime[DDIR_WRITE] = (td->ts.runtime[DDIR_WRITE] + 999) / 1000;
- td->ts.runtime[DDIR_TRIM] = (td->ts.runtime[DDIR_TRIM] + 999) / 1000;
td->ts.total_run_time = mtime_since_now(&td->epoch);
td->ts.io_bytes[DDIR_READ] = td->io_bytes[DDIR_READ];
td->ts.io_bytes[DDIR_WRITE] = td->io_bytes[DDIR_WRITE];
diff --git a/stat.c b/stat.c
index 84d9eef..1bfbbeb 100644
--- a/stat.c
+++ b/stat.c
@@ -14,7 +14,7 @@
#include "lib/getrusage.h"
#include "idletime.h"
-static struct fio_mutex *stat_mutex;
+struct fio_mutex *stat_mutex;
void update_rusage_stat(struct thread_data *td)
{
diff --git a/stat.h b/stat.h
index 8aefe03..8b4416c 100644
--- a/stat.h
+++ b/stat.h
@@ -214,6 +214,8 @@ struct jobs_eta {
uint8_t run_str[];
} __attribute__((packed));
+extern struct fio_mutex *stat_mutex;
+
extern struct jobs_eta *get_jobs_eta(int force, size_t *size);
extern void stat_init(void);
--
To unsubscribe from this list: send the line "unsubscribe fio" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html