X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=options.c;h=2b71abdd4474804f885079b46015f1df2ebe3f08;hp=05a6a5081fa576810c9071506e634077ec27a401;hb=731ef4c7c0aad1e6717e645595f3454d264b4f2f;hpb=237cc3b1e297a9b934a424c6271971b07efc7a66 diff --git a/options.c b/options.c index 05a6a508..2b71abdd 100644 --- a/options.c +++ b/options.c @@ -342,13 +342,8 @@ static int str_mem_cb(void *data, const char *mem) { struct thread_data *td = data; - if (td->o.mem_type == MEM_MMAPHUGE || td->o.mem_type == MEM_MMAP) { + if (td->o.mem_type == MEM_MMAPHUGE || td->o.mem_type == MEM_MMAP) td->mmapfile = get_opt_postfix(mem); - if (td->o.mem_type == MEM_MMAPHUGE && !td->mmapfile) { - log_err("fio: mmaphuge:/path/to/file\n"); - return 1; - } - } return 0; } @@ -370,7 +365,8 @@ static int fio_clock_source_cb(void *data, const char *str) struct thread_data *td = data; fio_clock_source = td->o.clocksource; - fio_time_init(); + fio_clock_source_set = 1; + fio_clock_init(); return 0; } @@ -564,7 +560,7 @@ static int str_verify_cpus_allowed_cb(void *data, const char *input) } #endif -#ifdef FIO_HAVE_LIBNUMA +#ifdef CONFIG_LIBNUMA static int str_numa_cpunodes_cb(void *data, char *input) { struct thread_data *td = data; @@ -712,7 +708,7 @@ static int str_fst_cb(void *data, const char *str) return 0; } -#ifdef FIO_HAVE_SYNC_FILE_RANGE +#ifdef CONFIG_SYNC_FILE_RANGE static int str_sfr_cb(void *data, const char *str) { struct thread_data *td = data; @@ -734,20 +730,36 @@ static int str_random_distribution_cb(void *data, const char *str) double val; char *nr; - if (td->o.random_distribution == FIO_RAND_DIST_RANDOM) + if (td->o.random_distribution == FIO_RAND_DIST_ZIPF) + val = 1.1; + else if (td->o.random_distribution == FIO_RAND_DIST_PARETO) + val = 0.2; + else return 0; nr = get_opt_postfix(str); - if (!nr) - val = 0.6; - else if (!str_to_float(nr, &val)) { + if (nr && !str_to_float(nr, &val)) { log_err("fio: random postfix parsing failed\n"); free(nr); return 1; } - td->o.zipf_theta = val; free(nr); + + if (td->o.random_distribution == FIO_RAND_DIST_ZIPF) { + if (val == 1.00) { + log_err("fio: zipf theta must different than 1.0\n"); + return 1; + } + td->o.zipf_theta = val; + } else { + if (val <= 0.00 || val >= 1.00) { + log_err("fio: pareto input out of range (0 < input < 1.0)\n"); + return 1; + } + td->o.pareto_h = val; + } + return 0; } @@ -1255,12 +1267,12 @@ static struct fio_option options[FIO_MAX_OPTS] = { { .ival = "vsync", .help = "Use readv/writev", }, -#ifdef FIO_HAVE_LIBAIO +#ifdef CONFIG_LIBAIO { .ival = "libaio", .help = "Linux native asynchronous IO", }, #endif -#ifdef FIO_HAVE_POSIXAIO +#ifdef CONFIG_POSIXAIO { .ival = "posixaio", .help = "POSIX asynchronous IO", }, @@ -1278,7 +1290,7 @@ static struct fio_option options[FIO_MAX_OPTS] = { { .ival = "mmap", .help = "Memory mapped IO" }, -#ifdef FIO_HAVE_SPLICE +#ifdef CONFIG_LINUX_SPLICE { .ival = "splice", .help = "splice/vmsplice based IO", }, @@ -1297,15 +1309,10 @@ static struct fio_option options[FIO_MAX_OPTS] = { { .ival = "net", .help = "Network IO", }, -#ifdef FIO_HAVE_SYSLET - { .ival = "syslet-rw", - .help = "syslet enabled async pread/pwrite IO", - }, -#endif { .ival = "cpuio", .help = "CPU cycle burner engine", }, -#ifdef FIO_HAVE_GUASI +#ifdef CONFIG_GUASI { .ival = "guasi", .help = "GUASI IO engine", }, @@ -1315,12 +1322,12 @@ static struct fio_option options[FIO_MAX_OPTS] = { .help = "binject direct inject block engine", }, #endif -#ifdef FIO_HAVE_RDMA +#ifdef CONFIG_RDMA { .ival = "rdma", .help = "RDMA IO engine", }, #endif -#ifdef FIO_HAVE_FUSION_AW +#ifdef CONFIG_FUSION_AW { .ival = "fusion-aw-sync", .help = "Fusion-io atomic write engine", }, @@ -1495,6 +1502,23 @@ static struct fio_option options[FIO_MAX_OPTS] = { .parent = "norandommap", .def = "0", }, + { + .name = "random_generator", + .type = FIO_OPT_STR, + .off1 = td_var_offset(random_generator), + .help = "Type of random number generator to use", + .def = "tausworthe", + .posval = { + { .ival = "tausworthe", + .oval = FIO_RAND_GEN_TAUSWORTHE, + .help = "Strong Tausworthe generator", + }, + { .ival = "lfsr", + .oval = FIO_RAND_GEN_LFSR, + .help = "Variable length LFSR", + }, + }, + }, { .name = "random_distribution", .type = FIO_OPT_STR, @@ -1511,6 +1535,10 @@ static struct fio_option options[FIO_MAX_OPTS] = { .oval = FIO_RAND_DIST_ZIPF, .help = "Zipf distribution", }, + { .ival = "pareto", + .oval = FIO_RAND_DIST_PARETO, + .help = "Pareto distribution", + }, }, }, { @@ -1612,7 +1640,7 @@ static struct fio_option options[FIO_MAX_OPTS] = { .help = "Make every Nth write a barrier write", .def = "0", }, -#ifdef FIO_HAVE_SYNC_FILE_RANGE +#ifdef CONFIG_SYNC_FILE_RANGE { .name = "sync_file_range", .posval = { @@ -1709,14 +1737,18 @@ static struct fio_option options[FIO_MAX_OPTS] = { .off1 = td_var_offset(clocksource), .help = "What type of timing source to use", .posval = { +#ifdef CONFIG_GETTIMEOFDAY { .ival = "gettimeofday", .oval = CS_GTOD, .help = "Use gettimeofday(2) for timing", }, +#endif +#ifdef CONFIG_CLOCK_GETTIME { .ival = "clock_gettime", .oval = CS_CGETTIME, .help = "Use clock_gettime(2) for timing", }, +#endif #ifdef ARCH_HAVE_CPU_CLOCK { .ival = "cpu", .oval = CS_CPUCLOCK, @@ -1849,6 +1881,16 @@ static struct fio_option options[FIO_MAX_OPTS] = { .def = "1", .parent = "verify", }, + { + .name = "verifysort_nr", + .type = FIO_OPT_INT, + .off1 = td_var_offset(verifysort_nr), + .help = "Pre-load and sort verify blocks for a read workload", + .minval = 0, + .maxval = 131072, + .def = "1024", + .parent = "verify", + }, { .name = "verify_interval", .type = FIO_OPT_INT, @@ -1919,6 +1961,11 @@ static struct fio_option options[FIO_MAX_OPTS] = { .parent = "verify_async", }, #endif + { + .name = "experimental_verify", + .off1 = td_var_offset(experimental_verify), + .type = FIO_OPT_BOOL, + }, #ifdef FIO_HAVE_TRIM { .name = "trim_percentage", @@ -2240,7 +2287,7 @@ static struct fio_option options[FIO_MAX_OPTS] = { .help = "Set CPUs allowed", }, #endif -#ifdef FIO_HAVE_LIBNUMA +#ifdef CONFIG_LIBNUMA { .name = "numa_cpu_nodes", .type = FIO_OPT_STR,