Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

iocost_monitor: print vrate inuse along with base_vrate

The real vrate iocost inuse is not base_vrate, but the atomic vtime_rate.
We need iocost_monitor tool to display this real vrate that iocost use,
to check if the boosted compensated vrate is normal.

Effect after change:

nvme0n1 RUN per=50.0ms cur_per=172116.580:v1040587.433 busy= +0 \
vrate=135.00%:270.00% params=ssd_dfl(CQ)
^
|
this is real vrate inuse

Signed-off-by: Chengming Zhou <zhouchengming@bytedance.com>
Link: https://lore.kernel.org/r/20230804065039.8885-2-chengming.zhou@linux.dev
Signed-off-by: Jens Axboe <axboe@kernel.dk>

authored by

Chengming Zhou and committed by
Jens Axboe
8e93c1ac 2eae9c49

+5 -2
+5 -2
tools/cgroup/iocost_monitor.py
··· 100 100 self.period_at = ioc.period_at.value_() / 1_000_000 101 101 self.vperiod_at = ioc.period_at_vtime.value_() / VTIME_PER_SEC 102 102 self.vrate_pct = ioc.vtime_base_rate.value_() * 100 / VTIME_PER_USEC 103 + self.ivrate_pct = ioc.vtime_rate.counter.value_() * 100 / VTIME_PER_USEC 103 104 self.busy_level = ioc.busy_level.value_() 104 105 self.autop_idx = ioc.autop_idx.value_() 105 106 self.user_cost_model = ioc.user_cost_model.value_() ··· 120 119 'period_at' : self.period_at, 121 120 'period_vtime_at' : self.vperiod_at, 122 121 'busy_level' : self.busy_level, 123 - 'vrate_pct' : self.vrate_pct, } 122 + 'vrate_pct' : self.vrate_pct, 123 + 'ivrate_pct' : self.ivrate_pct, 124 + } 124 125 125 126 def table_preamble_str(self): 126 127 state = ('RUN' if self.running else 'IDLE') if self.enabled else 'OFF' ··· 130 127 f'per={self.period_ms}ms ' \ 131 128 f'cur_per={self.period_at:.3f}:v{self.vperiod_at:.3f} ' \ 132 129 f'busy={self.busy_level:+3} ' \ 133 - f'vrate={self.vrate_pct:6.2f}% ' \ 130 + f'vrate={self.vrate_pct:6.2f}%:{self.ivrate_pct:6.2f}% ' \ 134 131 f'params={self.autop_name}' 135 132 if self.user_cost_model or self.user_qos_params: 136 133 output += f'({"C" if self.user_cost_model else ""}{"Q" if self.user_qos_params else ""})'