Messages in this thread |  | | From | Waiman Long <> | Subject | [PATCH v2 0/6] locking/lockdep: Reuse zapped chain_hlocks entries | Date | Mon, 16 Dec 2019 10:15:11 -0500 |
| |
v2: - Revamp the chain_hlocks reuse patch to store the freed chain_hlocks information in the chain_hlocks entries themselves avoiding the need of a separate set of tracking structures. This, however, requires a minimum allocation size of at least 2. Thanks to PeterZ for his review and inspiring this change. - Remove the leakage counter as it is no longer applicable. - Add patch 6 to make the output of /proc/lockdep_chains more readable.
It was found that when running a workload that kept on adding lock classes and then zapping them repetitively, the system will eventually run out of chain_hlocks[] entries even though there were still plenty of other lockdep data buffers available.
[ 4318.443670] BUG: MAX_LOCKDEP_CHAIN_HLOCKS too low! [ 4318.444809] turning off the locking correctness validator.
In order to fix this problem, we have to make chain_hlocks[] entries reusable just like other lockdep arrays. Besides that, the patchset also adds some zapped class and chain_hlocks counters to be tracked by /proc/lockdep_stats. It also fixes leakage in the irq context counters and makes the output of /proc/lockdep_chains more readable.
Waiman Long (6): locking/lockdep: Track number of zapped classes locking/lockdep: Throw away all lock chains with zapped class locking/lockdep: Track number of zapped lock chains locking/lockdep: Reuse freed chain_hlocks entries locking/lockdep: Decrement irq context counters when removing lock chain locking/lockdep: Display irq_context names in /proc/lockdep_chains
kernel/locking/lockdep.c | 307 +++++++++++++++++++++++------ kernel/locking/lockdep_internals.h | 14 +- kernel/locking/lockdep_proc.c | 26 ++- 3 files changed, 282 insertions(+), 65 deletions(-)
-- 2.18.1
|  |