Re: [RFC PATCH v3 09/14] mm/memcontrol: Make memory.high tier-aware

Song Hu <[email protected]>
Newsgroups org.kernel.vger.cgroups,org.kernel.vger.linux-kernel,org.kvack.linux-mm
Message-ID <[email protected]>
(pre-existing, not from this series - mentioning it here because
it reworks memory.high behaviour)

The penalty computation in calculate_high_delay() can overflow:

	penalty_jiffies = max_overage * max_overage * HZ;

max_overage is a fixed-point relative overage:
calculate_overage() returns (usage - high) << 20 / high, so the
square times HZ wraps once (usage - high) / high reaches
4096 / sqrt(HZ).  That is roughly 130x at HZ=1000 and 259x at
HZ=250 - reachable when memory.high is tightened far below the
current usage of a large working set.

Most wrapped values are still caught by the 2s clamp in
mem_cgroup_handle_over_high(), but residues below the clamp pass
through, and some of them produce far less throttling than
intended - down to no sleep at all.

check_mul_overflow() with a clamp would saturate the penalty
instead of wrapping it.  Could be folded in while memory.high is
being reworked, or a standalone fix.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.