X-Git-Url: https://git.kernel.dk/?a=blobdiff_plain;f=init.c;h=25c8d78e3cfd7ee0d4571fe6a848f54e9d5a7f19;hb=90b7a96d9573a14f20470af2aa0dd4e60611a477;hp=688c8efa731cb1974506d138600bb2e2cddf744e;hpb=135be493d843d4cae2966a35cbd22a3058ec8e4b;p=fio.git diff --git a/init.c b/init.c index 688c8efa..25c8d78e 100644 --- a/init.c +++ b/init.c @@ -22,6 +22,7 @@ #include "verify.h" #include "profile.h" #include "server.h" +#include "idletime.h" #include "lib/getopt.h" @@ -65,26 +66,6 @@ unsigned int *fio_debug_jobp = NULL; static char cmd_optstr[256]; static int did_arg; -const fio_fp64_t def_percentile_list[FIO_IO_U_LIST_MAX_LEN] = { - { .u.f = 1.00 }, - { .u.f = 5.00 }, - { .u.f = 10.00 }, - { .u.f = 20.00 }, - { .u.f = 30.00 }, - { .u.f = 40.00 }, - { .u.f = 50.00 }, - { .u.f = 60.00 }, - { .u.f = 70.00 }, - { .u.f = 80.00 }, - { .u.f = 90.00 }, - { .u.f = 95.00 }, - { .u.f = 99.00 }, - { .u.f = 99.50 }, - { .u.f = 99.90 }, - { .u.f = 99.95 }, - { .u.f = 99.99 }, -}; - #define FIO_CLIENT_FLAG (1 << 16) /* @@ -211,6 +192,11 @@ static struct option l_opts[FIO_NR_OPTIONS] = { .has_arg = no_argument, .val = 'T', }, + { + .name = (char *) "idle-prof", + .has_arg = required_argument, + .val = 'I', + }, { .name = NULL, }, @@ -628,7 +614,7 @@ char *fio_uint_to_kmg(unsigned int val) p++; } while (*p); - snprintf(buf, 31, "%u%c", val, *p); + snprintf(buf, 32, "%u%c", val, *p); return buf; } @@ -883,10 +869,7 @@ static int add_job(struct thread_data *td, const char *jobname, int job_add_num, td->mutex = fio_mutex_init(FIO_MUTEX_LOCKED); td->ts.clat_percentiles = td->o.clat_percentiles; - if (td->o.overwrite_plist) - memcpy(td->ts.percentile_list, td->o.percentile_list, sizeof(td->o.percentile_list)); - else - memcpy(td->ts.percentile_list, def_percentile_list, sizeof(def_percentile_list)); + memcpy(td->ts.percentile_list, td->o.percentile_list, sizeof(td->o.percentile_list)); for (i = 0; i < DDIR_RWDIR_CNT; i++) { td->ts.clat_stat[i].min_val = ULONG_MAX; @@ -1290,6 +1273,9 @@ static void usage(const char *name) printf(" --server=args\t\tStart a backend fio server\n"); printf(" --daemonize=pidfile\tBackground fio server, write pid to file\n"); printf(" --client=hostname\tTalk to remote backend fio server at hostname\n"); + printf(" --idle-prof=option\tReport cpu idleness on a system or percpu basis\n" + "\t\t\t(option=system,percpu) or run unit work\n" + "\t\t\tcalibration only (option=calibrate)\n"); printf("\nFio was written by Jens Axboe "); printf("\n Jens Axboe \n"); } @@ -1653,6 +1639,14 @@ int parse_cmd_line(int argc, char *argv[], int client_type) case 'D': pid_file = strdup(optarg); break; + case 'I': + if ((ret = fio_idle_prof_parse_opt(optarg))) { + /* exit on error and calibration only */ + do_exit++; + if (ret == -1) + exit_val = 1; + } + break; case 'C': if (is_backend) { log_err("fio: can't be both client and server\n");