From c3852ae26bbe6072b2905938bb4fb0f511977cba Mon Sep 17 00:00:00 2001 From: Jens Axboe Date: Fri, 23 Feb 2007 10:47:46 +0100 Subject: [PATCH] Improve rate usec calculation Signed-off-by: Jens Axboe --- log.c | 10 +++++++++- time.c | 10 +++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/log.c b/log.c index 513128d6..6de98ac2 100644 --- a/log.c +++ b/log.c @@ -187,6 +187,7 @@ int setup_rate(struct thread_data *td) { unsigned long long rate; int nr_reads_per_msec; + unsigned int bs; if (!td->rate) return 0; @@ -196,8 +197,15 @@ int setup_rate(struct thread_data *td) return -1; } + if (td_rw(td)) + bs = td->rw_min_bs; + else if (td_read(td)) + bs = td->min_bs[DDIR_READ]; + else + bs = td->min_bs[DDIR_WRITE]; + rate = td->rate; - nr_reads_per_msec = (rate * 1024 * 1000) / td->min_bs[DDIR_READ]; + nr_reads_per_msec = (rate * 1024 * 1000) / bs; if (!nr_reads_per_msec) { log_err("rate lower than supported\n"); return -1; diff --git a/time.c b/time.c index 4bf68a99..45a415cb 100644 --- a/time.c +++ b/time.c @@ -112,11 +112,19 @@ void rate_throttle(struct thread_data *td, unsigned long time_spent, unsigned int bytes) { unsigned long usec_cycle; + unsigned int bs; if (!td->rate) return; - usec_cycle = td->rate_usec_cycle * (bytes / td->rw_min_bs); + if (td_rw(td)) + bs = td->rw_min_bs; + else if (td_read(td)) + bs = td->min_bs[DDIR_READ]; + else + bs = td->min_bs[DDIR_WRITE]; + + usec_cycle = td->rate_usec_cycle * (bytes / bs); if (time_spent < usec_cycle) { unsigned long s = usec_cycle - time_spent; -- 2.25.1