• John Stultz's avatar
    pstore: Revert pmsg_lock back to a normal mutex · 5239a89b
    John Stultz authored
    This reverts commit 76d62f24.
    
    So while priority inversion on the pmsg_lock is an occasional
    problem that an rt_mutex would help with, in uses where logging
    is writing to pmsg heavily from multiple threads, the pmsg_lock
    can be heavily contended.
    
    After this change landed, it was reported that cases where the
    mutex locking overhead was commonly adding on the order of 10s
    of usecs delay had suddenly jumped to ~msec delay with rtmutex.
    
    It seems the slight differences in the locks under this level
    of contention causes the normal mutexes to utilize the spinning
    optimizations, while the rtmutexes end up in the sleeping
    slowpath (which allows additional threads to pile on trying
    to take the lock).
    
    In this case, it devolves to a worse case senerio where the lock
    acquisition and scheduling overhead dominates, and each thread
    is waiting on the order of ~ms to do ~us of work.
    
    Obviously, having tons of threads all contending on a single
    lock for logging is non-optimal, so the proper fix is probably
    reworking pstore pmsg to have per-cpu buffers so we don't have
    contention.
    
    Additionally, Steven Rostedt has provided some furhter
    optimizations for rtmutexes that improves the rtmutex spinning
    path, but at least in my testing, I still see the test tripping
    into the sleeping path on rtmutexes while utilizing the spinning
    path with mutexes.
    
    But in the short term, lets revert the change to the rt_mutex
    and go back to normal mutexes to avoid a potentially major
    performance regression. And we can work on optimizations to both
    rtmutexes and finer-grained locking for pstore pmsg in the
    future.
    
    Cc: Wei Wang <wvw@google.com>
    Cc: Midas Chien<midaschieh@google.com>
    Cc: "Chunhui Li (李春辉)" <chunhui.li@mediatek.com>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Anton Vorontsov <anton@enomsg.org>
    Cc: "Guilherme G. Piccoli" <gpiccoli@igalia.com>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: kernel-team@android.com
    Fixes: 76d62f24 ("pstore: Switch pmsg_lock to an rt_mutex to avoid priority inversion")
    Reported-by: default avatar"Chunhui Li (李春辉)" <chunhui.li@mediatek.com>
    Signed-off-by: default avatarJohn Stultz <jstultz@google.com>
    Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    Link: https://lore.kernel.org/r/20230308204043.2061631-1-jstultz@google.com
    5239a89b
pmsg.c 1.92 KB