static int max_jobs = MAX_JOBS;
+static char run_str[MAX_JOBS + 1];
+
static int shm_id;
enum {
goto err;
}
- printf("Client%d (pid=%u) started\n", td->thread_number, td->pid);
-
sprintf(argv[0], "fio%d", offset);
if (td->use_aio && init_aio(td))
td->slat_stat.min_val = ULONG_MAX;
td->bw_stat.min_val = ULONG_MAX;
+ run_str[td->thread_number - 1] = 'P';
+
if (td->use_aio) {
if (!td->aio_depth)
td->aio_depth = 1;
}
static void print_thread_status(struct thread_data *td, int nr_running,
- int t_rate, int m_rate, int die)
+ int t_rate, int m_rate)
{
- printf("Client%d: %s\n", td->thread_number, die ? "exited" : "spawned");
-
printf("Threads now running: %d", nr_running);
if (m_rate || t_rate)
printf(", commitrate %d/%dKiB/sec", t_rate, m_rate);
- printf("\n");
+ printf(" : [%s]\r", run_str);
+ fflush(stdout);
}
static void reap_threads(int *nr_running, int *t_rate, int *m_rate)
continue;
td->runstate = TD_REAPED;
+ run_str[td->thread_number - 1] = '_';
waitpid(td->pid, NULL, 0);
(*nr_running)--;
(*m_rate) -= td->ratemin;
if (td->terminate)
continue;
- print_thread_status(td, *nr_running, *t_rate, *m_rate, 1);
+ print_thread_status(td, *nr_running, *t_rate, *m_rate);
}
}
}
td->runstate = TD_CREATED;
+ run_str[td->thread_number - 1] = 'C';
sem_init(&startup_sem, 1, 1);
todo--;
continue;
td->runstate = TD_STARTED;
+ run_str[td->thread_number - 1] = '+';
nr_running++;
m_rate += td->ratemin;
t_rate += td->rate;
sem_post(&td->mutex);
- print_thread_status(td, nr_running, t_rate, m_rate, 0);
+ print_thread_status(td, nr_running, t_rate, m_rate);
}
reap_threads(&nr_running, &t_rate, &m_rate);