still respecting ordering. The result is the same I/O pattern to a given
device, but different timings.
+.. option:: replay_time_scale=int
+
+ When replaying I/O with :option:`read_iolog`, fio will honor the
+ original timing in the trace. With this option, it's possible to scale
+ the time. It's a percentage option, if set to 50 it means run at 50%
+ the original IO rate in the trace. If set to 200, run at twice the
+ original IO rate. Defaults to 100.
+
.. option:: replay_redirect=str
While replaying I/O patterns using :option:`read_iolog` the default behavior
return;
if (!(t->action & BLK_TC_ACT(BLK_TC_NOTIFY))) {
- if (!last_ttime || td->o.no_stall) {
- last_ttime = t->time;
+ if (!last_ttime || td->o.no_stall)
delay = 0;
- } else {
+ else if (td->o.replay_time_scale == 100)
delay = t->time - last_ttime;
- last_ttime = t->time;
+ else {
+ double tmp = t->time - last_ttime;
+ double scale;
+
+ scale = (double) 100.0 / (double) td->o.replay_time_scale;
+ tmp *= scale;
+ delay = tmp;
}
+ last_ttime = t->time;
}
t_bytes_align(&td->o, t);
still respecting ordering. The result is the same I/O pattern to a given
device, but different timings.
.TP
+.BI replay_time_scale \fR=\fPint
+When replaying I/O with \fBread_iolog\fR, fio will honor the original timing
+in the trace. With this option, it's possible to scale the time. It's a
+percentage option, if set to 50 it means run at 50% the original IO rate in
+the trace. If set to 200, run at twice the original IO rate. Defaults to 100.
+.TP
.BI replay_redirect \fR=\fPstr
While replaying I/O patterns using \fBread_iolog\fR the default behavior
is to replay the IOPS onto the major/minor device that each IOP was recorded
.group = FIO_OPT_G_IOLOG,
.pow2 = 1,
},
+ {
+ .name = "replay_time_scale",
+ .lname = "Replay Time Scale",
+ .type = FIO_OPT_INT,
+ .off1 = offsetof(struct thread_options, replay_time_scale),
+ .def = "100",
+ .minval = 1,
+ .parent = "read_iolog",
+ .hide = 1,
+ .help = "Scale time for replay events",
+ .category = FIO_OPT_C_IO,
+ .group = FIO_OPT_G_IOLOG,
+ },
{
.name = "exec_prerun",
.lname = "Pre-execute runnable",
};
enum {
- FIO_SERVER_VER = 71,
+ FIO_SERVER_VER = 72,
FIO_SERVER_MAX_FRAGMENT_PDU = 1024,
FIO_SERVER_MAX_CMD_MB = 2048,
unsigned int replay_align;
unsigned int replay_scale;
+ unsigned int replay_time_scale;
unsigned int per_job_logs;
uint32_t replay_align;
uint32_t replay_scale;
+ uint32_t replay_time_scale;
uint32_t per_job_logs;