lkml.org 
[lkml]   [2017]   [Oct]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: Dramatic lockdep slowdown in 4.14

    * Johan Hovold <johan@kernel.org> wrote:

    > Hi,
    >
    > I had noticed that the BeagleBone Black boot time appeared to have
    > increased significantly with 4.14 and yesterday I finally had time to
    > investigate it.
    >
    > Boot time (from "Linux version" to login prompt) had in fact doubled
    > since 4.13 where it took 17 seconds (with my current config) compared to
    > the 35 seconds I now see with 4.14-rc4.
    >
    > I quick bisect pointed to lockdep and specifically the following commit:
    >
    > 28a903f63ec0 ("locking/lockdep: Handle non(or multi)-acquisition
    > of a crosslock")
    >
    > which I've verified is the commit which doubled the boot time (compared
    > to 28a903f63ec0^) (added by lockdep crossrelease series [1]).
    >
    > I also verified that simply disabling CONFIG_PROVE_LOCKING on 4.14-rc4
    > brought boot time down to about 14 seconds.
    >
    > Now since it's lockdep I guess this can't really be considered a
    > regression if these changes did improve lockdep correctness, but still,
    > this dramatic slow down essentially forces me to disable PROVE_LOCKING
    > by default on this system.
    >
    > Is this lockdep slowdown expected and desirable?

    It's not desirable at all.

    Does the patch below fix the regression for you - or does the introduction and
    handling of ->nr_acquire hurt as well?

    Thanks,

    Ingo

    ====================>
    lib/Kconfig.debug | 4 ++--
    1 file changed, 2 insertions(+), 2 deletions(-)

    diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
    index c6401d325b0e..f5b40c1668ea 100644
    --- a/lib/Kconfig.debug
    +++ b/lib/Kconfig.debug
    @@ -1138,8 +1138,8 @@ config PROVE_LOCKING
    select DEBUG_MUTEXES
    select DEBUG_RT_MUTEXES if RT_MUTEXES
    select DEBUG_LOCK_ALLOC
    - select LOCKDEP_CROSSRELEASE
    - select LOCKDEP_COMPLETIONS
    +# select LOCKDEP_CROSSRELEASE
    +# select LOCKDEP_COMPLETIONS
    select TRACE_IRQFLAGS
    default n
    help
    \
     
     \ /
      Last update: 2017-10-14 09:27    [W:4.506 / U:0.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site