X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=options.c;h=161b416378ef506424ac6cbb2988c9380bd32051;hp=635779db0a6d31f3e7e9eb8cc26bfd88521fb9bd;hb=b6ab6a31f82cf498da9da08ce83f7b12160203fe;hpb=90265353af8dbf1c43804996909777d4c1a5998e diff --git a/options.c b/options.c index 635779db..161b4163 100644 --- a/options.c +++ b/options.c @@ -942,6 +942,42 @@ static struct opt_group fio_opt_cat_groups[] = { .name = "General I/O", .mask = FIO_OPT_G_IO_BASIC, }, + { + .name = "Cgroups", + .mask = FIO_OPT_G_CGROUP, + }, + { + .name = "Runtime", + .mask = FIO_OPT_G_RUNTIME, + }, + { + .name = "Process", + .mask = FIO_OPT_G_PROCESS, + }, + { + .name = "Job credentials / priority", + .mask = FIO_OPT_G_CRED, + }, + { + .name = "Clock settings", + .mask = FIO_OPT_G_CLOCK, + }, + { + .name = "I/O Type", + .mask = FIO_OPT_G_IO_TYPE, + }, + { + .name = "I/O Thinktime", + .mask = FIO_OPT_G_THINKTIME, + }, + { + .name = "Randomizations", + .mask = FIO_OPT_G_RANDOM, + }, + { + .name = "I/O buffers", + .mask = FIO_OPT_G_IO_BUF, + }, { .name = NULL, } @@ -974,18 +1010,6 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .category = FIO_OPT_C_GENERAL, .group = FIO_OPT_G_DESC, }, - { - .name = "kb_base", - .lname = "KB Base", - .type = FIO_OPT_INT, - .off1 = td_var_offset(kb_base), - .verify = kb_base_verify, - .prio = 1, - .def = "1024", - .help = "How many bytes per KB for reporting (1000 or 1024)", - .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, - }, { .name = "filename", .lname = "Filename(s)", @@ -1386,7 +1410,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .parent = "rw", .hide = 1, .category = FIO_OPT_C_IO, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_RANDOM, }, { .name = "use_os_rand", @@ -1398,7 +1422,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .parent = "rw", .hide = 1, .category = FIO_OPT_C_IO, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_RANDOM, }, { .name = "norandommap", @@ -1408,8 +1432,9 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .help = "Accept potential duplicate random blocks", .parent = "rw", .hide = 1, + .hide_on_set = 1, .category = FIO_OPT_C_IO, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_RANDOM, }, { .name = "softrandommap", @@ -1421,7 +1446,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .hide = 1, .def = "0", .category = FIO_OPT_C_IO, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_RANDOM, }, { .name = "nrfiles", @@ -1588,8 +1613,9 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .off1 = td_var_offset(odirect), .help = "Use O_DIRECT IO (negates buffered)", .def = "0", + .inverse = "buffered", .category = FIO_OPT_C_IO, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_IO_TYPE, }, { .name = "buffered", @@ -1599,8 +1625,9 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .neg = 1, .help = "Use buffered IO (negates direct)", .def = "1", + .inverse = "direct", .category = FIO_OPT_C_IO, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_IO_TYPE, }, { .name = "overwrite", @@ -1621,7 +1648,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .def = "1", .interval = 1, .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_RUNTIME, }, { .name = "numjobs", @@ -1632,7 +1659,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .def = "1", .interval = 1, .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_RUNTIME, }, { .name = "startdelay", @@ -1642,7 +1669,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .help = "Only start job when this period has passed", .def = "0", .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_RUNTIME, }, { .name = "runtime", @@ -1653,7 +1680,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .help = "Stop workload when this amount of time has passed", .def = "0", .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_RUNTIME, }, { .name = "time_based", @@ -1662,7 +1689,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .off1 = td_var_offset(time_based), .help = "Keep running until runtime/timeout is met", .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_RUNTIME, }, { .name = "ramp_time", @@ -1671,7 +1698,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .off1 = td_var_offset(ramp_time), .help = "Ramp up time before measuring performance", .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_RUNTIME, }, { .name = "clocksource", @@ -1681,7 +1708,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .off1 = td_var_offset(clocksource), .help = "What type of timing source to use", .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_CLOCK, .posval = { { .ival = "gettimeofday", .oval = CS_GTOD, @@ -1760,7 +1787,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .cb = str_verify_cb, .def = "0", .category = FIO_OPT_C_IO, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_VERIFY, .posval = { { .ival = "0", .oval = VERIFY_NONE, @@ -2159,7 +2186,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .def = "0", .interval = 1, .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_CRED, }, #ifdef FIO_HAVE_IOPRIO { @@ -2172,7 +2199,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .maxval = 7, .interval = 1, .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_CRED, }, { .name = "prioclass", @@ -2184,7 +2211,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .maxval = 3, .interval = 1, .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_CRED, }, #endif { @@ -2195,7 +2222,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .help = "Idle time between IO buffers (usec)", .def = "0", .category = FIO_OPT_C_IO, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_THINKTIME, }, { .name = "thinktime_spin", @@ -2207,7 +2234,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .parent = "thinktime", .hide = 1, .category = FIO_OPT_C_IO, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_THINKTIME, }, { .name = "thinktime_blocks", @@ -2219,7 +2246,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .parent = "thinktime", .hide = 1, .category = FIO_OPT_C_IO, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_THINKTIME, }, { .name = "rate", @@ -2286,7 +2313,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .help = "Invalidate buffer/page cache prior to running job", .def = "1", .category = FIO_OPT_C_IO, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_IO_TYPE, }, { .name = "sync", @@ -2298,34 +2325,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .parent = "buffered", .hide = 1, .category = FIO_OPT_C_IO, - .group = FIO_OPT_G_INVALID, - }, - { - .name = "bwavgtime", - .lname = "Bandwidth average time", - .type = FIO_OPT_INT, - .off1 = td_var_offset(bw_avg_time), - .help = "Time window over which to calculate bandwidth" - " (msec)", - .def = "500", - .parent = "write_bw_log", - .hide = 1, - .interval = 100, - .category = FIO_OPT_C_LOG, - .group = FIO_OPT_G_INVALID, - }, - { - .name = "iopsavgtime", - .lname = "IOPS average time", - .type = FIO_OPT_INT, - .off1 = td_var_offset(iops_avg_time), - .help = "Time window over which to calculate IOPS (msec)", - .def = "500", - .parent = "write_iops_log", - .hide = 1, - .interval = 100, - .category = FIO_OPT_C_LOG, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_IO_TYPE, }, { .name = "create_serialize", @@ -2367,27 +2367,6 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .category = FIO_OPT_C_FILE, .group = FIO_OPT_G_INVALID, }, - { - .name = "cpuload", - .lname = "CPU load", - .type = FIO_OPT_INT, - .off1 = td_var_offset(cpuload), - .help = "Use this percentage of CPU", - .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, - }, - { - .name = "cpuchunks", - .lname = "CPU chunk", - .type = FIO_OPT_INT, - .off1 = td_var_offset(cpucycle), - .help = "Length of the CPU burn cycles (usecs)", - .def = "50000", - .parent = "cpuload", - .hide = 1, - .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, - }, #ifdef FIO_HAVE_CPU_AFFINITY { .name = "cpumask", @@ -2396,7 +2375,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .cb = str_cpumask_cb, .help = "CPU affinity mask", .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_CRED, }, { .name = "cpus_allowed", @@ -2405,7 +2384,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .cb = str_cpus_allowed_cb, .help = "Set CPUs allowed", .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_CRED, }, #endif { @@ -2445,7 +2424,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .cb = str_exitall_cb, .help = "Terminate all jobs when one exits", .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_PROCESS, }, { .name = "stonewall", @@ -2455,7 +2434,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .off1 = td_var_offset(stonewall), .help = "Insert a hard barrier between this job and previous", .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_PROCESS, }, { .name = "new_group", @@ -2464,7 +2443,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .off1 = td_var_offset(new_group), .help = "Mark the start of a new group (for reporting)", .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_PROCESS, }, { .name = "thread", @@ -2473,7 +2452,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .off1 = td_var_offset(use_thread), .help = "Use threads instead of processes", .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_PROCESS, }, { .name = "write_bw_log", @@ -2516,14 +2495,30 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .group = FIO_OPT_G_INVALID, }, { - .name = "hugepage-size", - .lname = "Hugepage size", + .name = "bwavgtime", + .lname = "Bandwidth average time", .type = FIO_OPT_INT, - .off1 = td_var_offset(hugepage_size), - .help = "When using hugepages, specify size of each page", - .def = __fio_stringify(FIO_HUGE_PAGE), - .interval = 1024 * 1024, - .category = FIO_OPT_C_GENERAL, + .off1 = td_var_offset(bw_avg_time), + .help = "Time window over which to calculate bandwidth" + " (msec)", + .def = "500", + .parent = "write_bw_log", + .hide = 1, + .interval = 100, + .category = FIO_OPT_C_LOG, + .group = FIO_OPT_G_INVALID, + }, + { + .name = "iopsavgtime", + .lname = "IOPS average time", + .type = FIO_OPT_INT, + .off1 = td_var_offset(iops_avg_time), + .help = "Time window over which to calculate IOPS (msec)", + .def = "500", + .parent = "write_iops_log", + .hide = 1, + .interval = 100, + .category = FIO_OPT_C_LOG, .group = FIO_OPT_G_INVALID, }, { @@ -2533,7 +2528,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .off1 = td_var_offset(group_reporting), .help = "Do reporting on a per-group basis", .def = "1", - .category = FIO_OPT_C_GENERAL, + .category = FIO_OPT_C_STAT, .group = FIO_OPT_G_INVALID, }, { @@ -2543,7 +2538,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .off1 = td_var_offset(zero_buffers), .help = "Init IO buffers to all zeroes", .category = FIO_OPT_C_IO, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_IO_BUF, }, { .name = "refill_buffers", @@ -2552,7 +2547,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .off1 = td_var_offset(refill_buffers), .help = "Refill IO buffers on every IO submit", .category = FIO_OPT_C_IO, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_IO_BUF, }, { .name = "scramble_buffers", @@ -2562,7 +2557,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .help = "Slightly scramble buffers on every IO submit", .def = "1", .category = FIO_OPT_C_IO, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_IO_BUF, }, { .name = "buffer_compress_percentage", @@ -2574,7 +2569,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .help = "How compressible the buffer is (approximately)", .interval = 5, .category = FIO_OPT_C_IO, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_IO_BUF, }, { .name = "buffer_compress_chunk", @@ -2586,7 +2581,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .help = "Size of compressible region in buffer", .interval = 256, .category = FIO_OPT_C_IO, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_IO_BUF, }, { .name = "clat_percentiles", @@ -2631,6 +2626,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .help = "Greatly reduce number of gettimeofday() calls", .cb = str_gtod_reduce_cb, .def = "0", + .hide_on_set = 1, .category = FIO_OPT_C_STAT, .group = FIO_OPT_G_INVALID, }, @@ -2690,7 +2686,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .help = "Set up dedicated gettimeofday() thread on this CPU", .verify = gtod_cpu_verify, .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_CLOCK, }, { .name = "continue_on_error", @@ -2752,7 +2748,18 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .off1 = td_var_offset(cgroup), .help = "Add job to cgroup of this name", .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_CGROUP, + }, + { + .name = "cgroup_nodelete", + .lname = "Cgroup no-delete", + .type = FIO_OPT_BOOL, + .off1 = td_var_offset(cgroup_nodelete), + .help = "Do not delete cgroups after job completion", + .def = "0", + .parent = "cgroup", + .category = FIO_OPT_C_GENERAL, + .group = FIO_OPT_G_CGROUP, }, { .name = "cgroup_weight", @@ -2762,18 +2769,9 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .help = "Use given weight for cgroup", .minval = 100, .maxval = 1000, + .parent = "cgroup", .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, - }, - { - .name = "cgroup_nodelete", - .lname = "Cgroup no-delete", - .type = FIO_OPT_BOOL, - .off1 = td_var_offset(cgroup_nodelete), - .help = "Do not delete cgroups after job completion", - .def = "0", - .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_CGROUP, }, { .name = "uid", @@ -2782,7 +2780,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .off1 = td_var_offset(uid), .help = "Run job with this user ID", .category = FIO_OPT_C_GENERAL, - .group = FIO_OPT_G_INVALID, + .group = FIO_OPT_G_CRED, }, { .name = "gid", @@ -2791,6 +2789,29 @@ struct fio_option fio_options[FIO_MAX_OPTS] = { .off1 = td_var_offset(gid), .help = "Run job with this group ID", .category = FIO_OPT_C_GENERAL, + .group = FIO_OPT_G_CRED, + }, + { + .name = "kb_base", + .lname = "KB Base", + .type = FIO_OPT_INT, + .off1 = td_var_offset(kb_base), + .verify = kb_base_verify, + .prio = 1, + .def = "1024", + .help = "How many bytes per KB for reporting (1000 or 1024)", + .category = FIO_OPT_C_GENERAL, + .group = FIO_OPT_G_INVALID, + }, + { + .name = "hugepage-size", + .lname = "Hugepage size", + .type = FIO_OPT_INT, + .off1 = td_var_offset(hugepage_size), + .help = "When using hugepages, specify size of each page", + .def = __fio_stringify(FIO_HUGE_PAGE), + .interval = 1024 * 1024, + .category = FIO_OPT_C_GENERAL, .group = FIO_OPT_G_INVALID, }, { @@ -3325,3 +3346,9 @@ void fio_options_free(struct thread_data *td) td->eo = NULL; } } + +struct fio_option *fio_option_find(const char *name) +{ + return find_option(fio_options, name); +} +