.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,
}
.parent = "rw",
.hide = 1,
.category = FIO_OPT_C_IO,
- .group = FIO_OPT_G_INVALID,
+ .group = FIO_OPT_G_RANDOM,
},
{
.name = "use_os_rand",
.parent = "rw",
.hide = 1,
.category = FIO_OPT_C_IO,
- .group = FIO_OPT_G_INVALID,
+ .group = FIO_OPT_G_RANDOM,
},
{
.name = "norandommap",
.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",
.hide = 1,
.def = "0",
.category = FIO_OPT_C_IO,
- .group = FIO_OPT_G_INVALID,
+ .group = FIO_OPT_G_RANDOM,
},
{
.name = "nrfiles",
.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",
.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",
.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,
.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",
.parent = "thinktime",
.hide = 1,
.category = FIO_OPT_C_IO,
- .group = FIO_OPT_G_INVALID,
+ .group = FIO_OPT_G_THINKTIME,
},
{
.name = "thinktime_blocks",
.parent = "thinktime",
.hide = 1,
.category = FIO_OPT_C_IO,
- .group = FIO_OPT_G_INVALID,
+ .group = FIO_OPT_G_THINKTIME,
},
{
.name = "rate",
.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",
.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",
.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",
.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,
},
{
.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",
.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",
.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",
.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",
.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",
.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,
},
.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",
td->eo = NULL;
}
}
+
+struct fio_option *fio_option_find(const char *name)
+{
+ return find_option(fio_options, name);
+}
+