Skip to content

Commit

Permalink
Add number_ios= option
Browse files Browse the repository at this point in the history
Signed-off-by: Jens Axboe <[email protected]>
  • Loading branch information
axboe committed Aug 9, 2013
1 parent d2d982d commit ddf24e4
Show file tree
Hide file tree
Showing 7 changed files with 32 additions and 1 deletion.
7 changes: 7 additions & 0 deletions HOWTO
Original file line number Diff line number Diff line change
Expand Up @@ -709,6 +709,13 @@ offset_increment=int If this is provided, then the real offset becomes
which are intended to operate on a file in parallel in disjoint
segments, with even spacing between the starting points.

number_ios=int Fio will normally perform IOs until it has exhausted the size
of the region set by size=, or if it exhaust the allocated
time (or hits an error condition). With this setting, the
range/size can be set independently of the number of IOs to
perform. When fio reaches this number, it will exit normally
and report status.

fsync=int If writing to a file, issue a sync of the dirty data
for every number of blocks given. For example, if you give
32 as a parameter, fio will sync the file for every 32
Expand Down
2 changes: 2 additions & 0 deletions cconv.c
Original file line number Diff line number Diff line change
Expand Up @@ -146,6 +146,7 @@ void convert_thread_options_to_cpu(struct thread_options *o,
o->zone_skip = le64_to_cpu(top->zone_skip);
o->lockmem = le64_to_cpu(top->lockmem);
o->offset_increment = le64_to_cpu(top->offset_increment);
o->number_ios = le64_to_cpu(top->number_ios);

o->overwrite = le32_to_cpu(top->overwrite);
o->bw_avg_time = le32_to_cpu(top->bw_avg_time);
Expand Down Expand Up @@ -394,6 +395,7 @@ void convert_thread_options_to_net(struct thread_options_pack *top,
top->start_offset = __cpu_to_le64(o->start_offset);
top->trim_backlog = __cpu_to_le64(o->trim_backlog);
top->offset_increment = __cpu_to_le64(o->offset_increment);
top->number_ios = __cpu_to_le64(o->number_ios);

for (i = 0; i < FIO_IO_U_LIST_MAX_LEN; i++)
top->percentile_list[i].u.i = __cpu_to_le64(fio_double_to_uint64(o->percentile_list[i].u.f));
Expand Down
7 changes: 7 additions & 0 deletions fio.1
Original file line number Diff line number Diff line change
Expand Up @@ -576,6 +576,13 @@ that starts at 0 and is incremented for each job. This option is useful if
there are several jobs which are intended to operate on a file in parallel in
disjoint segments, with even spacing between the starting points.
.TP
.BI number_ios \fR=\fPint
Fio will normally perform IOs until it has exhausted the size of the region
set by \fBsize\fR, or if it exhaust the allocated time (or hits an error
condition). With this setting, the range/size can be set independently of
the number of IOs to perform. When fio reaches this number, it will exit
normally and report status.
.TP
.BI fsync \fR=\fPint
How many I/Os to perform before issuing an \fBfsync\fR\|(2) of dirty data. If
0, don't sync. Default: 0.
Expand Down
3 changes: 3 additions & 0 deletions io_u.c
Original file line number Diff line number Diff line change
Expand Up @@ -1413,6 +1413,9 @@ static void account_io_completion(struct thread_data *td, struct io_u *io_u,
add_bw_sample(td, idx, bytes, &icd->time);

add_iops_sample(td, idx, bytes, &icd->time);

if (td->o.number_ios && !--td->o.number_ios)
td->done = 1;
}

static long long usec_for_io(struct thread_data *td, enum fio_ddir ddir)
Expand Down
10 changes: 10 additions & 0 deletions options.c
Original file line number Diff line number Diff line change
Expand Up @@ -1482,6 +1482,16 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
.category = FIO_OPT_C_IO,
.group = FIO_OPT_G_INVALID,
},
{
.name = "number_ios",
.lname = "Number of IOs to perform",
.type = FIO_OPT_STR_VAL,
.off1 = td_var_offset(number_ios),
.help = "Force job completion of this number of IOs",
.def = "0",
.category = FIO_OPT_C_IO,
.group = FIO_OPT_G_INVALID,
},
{
.name = "bs",
.lname = "Block size",
Expand Down
2 changes: 1 addition & 1 deletion server.h
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ struct fio_net_cmd_reply {
};

enum {
FIO_SERVER_VER = 24,
FIO_SERVER_VER = 25,

FIO_SERVER_MAX_FRAGMENT_PDU = 1024,

Expand Down
2 changes: 2 additions & 0 deletions thread_options.h
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,7 @@ struct thread_options {
unsigned int flow_sleep;

unsigned long long offset_increment;
unsigned long long number_ios;

unsigned int sync_file_range;
};
Expand Down Expand Up @@ -440,6 +441,7 @@ struct thread_options_pack {
uint32_t flow_sleep;

uint64_t offset_increment;
uint64_t number_ios;

uint32_t sync_file_range;
} __attribute__((packed));
Expand Down

0 comments on commit ddf24e4

Please sign in to comment.