td_set_runstate(td, TD_RUNNING);
while (td->this_io_bytes[td->ddir] < td->io_size) {
- struct timespec ts = { .tv_sec = 0, .tv_nsec = 0};
struct timespec *timeout;
int min_evts = 0;
struct io_u *io_u;
add_slat_sample(td, io_u->ddir, mtime_since(&io_u->start_time, &io_u->issue_time));
if (td->cur_depth < td->iodepth) {
+ struct timespec ts = { .tv_sec = 0, .tv_nsec = 0};
+
timeout = &ts;
min_evts = 0;
} else {
if (runtime_exceeded(td, &icd.time))
break;
- if (td->thinktime)
- usec_sleep(td, td->thinktime);
+ if (td->thinktime) {
+ unsigned long long b;
+
+ b = td->io_blocks[0] + td->io_blocks[1];
+ if (!(b % td->thinktime_blocks))
+ usec_sleep(td, td->thinktime);
+ }
}
if (!td->error) {
td->orig_buffer_size = max_bs * max_units;
if (td->mem_type == MEM_SHMHUGE || td->mem_type == MEM_MMAPHUGE)
- td->orig_buffer_size = (td->orig_buffer_size + FIO_HUGE_PAGE - 1) & ~(FIO_HUGE_PAGE - 1);
+ td->orig_buffer_size = (td->orig_buffer_size + td->hugepage_size - 1) & ~(td->hugepage_size - 1);
else
td->orig_buffer_size += MASK;