History

mm: lru_cache_disable: use synchronize_rcu_expedited

commit ff042f4a9b050 ("mm: lru_cache_disable: replace work queue synchronization with synchronize_rcu") replaced lru_cache_disable's usage of work queues with synchronize_rcu. Some users reported large performance regressions due to this commit, for example: https://lore.kernel.org/all/20220521234616.GO1790663@paulmck-ThinkPad-P17-Gen-1/T/ Switching to synchronize_rcu_expedited fixes the problem.

Marcelo Tosatti committed 4 years ago

Commit 31733461 parent 04299931 file · +1 −1Browse files

Unified · Split

mm/swap.c+1−1
@@ -881,7 +881,7 @@ void lru_cache_disable(void) · 880 unmodified lines
881881 * lru_disable_count = 0 will have exited the critical
882882 * section when synchronize_rcu() returns.
883883 */
884− synchronize_rcu();
884+ synchronize_rcu_expedited();
885885 #ifdef CONFIG_SMP
886886 __lru_add_drain_all(true);
887887 #else