diff options
author | Paul E. McKenney <paulmck@kernel.org> | 2023-08-01 17:15:25 -0700 |
---|---|---|
committer | Frederic Weisbecker <frederic@kernel.org> | 2023-09-13 22:28:49 +0200 |
commit | 16128b1f8c823438dcd3f3b4a57cbe7267bcf82f (patch) | |
tree | dc01b8ed2a8a967086de078d19dd78811946d8d4 /drivers/tty/serial/esp32_acm.c | |
parent | 4502138acc8f4139c94ce0ec0eee926f8805fbbc (diff) |
rcu: Add sysfs to provide throttled access to rcu_barrier()
When running a series of stress tests all making heavy use of RCU,
it is all too possible to OOM the system when the prior test's RCU
callbacks don't get invoked until after the subsequent test starts.
One way of handling this is just a timed wait, but this fails when a
given CPU has so many callbacks queued that they take longer to invoke
than allowed for by that timed wait.
This commit therefore adds an rcutree.do_rcu_barrier module parameter that
is accessible from sysfs. Writing one of the many synonyms for boolean
"true" will cause an rcu_barrier() to be invoked, but will guarantee that
no more than one rcu_barrier() will be invoked per sixteenth of a second
via this mechanism. The flip side is that a given request might wait a
second or three longer than absolutely necessary, but only when there are
multiple uses of rcutree.do_rcu_barrier within a one-second time interval.
This commit unnecessarily serializes the rcu_barrier() machinery, given
that serialization is already provided by procfs. This has the advantage
of allowing throttled rcu_barrier() from other sources within the kernel.
Reported-by: Johannes Weiner <hannes@cmpxchg.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Diffstat (limited to 'drivers/tty/serial/esp32_acm.c')
0 files changed, 0 insertions, 0 deletions