X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=stat.h;h=9320c6bd2d02c075aeaa625775df345b79430712;hb=f07528f0629efa0c55bbdb1bdcc9dfdacc32fb47;hp=c209ab6c7a96ab67e59842c0e8e21a3d37212a3f;hpb=4c515ab4591acc7358e5886f841c635b62ebf19c;p=fio.git diff --git a/stat.h b/stat.h index c209ab6c..9320c6bd 100644 --- a/stat.h +++ b/stat.h @@ -3,6 +3,8 @@ #include "iolog.h" #include "lib/output_buffer.h" +#include "diskutil.h" +#include "json.h" struct group_run_stats { uint64_t max_run[DDIR_RWDIR_CNT], min_run[DDIR_RWDIR_CNT]; @@ -237,6 +239,11 @@ struct thread_stat { fio_fp64_t ss_deviation; fio_fp64_t ss_criterion; + uint64_t io_u_plat_high_prio[DDIR_RWDIR_CNT][FIO_IO_U_PLAT_NR] __attribute__((aligned(8)));; + uint64_t io_u_plat_prio[DDIR_RWDIR_CNT][FIO_IO_U_PLAT_NR]; + struct io_stat clat_high_prio_stat[DDIR_RWDIR_CNT] __attribute__((aligned(8))); + struct io_stat clat_prio_stat[DDIR_RWDIR_CNT]; + union { uint64_t *ss_iops_data; uint64_t pad4; @@ -258,13 +265,15 @@ struct thread_stat { uint32_t nr_pending; \ uint32_t nr_setting_up; \ \ - uint64_t m_rate[DDIR_RWDIR_CNT], t_rate[DDIR_RWDIR_CNT]; \ + uint64_t m_rate[DDIR_RWDIR_CNT]; \ + uint64_t t_rate[DDIR_RWDIR_CNT]; \ uint64_t rate[DDIR_RWDIR_CNT]; \ - uint32_t m_iops[DDIR_RWDIR_CNT] __attribute__((packed)); \ - uint32_t t_iops[DDIR_RWDIR_CNT] __attribute__((packed)); \ - uint32_t iops[DDIR_RWDIR_CNT] __attribute__((packed)); \ - uint64_t elapsed_sec __attribute__((packed)); \ - uint64_t eta_sec __attribute__((packed)); \ + uint32_t m_iops[DDIR_RWDIR_CNT]; \ + uint32_t t_iops[DDIR_RWDIR_CNT]; \ + uint32_t iops[DDIR_RWDIR_CNT]; \ + uint32_t pad; \ + uint64_t elapsed_sec; \ + uint64_t eta_sec; \ uint32_t is_pow2; \ uint32_t unit_base; \ \ @@ -276,6 +285,7 @@ struct thread_stat { * Network 'copy' of run_str[] \ */ \ uint32_t nr_threads; \ + uint32_t pad2; \ uint8_t run_str[]; \ } @@ -318,20 +328,25 @@ extern void update_rusage_stat(struct thread_data *); extern void clear_rusage_stat(struct thread_data *); extern void add_lat_sample(struct thread_data *, enum fio_ddir, unsigned long long, - unsigned long long, uint64_t); + unsigned long long, uint64_t, uint8_t); extern void add_clat_sample(struct thread_data *, enum fio_ddir, unsigned long long, - unsigned long long, uint64_t); + unsigned long long, uint64_t, uint8_t); extern void add_slat_sample(struct thread_data *, enum fio_ddir, unsigned long, - unsigned long long, uint64_t); -extern void add_agg_sample(union io_sample_data, enum fio_ddir, unsigned long long); + unsigned long long, uint64_t, uint8_t); +extern void add_agg_sample(union io_sample_data, enum fio_ddir, unsigned long long bs, + uint8_t priority_bit); extern void add_iops_sample(struct thread_data *, struct io_u *, unsigned int); extern void add_bw_sample(struct thread_data *, struct io_u *, unsigned int, unsigned long long); extern void add_sync_clat_sample(struct thread_stat *ts, - unsigned long long nsec); + unsigned long long nsec); extern int calc_log_samples(void); +extern void print_disk_util(struct disk_util_stat *, struct disk_util_agg *, int terse, struct buf_output *); +extern void json_array_add_disk_util(struct disk_util_stat *dus, + struct disk_util_agg *agg, struct json_array *parent); + extern struct io_log *agg_io_log[DDIR_RWDIR_CNT]; extern bool write_bw_log;