diff --git a/lustre/ldlm/ldlm_pool.c b/lustre/ldlm/ldlm_pool.c index 17531e28e94046dcc5c59249d64b12149d2353b8..44307eb51693f42e2b76aa773666ba51e1b01100 100644 --- a/lustre/ldlm/ldlm_pool.c +++ b/lustre/ldlm/ldlm_pool.c @@ -352,17 +352,29 @@ static int lprocfs_rd_pool_state(char *page, char **start, off_t off, int nr = 0, granted, grant_rate, cancel_rate; int grant_speed, grant_plan, grant_step; struct ldlm_pool *pl = data; + time_t recalc_interval_sec; __u32 limit; __u64 slv; + recalc_interval_sec = cfs_duration_sec(cfs_time_current() - + pl->pl_update_time); + if (recalc_interval_sec == 0) + recalc_interval_sec = 1; + spin_lock(&pl->pl_lock); slv = pl->pl_server_lock_volume; limit = ldlm_pool_get_limit(pl); granted = atomic_read(&pl->pl_granted); - grant_rate = atomic_read(&pl->pl_grant_rate); - cancel_rate = atomic_read(&pl->pl_cancel_rate); - grant_speed = atomic_read(&pl->pl_grant_speed); + grant_rate = atomic_read(&pl->pl_grant_rate) / + recalc_interval_sec; + cancel_rate = atomic_read(&pl->pl_cancel_rate) / + recalc_interval_sec; + grant_speed = atomic_read(&pl->pl_grant_speed) / + recalc_interval_sec; grant_plan = atomic_read(&pl->pl_grant_plan); + grant_plan += atomic_read(&pl->pl_grant_speed) - + (atomic_read(&pl->pl_grant_speed) / + recalc_interval_sec); grant_step = atomic_read(&pl->pl_grant_step); spin_unlock(&pl->pl_lock);