diff options
author | 2025-06-19 14:26:25 -0400 | |
---|---|---|
committer | 2025-07-31 11:27:48 -0400 | |
commit | 8557c8628cf3cf8ebd3b32601ccdde550bbf6c54 (patch) | |
tree | d93dcf9819b8999760aec589411511e82a5732cf /rust/pin-init/internal/src | |
parent | cpumask: introduce cpumask_random() (diff) | |
download | wireguard-linux-8557c8628cf3cf8ebd3b32601ccdde550bbf6c54.tar.xz wireguard-linux-8557c8628cf3cf8ebd3b32601ccdde550bbf6c54.zip |
clocksource: Improve randomness in clocksource_verify_choose_cpus()
The current algorithm of picking a random CPU works OK for dense online
cpumask, but if cpumask is non-dense, the distribution of picked CPUs
is skewed.
For example, on 8-CPU board with CPUs 4-7 offlined, the probability of
selecting CPU 0 is 5/8. Accordingly, cpus 1, 2 and 3 are chosen with
probability 1/8 each. The proper algorithm should pick each online CPU
with probability 1/4.
Switch it to cpumask_random(), which has better statistical
characteristics.
CC: Andrew Morton <akpm@linux-foundation.org>
Acked-by: John Stultz <jstultz@google.com>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: "Yury Norov [NVIDIA]" <yury.norov@gmail.com>
Diffstat (limited to 'rust/pin-init/internal/src')
0 files changed, 0 insertions, 0 deletions