[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <dfcfc267-1a2f-8070-c08b-662e9fe4798c@redhat.com>
Date: Mon, 6 Jan 2020 10:54:24 -0500
From: Waiman Long <longman@...hat.com>
To: Peter Zijlstra <peterz@...radead.org>,
Ingo Molnar <mingo@...hat.com>,
Will Deacon <will.deacon@....com>
Cc: linux-kernel@...r.kernel.org, Bart Van Assche <bvanassche@....org>
Subject: Re: [PATCH v2 0/6] locking/lockdep: Reuse zapped chain_hlocks entries
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
Powered by blists - more mailing lists