X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=client.c;h=bff0adc0d972ed38f2cc7c72961b0e2849693c9a;hp=11fa262a6af9d2a5db68401d3d9c73ab86fc6272;hb=93b45bb2e4c511f2d9a9a7552d74e1d921b0bf76;hpb=e883cb3501de0f99297282c18842d50aaa7fa531 diff --git a/client.c b/client.c index 11fa262a..bff0adc0 100644 --- a/client.c +++ b/client.c @@ -905,21 +905,21 @@ static void convert_ts(struct thread_stat *dst, struct thread_stat *src) } for (i = 0; i < FIO_IO_U_MAP_NR; i++) { - dst->io_u_map[i] = le32_to_cpu(src->io_u_map[i]); - dst->io_u_submit[i] = le32_to_cpu(src->io_u_submit[i]); - dst->io_u_complete[i] = le32_to_cpu(src->io_u_complete[i]); + dst->io_u_map[i] = le64_to_cpu(src->io_u_map[i]); + dst->io_u_submit[i] = le64_to_cpu(src->io_u_submit[i]); + dst->io_u_complete[i] = le64_to_cpu(src->io_u_complete[i]); } for (i = 0; i < FIO_IO_U_LAT_N_NR; i++) - dst->io_u_lat_n[i] = le32_to_cpu(src->io_u_lat_n[i]); + dst->io_u_lat_n[i] = le64_to_cpu(src->io_u_lat_n[i]); for (i = 0; i < FIO_IO_U_LAT_U_NR; i++) - dst->io_u_lat_u[i] = le32_to_cpu(src->io_u_lat_u[i]); + dst->io_u_lat_u[i] = le64_to_cpu(src->io_u_lat_u[i]); for (i = 0; i < FIO_IO_U_LAT_M_NR; i++) - dst->io_u_lat_m[i] = le32_to_cpu(src->io_u_lat_m[i]); + dst->io_u_lat_m[i] = le64_to_cpu(src->io_u_lat_m[i]); for (i = 0; i < DDIR_RWDIR_CNT; i++) for (j = 0; j < FIO_IO_U_PLAT_NR; j++) - dst->io_u_plat[i][j] = le32_to_cpu(src->io_u_plat[i][j]); + dst->io_u_plat[i][j] = le64_to_cpu(src->io_u_plat[i][j]); for (i = 0; i < DDIR_RWDIR_CNT; i++) { dst->total_io_u[i] = le64_to_cpu(src->total_io_u[i]); @@ -961,7 +961,7 @@ static void convert_ts(struct thread_stat *dst, struct thread_stat *src) dst->ss_deviation.u.f = fio_uint64_to_double(le64_to_cpu(src->ss_deviation.u.i)); dst->ss_criterion.u.f = fio_uint64_to_double(le64_to_cpu(src->ss_criterion.u.i)); - if (dst->ss_state & __FIO_SS_DATA) { + if (dst->ss_state & FIO_SS_DATA) { for (i = 0; i < dst->ss_dur; i++ ) { dst->ss_iops_data[i] = le64_to_cpu(src->ss_iops_data[i]); dst->ss_bw_data[i] = le64_to_cpu(src->ss_bw_data[i]); @@ -1024,6 +1024,7 @@ static void handle_ts(struct fio_client *client, struct fio_net_cmd *cmd) client_ts.thread_number = p->ts.thread_number; client_ts.groupid = p->ts.groupid; client_ts.unified_rw_rep = p->ts.unified_rw_rep; + client_ts.sig_figs = p->ts.sig_figs; if (++sum_stat_nr == sum_stat_clients) { strcpy(client_ts.name, "All clients"); @@ -1282,7 +1283,7 @@ static void client_flush_hist_samples(FILE *f, int hist_coarseness, void *sample int log_offset; uint64_t i, j, nr_samples; struct io_u_plat_entry *entry; - unsigned int *io_u_plat; + uint64_t *io_u_plat; int stride = 1 << hist_coarseness; @@ -1305,9 +1306,9 @@ static void client_flush_hist_samples(FILE *f, int hist_coarseness, void *sample fprintf(f, "%lu, %u, %u, ", (unsigned long) s->time, io_sample_ddir(s), s->bs); for (j = 0; j < FIO_IO_U_PLAT_NR - stride; j += stride) { - fprintf(f, "%lu, ", hist_sum(j, stride, io_u_plat, NULL)); + fprintf(f, "%llu, ", (unsigned long long)hist_sum(j, stride, io_u_plat, NULL)); } - fprintf(f, "%lu\n", (unsigned long) + fprintf(f, "%llu\n", (unsigned long long) hist_sum(FIO_IO_U_PLAT_NR - stride, stride, io_u_plat, NULL)); } @@ -1666,6 +1667,8 @@ int fio_handle_client(struct fio_client *client) dprint(FD_NET, "client: got cmd op %s from %s (pdu=%u)\n", fio_server_op(cmd->opcode), client->hostname, cmd->pdu_len); + client->last_cmd = cmd->opcode; + switch (cmd->opcode) { case FIO_NET_CMD_QUIT: if (ops->quit) @@ -1689,7 +1692,7 @@ int fio_handle_client(struct fio_client *client) struct cmd_ts_pdu *p = (struct cmd_ts_pdu *) cmd->payload; dprint(FD_NET, "client: ts->ss_state = %u\n", (unsigned int) le32_to_cpu(p->ts.ss_state)); - if (le32_to_cpu(p->ts.ss_state) & __FIO_SS_DATA) { + if (le32_to_cpu(p->ts.ss_state) & FIO_SS_DATA) { dprint(FD_NET, "client: received steadystate ring buffers\n"); size = le64_to_cpu(p->ts.ss_dur); @@ -1832,6 +1835,9 @@ static void request_client_etas(struct client_ops *ops) struct client_eta *eta; int skipped = 0; + if (eta_print == FIO_ETA_NEVER) + return; + dprint(FD_NET, "client: request eta (%d)\n", nr_clients); eta = calloc(1, sizeof(*eta) + __THREAD_RUNSTR_SZ(REAL_MAX_JOBS)); @@ -1901,16 +1907,19 @@ static int client_check_cmd_timeout(struct fio_client *client, int ret = 0; flist_for_each_safe(entry, tmp, &client->cmd_list) { + unsigned int op; + reply = flist_entry(entry, struct fio_net_cmd_reply, list); if (mtime_since(&reply->ts, now) < FIO_NET_CLIENT_TIMEOUT) continue; + op = reply->opcode; if (!handle_cmd_timeout(client, reply)) continue; log_err("fio: client %s, timeout on cmd %s\n", client->hostname, - fio_server_op(reply->opcode)); + fio_server_op(op)); ret = 1; } @@ -1940,7 +1949,10 @@ static int fio_check_clients_timed_out(void) else log_err("fio: client %s timed out\n", client->hostname); - client->error = ETIMEDOUT; + if (client->last_cmd != FIO_NET_CMD_VTRIGGER) + client->error = ETIMEDOUT; + else + log_info("fio: ignoring timeout due to vtrigger\n"); remove_client(client); ret = 1; } @@ -1989,7 +2001,7 @@ int fio_handle_clients(struct client_ops *ops) int timeout; fio_gettime(&ts, NULL); - if (mtime_since(&eta_ts, &ts) >= 900) { + if (eta_time_within_slack(mtime_since(&eta_ts, &ts))) { request_client_etas(ops); memcpy(&eta_ts, &ts, sizeof(ts));