projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] Improve time accounting for a job
[fio.git]
/
fio.c
diff --git
a/fio.c
b/fio.c
index a175be7a1f6bc07c13107d5f8be9152e14c67aea..28864bdf72ebf8c6f5d610e5e068c0d0cab5d506 100644
(file)
--- a/
fio.c
+++ b/
fio.c
@@
-605,6
+605,7
@@
static void clear_io_state(struct thread_data *td)
*/
static void *thread_main(void *data)
{
*/
static void *thread_main(void *data)
{
+ unsigned long long runtime[2];
struct thread_data *td = data;
if (!td->use_thread)
struct thread_data *td = data;
if (!td->use_thread)
@@
-658,11
+659,12
@@
static void *thread_main(void *data)
if (open_files(td))
goto err;
if (open_files(td))
goto err;
- fio_gettime(&td->epoch, NULL);
-
if (td->exec_prerun)
system(td->exec_prerun);
if (td->exec_prerun)
system(td->exec_prerun);
+ fio_gettime(&td->epoch, NULL);
+
+ runtime[0] = runtime[1] = 0;
while (td->loops--) {
getrusage(RUSAGE_SELF, &td->ru_start);
fio_gettime(&td->start, NULL);
while (td->loops--) {
getrusage(RUSAGE_SELF, &td->ru_start);
fio_gettime(&td->start, NULL);
@@
-679,9
+681,9
@@
static void *thread_main(void *data)
else
do_io(td);
else
do_io(td);
-
td->runtime[td->ddir] += m
time_since_now(&td->start);
+
runtime[td->ddir] += u
time_since_now(&td->start);
if (td_rw(td) && td->io_bytes[td->ddir ^ 1])
if (td_rw(td) && td->io_bytes[td->ddir ^ 1])
-
td->runtime[td->ddir ^ 1] = td->
runtime[td->ddir];
+
runtime[td->ddir ^ 1] =
runtime[td->ddir];
update_rusage_stat(td);
update_rusage_stat(td);
@@
-696,12
+698,16
@@
static void *thread_main(void *data)
do_verify(td);
do_verify(td);
-
td->runtime[DDIR_READ] += m
time_since_now(&td->start);
+
runtime[DDIR_READ] += u
time_since_now(&td->start);
if (td->error || td->terminate)
break;
}
if (td->error || td->terminate)
break;
}
+ fio_gettime(&td->end_time, NULL);
+ td->runtime[0] = runtime[0] / 1000;
+ td->runtime[1] = runtime[1] / 1000;
+
if (td->bw_log)
finish_log(td, td->bw_log, "bw");
if (td->slat_log)
if (td->bw_log)
finish_log(td, td->bw_log, "bw");
if (td->slat_log)