static FLIST_HEAD(arg_list);
+static struct thread_stat client_ts;
+static struct group_run_stats client_gs;
+static int sum_stat_clients;
+static int sum_stat_nr;
+
#define FIO_CLIENT_HASH_BITS 7
#define FIO_CLIENT_HASH_SZ (1 << FIO_CLIENT_HASH_BITS)
#define FIO_CLIENT_HASH_MASK (FIO_CLIENT_HASH_SZ - 1)
free(client);
nr_clients--;
+ sum_stat_clients--;
}
static void __fio_client_add_cmd_option(struct fio_client *client,
convert_gs(&p->rs, &p->rs);
show_thread_status(&p->ts, &p->rs);
+
+ if (sum_stat_clients == 1)
+ return;
+
+ sum_thread_stats(&client_ts, &p->ts, sum_stat_nr);
+ sum_group_stats(&client_gs, &p->rs);
+
+ client_ts.members++;
+ client_ts.groupid = p->ts.groupid;
+
+ if (++sum_stat_nr == sum_stat_clients) {
+ strcpy(client_ts.name, "All clients");
+ show_thread_status(&client_ts, &client_gs);
+ }
}
static void handle_gs(struct fio_net_cmd *cmd)
flist_for_each(entry, &client->cmd_list) {
icmd = flist_entry(entry, struct fio_net_int_cmd, list);
- if (cmd->tag == (uint64_t) icmd)
+ if (cmd->tag == (uintptr_t) icmd)
break;
icmd = NULL;
static void handle_eta(struct fio_client *client, struct fio_net_cmd *cmd)
{
struct jobs_eta *je = (struct jobs_eta *) cmd->payload;
- struct client_eta *eta = (struct client_eta *) cmd->tag;
+ struct client_eta *eta = (struct client_eta *) (uintptr_t) cmd->tag;
dprint(FD_NET, "client: got eta tag %p, %d\n", eta, eta->pending);
static void handle_probe(struct fio_client *client, struct fio_net_cmd *cmd)
{
struct cmd_probe_pdu *probe = (struct cmd_probe_pdu *) cmd->payload;
- const char *os, *arch;
+ const char *os, *arch, *bit;
os = fio_get_os_string(probe->os);
if (!os)
if (!arch)
os = "unknown";
- log_info("hostname=%s, be=%u, os=%s, arch=%s, fio=%u.%u.%u\n",
- probe->hostname, probe->bigendian, os, arch, probe->fio_major,
- probe->fio_minor, probe->fio_patch);
+ if (probe->bpp == 2)
+ bit = "16-bit";
+ else if (probe->bpp == 4)
+ bit = "32-bit";
+ else if (probe->bpp == 8)
+ bit = "64-bit";
+ else
+ bit = "unknown";
+
+ log_info("hostname=%s, be=%u, %s, os=%s, arch=%s, fio=%u.%u.%u\n",
+ probe->hostname, probe->bigendian, bit, os, arch,
+ probe->fio_major, probe->fio_minor, probe->fio_patch);
if (!client->name)
client->name = strdup((char *) probe->hostname);
flist_add_tail(&client->eta_list, &eta_list);
client->eta_in_flight = eta;
fio_net_send_simple_cmd(client->fd, FIO_NET_CMD_SEND_ETA,
- (uint64_t) eta, &client->cmd_list);
+ (uintptr_t) eta, &client->cmd_list);
}
while (skipped--)
pfds = malloc(nr_clients * sizeof(struct pollfd));
+ sum_stat_clients = nr_clients;
+ init_thread_stat(&client_ts);
+ init_group_run_stat(&client_gs);
+
while (!exit_backend && nr_clients) {
i = 0;
flist_for_each(entry, &client_list) {