options: more option grouping
[fio.git] / options.c
index 8681c218bf51e4c1068216af33a9c4a972119e0c..1b0117ef182955e41afa59c04236d313fe7fcac4 100644 (file)
--- a/options.c
+++ b/options.c
@@ -942,6 +942,26 @@ 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   = NULL,
        }
@@ -974,18 +994,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)",
@@ -1621,7 +1629,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 +1640,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 +1650,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 +1661,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 +1670,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 +1679,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 +1689,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,
@@ -2124,6 +2132,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .help   = "Percentage of mixed workload that is reads",
                .def    = "50",
                .interval = 5,
+               .inverse = "rwmixwrite",
                .category = FIO_OPT_C_IO,
                .group  = FIO_OPT_G_RWMIX,
        },
@@ -2136,6 +2145,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .help   = "Percentage of mixed workload that is writes",
                .def    = "50",
                .interval = 5,
+               .inverse = "rwmixread",
                .category = FIO_OPT_C_IO,
                .group  = FIO_OPT_G_RWMIX,
        },
@@ -2157,7 +2167,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
        {
@@ -2170,7 +2180,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",
@@ -2182,7 +2192,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
        {
@@ -2394,7 +2404,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",
@@ -2403,7 +2413,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
        {
@@ -2443,7 +2453,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",
@@ -2453,7 +2463,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",
@@ -2462,7 +2472,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",
@@ -2471,7 +2481,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",
@@ -2531,7 +2541,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,
        },
        {
@@ -2688,7 +2698,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",
@@ -2750,7 +2760,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",
@@ -2760,18 +2781,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",
@@ -2780,7 +2792,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",
@@ -2789,6 +2801,18 @@ 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,
        },
        {