Re: [PATCH v2 0/6] locking/lockdep: Reuse zapped chain_hlocks entries

Waiman Long
2020-01-06T15:54:33Z

On 12/16/19 10:15 AM, Waiman Long wrote:
> 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(-)
>
Ping! Any comments or suggestion for further improvement?

Cheers,
Longman