X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=fio.c;h=212b72e8706ac84b3ebe8c4fbaadc46b58eec688;hb=48fbb46e7c9a2721b3b23898ab9ec79727ab4e9b;hp=61ef88b315eb6da4ace155967d8f1bce19eee716;hpb=0ad5edcc5866713b891636c3aec69dbf99dd1432;p=fio.git diff --git a/fio.c b/fio.c index 61ef88b3..212b72e8 100644 --- a/fio.c +++ b/fio.c @@ -77,6 +77,50 @@ struct io_log *agg_io_log[2]; #define JOB_START_TIMEOUT (5 * 1000) +static const char *fio_os_strings[os_nr] = { + "Invalid", + "Linux", + "AIX", + "FreeBSD", + "HP-UX", + "OSX", + "NetBSD", + "Solaris", + "Windows" +}; + +static const char *fio_arch_strings[arch_nr] = { + "Invalid", + "x86-64", + "x86", + "ppc", + "ia64", + "s390", + "alpha", + "sparc", + "sparc64", + "arm", + "sh", + "hppa", + "generic" +}; + +const char *fio_get_os_string(int nr) +{ + if (nr < os_nr) + return fio_os_strings[nr]; + + return NULL; +} + +const char *fio_get_arch_string(int nr) +{ + if (nr < arch_nr) + return fio_arch_strings[nr]; + + return NULL; +} + void td_set_runstate(struct thread_data *td, int runstate) { if (td->runstate == runstate) @@ -217,7 +261,7 @@ static int __check_min_rate(struct thread_data *td, struct timeval *now, if (mtime_since(&td->start, now) < 2000) return 0; - iops += td->io_blocks[ddir]; + iops += td->this_io_blocks[ddir]; bytes += td->this_io_bytes[ddir]; ratemin += td->o.ratemin[ddir]; rate_iops += td->o.rate_iops[ddir]; @@ -986,6 +1030,8 @@ static void reset_io_counters(struct thread_data *td) { td->stat_io_bytes[0] = td->stat_io_bytes[1] = 0; td->this_io_bytes[0] = td->this_io_bytes[1] = 0; + td->stat_io_blocks[0] = td->stat_io_blocks[1] = 0; + td->this_io_blocks[0] = td->this_io_blocks[1] = 0; td->zone_bytes = 0; td->rate_bytes[0] = td->rate_bytes[1] = 0; td->rate_blocks[0] = td->rate_blocks[1] = 0; @@ -1184,12 +1230,12 @@ static void *thread_main(void *data) clear_state = 0; while (keep_running(td)) { fio_gettime(&td->start, NULL); - memcpy(&td->stat_sample_time[0], &td->start, sizeof(td->start)); - memcpy(&td->stat_sample_time[1], &td->start, sizeof(td->start)); + memcpy(&td->bw_sample_time, &td->start, sizeof(td->start)); + memcpy(&td->iops_sample_time, &td->start, sizeof(td->start)); memcpy(&td->tv_cache, &td->start, sizeof(td->start)); if (td->o.ratemin[0] || td->o.ratemin[1]) - memcpy(&td->lastrate, &td->stat_sample_time, + memcpy(&td->lastrate, &td->bw_sample_time, sizeof(td->lastrate)); if (clear_state) @@ -1266,6 +1312,14 @@ static void *thread_main(void *data) } else finish_log(td, td->clat_log, "clat"); } + if (td->iops_log) { + if (td->o.iops_log_file) { + finish_log_named(td, td->iops_log, + td->o.iops_log_file, "iops"); + } else + finish_log(td, td->iops_log, "iops"); + } + fio_mutex_up(writeout_mutex); if (td->o.exec_postrun) exec_string(td->o.exec_postrun); @@ -1687,8 +1741,12 @@ static void run_threads(void) reap_threads(&nr_running, &t_rate, &m_rate); - if (todo) - usleep(100000); + if (todo) { + if (is_backend) + fio_server_idle_loop(); + else + usleep(100000); + } } while (nr_running) {