mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-09-18 23:09:29 +02:00
block/blk-iolatency: account per-cpu latency stats over possible CPUs
iolatency_check_latencies() and iolatency_ssd_stat() iterate a blkg's per-cpu latency stats with for_each_online_cpu(). When a CPU that has accumulated io.latency samples goes offline, its bucket is skipped: the check loop (which also resets) neither sums nor clears it, and the show path under-reports. On re-online the stranded samples are flushed into a later check window, which can trigger a spurious throttle/scale adjustment. Fixes:d706751215("block: introduce blk-iolatency io controller") Fixes:1fa2840e56("blk-iolatency: use a percentile approache for ssd's") Signed-off-by: Tao Cui <cuitao@kylinos.cn> Reviewed-by: Yu Kuai <yukuai@fygo.io> Link: https://patch.msgid.link/20260720093726.28965-3-cui.tao@linux.dev Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
@@ -523,7 +523,7 @@ static void iolatency_check_latencies(struct iolatency_grp *iolat, u64 now)
|
||||
|
||||
latency_stat_init(iolat, &stat);
|
||||
preempt_disable();
|
||||
for_each_online_cpu(cpu) {
|
||||
for_each_possible_cpu(cpu) {
|
||||
struct latency_stat *s;
|
||||
s = per_cpu_ptr(iolat->stats, cpu);
|
||||
latency_stat_sum(iolat, &stat, s);
|
||||
@@ -925,7 +925,7 @@ static void iolatency_ssd_stat(struct iolatency_grp *iolat, struct seq_file *s)
|
||||
|
||||
latency_stat_init(iolat, &stat);
|
||||
preempt_disable();
|
||||
for_each_online_cpu(cpu) {
|
||||
for_each_possible_cpu(cpu) {
|
||||
struct latency_stat *s;
|
||||
s = per_cpu_ptr(iolat->stats, cpu);
|
||||
latency_stat_sum(iolat, &stat, s);
|
||||
|
||||
Reference in New Issue
Block a user