X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=backend.c;h=68540abb9a2c1bd80c346d311f94646b464e2ff9;hb=f302710c4b7dd09fa6beb61a983345b2eda2b8d4;hp=d1d55718b32ecb76009c6adc3484decee2f3a626;hpb=25f488581e510c1b440f2e76842ec23f3dad7b57;p=fio.git diff --git a/backend.c b/backend.c index d1d55718..68540abb 100644 --- a/backend.c +++ b/backend.c @@ -53,6 +53,7 @@ #include "lib/getrusage.h" #include "idletime.h" #include "err.h" +#include "lib/tp.h" static pthread_t disk_util_thread; static struct fio_mutex *disk_thread_mutex; @@ -1270,11 +1271,6 @@ static void *thread_main(void *data) } else td->pid = gettid(); - /* - * fio_time_init() may not have been called yet if running as a server - */ - fio_time_init(); - fio_local_clock_init(o->use_thread); dprint(FD_PROCESS, "jobs pid=%d started\n", (int) td->pid); @@ -1448,6 +1444,9 @@ static void *thread_main(void *data) goto err; } + if (td->flags & TD_F_COMPRESS_LOG) + tp_init(&td->tp_data); + fio_verify_init(td); fio_gettime(&td->epoch, NULL); @@ -1529,6 +1528,9 @@ static void *thread_main(void *data) fio_writeout_logs(td); + if (td->flags & TD_F_COMPRESS_LOG) + tp_exit(&td->tp_data); + if (o->exec_postrun) exec_string(o, o->exec_postrun, (const char *)"postrun"); @@ -1580,7 +1582,7 @@ static int fork_main(int shmid, int offset) struct thread_data *td; void *data, *ret; -#ifndef __hpux +#if !defined(__hpux) && !defined(CONFIG_NO_SHM) data = shmat(shmid, NULL, 0); if (data == (void *) -1) { int __err = errno; @@ -2025,9 +2027,13 @@ int fio_backend(void) return 0; if (write_bw_log) { - setup_log(&agg_io_log[DDIR_READ], 0, IO_LOG_TYPE_BW); - setup_log(&agg_io_log[DDIR_WRITE], 0, IO_LOG_TYPE_BW); - setup_log(&agg_io_log[DDIR_TRIM], 0, IO_LOG_TYPE_BW); + struct log_params p = { + .log_type = IO_LOG_TYPE_BW, + }; + + setup_log(&agg_io_log[DDIR_READ], &p, "agg-read_bw.log"); + setup_log(&agg_io_log[DDIR_WRITE], &p, "agg-write_bw.log"); + setup_log(&agg_io_log[DDIR_TRIM], &p, "agg-trim_bw.log"); } startup_mutex = fio_mutex_init(FIO_MUTEX_LOCKED); @@ -2046,11 +2052,14 @@ int fio_backend(void) if (!fio_abort) { show_run_stats(); if (write_bw_log) { - __finish_log(agg_io_log[DDIR_READ], "agg-read_bw.log"); - __finish_log(agg_io_log[DDIR_WRITE], - "agg-write_bw.log"); - __finish_log(agg_io_log[DDIR_TRIM], - "agg-write_bw.log"); + int i; + + for (i = 0; i < DDIR_RWDIR_CNT; i++) { + struct io_log *log = agg_io_log[i]; + + flush_log(log); + free_log(log); + } } }