First step for group reporting
Put most of the stats into a dedicated structure, so we can
later share such a structure between threads.
Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
diff --git a/fio.h b/fio.h
index 259166f..38de5e3 100644
--- a/fio.h
+++ b/fio.h
@@ -225,6 +225,31 @@
unsigned int unlink;
};
+struct thread_stat {
+ struct io_log *slat_log;
+ struct io_log *clat_log;
+ struct io_log *bw_log;
+
+ /*
+ * bandwidth and latency stats
+ */
+ struct io_stat clat_stat[2]; /* completion latency */
+ struct io_stat slat_stat[2]; /* submission latency */
+ struct io_stat bw_stat[2]; /* bandwidth stats */
+
+ unsigned long long stat_io_bytes[2];
+ struct timeval stat_sample_time[2];
+
+ /*
+ * fio system usage accounting
+ */
+ struct rusage ru_start;
+ struct rusage ru_end;
+ unsigned long usr_time;
+ unsigned long sys_time;
+ unsigned long ctx;
+};
+
/*
* How many depth levels to log
*/
@@ -243,6 +268,7 @@
pthread_t thread;
int thread_number;
int groupid;
+ struct thread_stat ts;
enum fio_filetype filetype;
struct fio_file *files;
unsigned int nr_files;
@@ -357,8 +383,8 @@
unsigned long io_issues[2];
unsigned long long io_blocks[2];
unsigned long long io_bytes[2];
- unsigned long long zone_bytes;
unsigned long long this_io_bytes[2];
+ unsigned long long zone_bytes;
volatile int mutex;
/*
@@ -372,34 +398,11 @@
unsigned int cpuload;
unsigned int cpucycle;
- /*
- * bandwidth and latency stats
- */
- struct io_stat clat_stat[2]; /* completion latency */
- struct io_stat slat_stat[2]; /* submission latency */
- struct io_stat bw_stat[2]; /* bandwidth stats */
-
- unsigned long long stat_io_bytes[2];
- struct timeval stat_sample_time[2];
-
- struct io_log *slat_log;
- struct io_log *clat_log;
- struct io_log *bw_log;
-
struct timeval start; /* start of this loop */
struct timeval epoch; /* time job was started */
struct timeval end_time;/* time job ended */
/*
- * fio system usage accounting
- */
- struct rusage ru_start;
- struct rusage ru_end;
- unsigned long usr_time;
- unsigned long sys_time;
- unsigned long ctx;
-
- /*
* read/write mixed workload state
*/
os_random_state_t rwmix_state;