options: more groupings
[fio.git] / options.c
index b72d690fed07b7e3de1884293a33ee7938afc5a0..22cc511681503982a0630ee1cdab085fcc4045cf 100644 (file)
--- a/options.c
+++ b/options.c
@@ -950,6 +950,34 @@ static struct opt_group fio_opt_cat_groups[] = {
                .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,
        }
@@ -1382,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",
@@ -1394,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",
@@ -1405,7 +1433,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   = "softrandommap",
@@ -1417,7 +1445,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",
@@ -1584,8 +1612,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",
@@ -1595,8 +1624,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",
@@ -1677,7 +1707,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,
@@ -1756,7 +1786,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,
@@ -2155,7 +2185,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
        {
@@ -2168,7 +2198,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",
@@ -2180,7 +2210,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
        {
@@ -2191,7 +2221,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",
@@ -2203,7 +2233,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",
@@ -2215,7 +2245,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",
@@ -2282,7 +2312,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",
@@ -2294,7 +2324,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .parent = "buffered",
                .hide   = 1,
                .category = FIO_OPT_C_IO,
-               .group  = FIO_OPT_G_INVALID,
+               .group  = FIO_OPT_G_IO_TYPE,
        },
        {
                .name   = "bwavgtime",
@@ -2392,7 +2422,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",
@@ -2401,7 +2431,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
        {
@@ -2511,17 +2541,6 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .category = FIO_OPT_C_LOG,
                .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,
-       },
        {
                .name   = "group_reporting",
                .lname  = "Group reporting",
@@ -2529,7 +2548,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,
        },
        {
@@ -2539,7 +2558,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",
@@ -2548,7 +2567,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",
@@ -2558,7 +2577,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",
@@ -2570,7 +2589,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",
@@ -2582,7 +2601,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",
@@ -2686,7 +2705,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",
@@ -2780,7 +2799,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,7 +2808,7 @@ 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_INVALID,
+               .group  = FIO_OPT_G_CRED,
        },
        {
                .name   = "kb_base",
@@ -2803,6 +2822,17 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
                .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,
+       },
        {
                .name   = "flow_id",
                .lname  = "I/O flow ID",