projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into gfio
[fio.git]
/
client.c
diff --git
a/client.c
b/client.c
index 7b8dc61e4365aa4fd191d4ad0adf084b950ba037..fe6d75efc2947db44945f8740b21efacf51e6638 100644
(file)
--- a/
client.c
+++ b/
client.c
@@
-55,6
+55,7
@@
struct group_run_stats client_gs;
int sum_stat_clients;
static int sum_stat_nr;
int sum_stat_clients;
static int sum_stat_nr;
+static int do_output_all_clients;
#define FIO_CLIENT_HASH_BITS 7
#define FIO_CLIENT_HASH_SZ (1 << FIO_CLIENT_HASH_BITS)
#define FIO_CLIENT_HASH_BITS 7
#define FIO_CLIENT_HASH_SZ (1 << FIO_CLIENT_HASH_BITS)
@@
-116,6
+117,9
@@
void fio_put_client(struct fio_client *client)
if (client->ini_file)
free(client->ini_file);
if (client->ini_file)
free(client->ini_file);
+ if (!client->did_stat)
+ sum_stat_clients -= client->nr_stat;
+
free(client);
}
free(client);
}
@@
-142,8
+146,6
@@
static void remove_client(struct fio_client *client)
client->ops->removed(client);
nr_clients--;
client->ops->removed(client);
nr_clients--;
- sum_stat_clients--;
-
fio_put_client(client);
}
fio_put_client(client);
}
@@
-302,7
+304,7
@@
static void probe_client(struct fio_client *client)
static int fio_client_connect_ip(struct fio_client *client)
{
struct sockaddr *addr;
static int fio_client_connect_ip(struct fio_client *client)
{
struct sockaddr *addr;
-
fio_
socklen_t socklen;
+ socklen_t socklen;
int fd, domain;
if (client->ipv6) {
int fd, domain;
if (client->ipv6) {
@@
-343,7
+345,7
@@
static int fio_client_connect_ip(struct fio_client *client)
static int fio_client_connect_sock(struct fio_client *client)
{
struct sockaddr_un *addr = &client->addr_un;
static int fio_client_connect_sock(struct fio_client *client)
{
struct sockaddr_un *addr = &client->addr_un;
-
fio_
socklen_t len;
+ socklen_t len;
int fd;
memset(addr, 0, sizeof(*addr));
int fd;
memset(addr, 0, sizeof(*addr));
@@
-697,6
+699,7
@@
static void convert_ts(struct thread_stat *dst, struct thread_stat *src)
dst->groupid = le32_to_cpu(src->groupid);
dst->pid = le32_to_cpu(src->pid);
dst->members = le32_to_cpu(src->members);
dst->groupid = le32_to_cpu(src->groupid);
dst->pid = le32_to_cpu(src->pid);
dst->members = le32_to_cpu(src->members);
+ dst->unified_rw_rep = le32_to_cpu(src->unified_rw_rep);
for (i = 0; i < DDIR_RWDIR_CNT; i++) {
convert_io_stat(&dst->clat_stat[i], &src->clat_stat[i]);
for (i = 0; i < DDIR_RWDIR_CNT; i++) {
convert_io_stat(&dst->clat_stat[i], &src->clat_stat[i]);
@@
-734,7
+737,7
@@
static void convert_ts(struct thread_stat *dst, struct thread_stat *src)
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]);
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]);
- for (i = 0; i <
3
; i++) {
+ for (i = 0; i <
DDIR_RWDIR_CNT
; i++) {
dst->total_io_u[i] = le64_to_cpu(src->total_io_u[i]);
dst->short_io_u[i] = le64_to_cpu(src->short_io_u[i]);
}
dst->total_io_u[i] = le64_to_cpu(src->total_io_u[i]);
dst->short_io_u[i] = le64_to_cpu(src->short_io_u[i]);
}
@@
-769,6
+772,7
@@
static void convert_gs(struct group_run_stats *dst, struct group_run_stats *src)
dst->kb_base = le32_to_cpu(src->kb_base);
dst->groupid = le32_to_cpu(src->groupid);
dst->kb_base = le32_to_cpu(src->kb_base);
dst->groupid = le32_to_cpu(src->groupid);
+ dst->unified_rw_rep = le32_to_cpu(src->unified_rw_rep);
}
static void handle_ts(struct fio_client *client, struct fio_net_cmd *cmd)
}
static void handle_ts(struct fio_client *client, struct fio_net_cmd *cmd)
@@
-776,8
+780,9
@@
static void handle_ts(struct fio_client *client, struct fio_net_cmd *cmd)
struct cmd_ts_pdu *p = (struct cmd_ts_pdu *) cmd->payload;
show_thread_status(&p->ts, &p->rs);
struct cmd_ts_pdu *p = (struct cmd_ts_pdu *) cmd->payload;
show_thread_status(&p->ts, &p->rs);
+ client->did_stat = 1;
- if (
sum_stat_clients == 1
)
+ if (
!do_output_all_clients
)
return;
sum_thread_stats(&client_ts, &p->ts, sum_stat_nr);
return;
sum_thread_stats(&client_ts, &p->ts, sum_stat_nr);
@@
-786,6
+791,7
@@
static void handle_ts(struct fio_client *client, struct fio_net_cmd *cmd)
client_ts.members++;
client_ts.thread_number = p->ts.thread_number;
client_ts.groupid = p->ts.groupid;
client_ts.members++;
client_ts.thread_number = p->ts.thread_number;
client_ts.groupid = p->ts.groupid;
+ client_ts.unified_rw_rep = p->ts.unified_rw_rep;
if (++sum_stat_nr == sum_stat_clients) {
strcpy(client_ts.name, "All clients");
if (++sum_stat_nr == sum_stat_clients) {
strcpy(client_ts.name, "All clients");
@@
-875,8
+881,6
@@
static void convert_jobs_eta(struct jobs_eta *je)
je->t_rate[i] = le32_to_cpu(je->t_rate[i]);
je->m_iops[i] = le32_to_cpu(je->m_iops[i]);
je->t_iops[i] = le32_to_cpu(je->t_iops[i]);
je->t_rate[i] = le32_to_cpu(je->t_rate[i]);
je->m_iops[i] = le32_to_cpu(je->m_iops[i]);
je->t_iops[i] = le32_to_cpu(je->t_iops[i]);
- je->rate[i] = le32_to_cpu(je->rate[i]);
- je->iops[i] = le32_to_cpu(je->iops[i]);
}
je->elapsed_sec = le64_to_cpu(je->elapsed_sec);
}
je->elapsed_sec = le64_to_cpu(je->elapsed_sec);
@@
-899,8
+903,6
@@
void fio_client_sum_jobs_eta(struct jobs_eta *dst, struct jobs_eta *je)
dst->t_rate[i] += je->t_rate[i];
dst->m_iops[i] += je->m_iops[i];
dst->t_iops[i] += je->t_iops[i];
dst->t_rate[i] += je->t_rate[i];
dst->m_iops[i] += je->m_iops[i];
dst->t_iops[i] += je->t_iops[i];
- dst->rate[i] += je->rate[i];
- dst->iops[i] += je->iops[i];
}
dst->elapsed_sec += je->elapsed_sec;
}
dst->elapsed_sec += je->elapsed_sec;
@@
-1016,7
+1018,13
@@
static void handle_start(struct fio_client *client, struct fio_net_cmd *cmd)
struct cmd_start_pdu *pdu = (struct cmd_start_pdu *) cmd->payload;
client->state = Client_started;
struct cmd_start_pdu *pdu = (struct cmd_start_pdu *) cmd->payload;
client->state = Client_started;
- client->jobs = pdu->jobs;
+ client->jobs = le32_to_cpu(pdu->jobs);
+ client->nr_stat = le32_to_cpu(pdu->stat_outputs);
+
+ if (sum_stat_clients > 1)
+ do_output_all_clients = 1;
+
+ sum_stat_clients += client->nr_stat;
}
static void handle_stop(struct fio_client *client, struct fio_net_cmd *cmd)
}
static void handle_stop(struct fio_client *client, struct fio_net_cmd *cmd)
@@
-1313,7
+1321,7
@@
static int fio_check_clients_timed_out(void)
struct timeval tv;
int ret = 0;
struct timeval tv;
int ret = 0;
-
gettimeofday
(&tv, NULL);
+
fio_gettime
(&tv, NULL);
flist_for_each_safe(entry, tmp, &client_list) {
client = flist_entry(entry, struct fio_client, list);
flist_for_each_safe(entry, tmp, &client_list) {
client = flist_entry(entry, struct fio_client, list);
@@
-1341,11
+1349,10
@@
int fio_handle_clients(struct client_ops *ops)
struct pollfd *pfds;
int i, ret = 0, retval = 0;
struct pollfd *pfds;
int i, ret = 0, retval = 0;
-
gettimeofday
(&eta_tv, NULL);
+
fio_gettime
(&eta_tv, NULL);
pfds = malloc(nr_clients * sizeof(struct pollfd));
pfds = malloc(nr_clients * sizeof(struct pollfd));
- sum_stat_clients = nr_clients;
init_thread_stat(&client_ts);
init_group_run_stat(&client_gs);
init_thread_stat(&client_ts);
init_group_run_stat(&client_gs);
@@
-1376,8
+1383,8
@@
int fio_handle_clients(struct client_ops *ops)
do {
struct timeval tv;
do {
struct timeval tv;
-
gettimeofday
(&tv, NULL);
- if (mtime_since(&eta_tv, &tv) >=
ops->eta_msec
) {
+
fio_gettime
(&tv, NULL);
+ if (mtime_since(&eta_tv, &tv) >=
900
) {
request_client_etas(ops);
memcpy(&eta_tv, &tv, sizeof(tv));
request_client_etas(ops);
memcpy(&eta_tv, &tv, sizeof(tv));