From: Ingo Molnar <mingo@kernel.org>
To: Byungchul Park <byungchul.park@lge.com>
Cc: peterz@infradead.org, axboe@kernel.dk, tglx@linutronix.de,
linux-kernel@vger.kernel.org, linux-mm@kvack.org, tj@kernel.org,
johannes.berg@intel.com, oleg@redhat.com, amir73il@gmail.com,
david@fromorbit.com, darrick.wong@oracle.com,
linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-block@vger.kernel.org, hch@infradead.org,
idryomov@gmail.com, kernel-team@lge.com
Subject: Re: [PATCH v3 2/8] lockdep: Introduce CROSSRELEASE_STACK_TRACE and make it not unwind as default
Date: Tue, 24 Oct 2017 12:06:13 +0200 [thread overview]
Message-ID: <20171024100613.vqy3l7gfjychauoc@gmail.com> (raw)
In-Reply-To: <1508837889-16932-3-git-send-email-byungchul.park@lge.com>
Cannot pick up this series yet, but I have enhanced the changelog to:
=============>
Subject: locking/lockdep: Introduce CONFIG_CROSSRELEASE_STACK_TRACE and make it not unwind by default
From: Byungchul Park <byungchul.park@lge.com>
Date: Tue, 24 Oct 2017 18:38:03 +0900
Johan Hovold reported a heavy performance regression caused by
lockdep cross-release:
> 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]).
Currently crossrelease performs unwind on every acquisition, but that is
very expensive.
This patch makes unwind optional and disables it by default and only records
acquire_ip.
Full stack traces are sometimes required for full analysis, in which
case CROSSRELEASE_STACK_TRACE can be enabled.
On my qemu Ubuntu machine (x86_64, 4 cores, 512M), the regression was
fixed. We measure boot times with 'perf stat --null --repeat 10 $QEMU',
where $QEMU launches a kernel with init=/bin/true:
1. No lockdep enabled:
Performance counter stats for 'qemu_booting_time.sh bzImage' (10 runs):
2.756558155 seconds time elapsed ( +- 0.09% )
2. Lockdep enabled:
Performance counter stats for 'qemu_booting_time.sh bzImage' (10 runs):
2.968710420 seconds time elapsed ( +- 0.12% )
3. Lockdep enabled + crossrelease enabled:
Performance counter stats for 'qemu_booting_time.sh bzImage' (10 runs):
3.153839636 seconds time elapsed ( +- 0.31% )
4. Lockdep enabled + crossrelease enabled + this patch applied:
Performance counter stats for 'qemu_booting_time.sh bzImage' (10 runs):
2.963669551 seconds time elapsed ( +- 0.11% )
I.e. lockdep-crossrelease performance is now indistinguishable
from vanilla lockdep.
WARNING: multiple messages have this Message-ID (diff)
From: Ingo Molnar <mingo@kernel.org>
To: Byungchul Park <byungchul.park@lge.com>
Cc: peterz@infradead.org, axboe@kernel.dk, tglx@linutronix.de,
linux-kernel@vger.kernel.org, linux-mm@kvack.org, tj@kernel.org,
johannes.berg@intel.com, oleg@redhat.com, amir73il@gmail.com,
david@fromorbit.com, darrick.wong@oracle.com,
linux-xfs@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-block@vger.kernel.org, hch@infradead.org,
idryomov@gmail.com, kernel-team@lge.com
Subject: Re: [PATCH v3 2/8] lockdep: Introduce CROSSRELEASE_STACK_TRACE and make it not unwind as default
Date: Tue, 24 Oct 2017 12:06:13 +0200 [thread overview]
Message-ID: <20171024100613.vqy3l7gfjychauoc@gmail.com> (raw)
In-Reply-To: <1508837889-16932-3-git-send-email-byungchul.park@lge.com>
Cannot pick up this series yet, but I have enhanced the changelog to:
=============>
Subject: locking/lockdep: Introduce CONFIG_CROSSRELEASE_STACK_TRACE and make it not unwind by default
From: Byungchul Park <byungchul.park@lge.com>
Date: Tue, 24 Oct 2017 18:38:03 +0900
Johan Hovold reported a heavy performance regression caused by
lockdep cross-release:
> 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]).
Currently crossrelease performs unwind on every acquisition, but that is
very expensive.
This patch makes unwind optional and disables it by default and only records
acquire_ip.
Full stack traces are sometimes required for full analysis, in which
case CROSSRELEASE_STACK_TRACE can be enabled.
On my qemu Ubuntu machine (x86_64, 4 cores, 512M), the regression was
fixed. We measure boot times with 'perf stat --null --repeat 10 $QEMU',
where $QEMU launches a kernel with init=/bin/true:
1. No lockdep enabled:
Performance counter stats for 'qemu_booting_time.sh bzImage' (10 runs):
2.756558155 seconds time elapsed ( +- 0.09% )
2. Lockdep enabled:
Performance counter stats for 'qemu_booting_time.sh bzImage' (10 runs):
2.968710420 seconds time elapsed ( +- 0.12% )
3. Lockdep enabled + crossrelease enabled:
Performance counter stats for 'qemu_booting_time.sh bzImage' (10 runs):
3.153839636 seconds time elapsed ( +- 0.31% )
4. Lockdep enabled + crossrelease enabled + this patch applied:
Performance counter stats for 'qemu_booting_time.sh bzImage' (10 runs):
2.963669551 seconds time elapsed ( +- 0.11% )
I.e. lockdep-crossrelease performance is now indistinguishable
from vanilla lockdep.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2017-10-24 10:06 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-10-24 9:38 [PATCH v3 0/8] cross-release: enhence performance and fix false positives Byungchul Park
2017-10-24 9:38 ` Byungchul Park
2017-10-24 9:38 ` [PATCH v3 1/8] block: use DECLARE_COMPLETION_ONSTACK in submit_bio_wait Byungchul Park
2017-10-24 9:38 ` Byungchul Park
2017-10-24 9:38 ` [PATCH v3 2/8] lockdep: Introduce CROSSRELEASE_STACK_TRACE and make it not unwind as default Byungchul Park
2017-10-24 9:38 ` Byungchul Park
2017-10-24 10:05 ` Ingo Molnar
2017-10-24 10:05 ` Ingo Molnar
2017-10-25 1:01 ` Byungchul Park
2017-10-25 1:01 ` Byungchul Park
2017-10-25 5:53 ` Ingo Molnar
2017-10-25 5:53 ` Ingo Molnar
2017-10-24 10:06 ` Ingo Molnar [this message]
2017-10-24 10:06 ` Ingo Molnar
2017-10-24 9:38 ` [PATCH v3 3/8] lockdep: Remove BROKEN flag of LOCKDEP_CROSSRELEASE Byungchul Park
2017-10-24 9:38 ` Byungchul Park
2017-10-24 10:06 ` Ingo Molnar
2017-10-24 10:06 ` Ingo Molnar
2017-10-24 9:38 ` [PATCH v3 4/8] lockdep: Add a kernel parameter, crossrelease_fullstack Byungchul Park
2017-10-24 9:38 ` Byungchul Park
2017-10-24 10:08 ` Ingo Molnar
2017-10-24 10:08 ` Ingo Molnar
2017-10-24 23:45 ` Byungchul Park
2017-10-24 23:45 ` Byungchul Park
2017-10-24 9:38 ` [PATCH v3 5/8] completion: Add support for initializing completion with lockdep_map Byungchul Park
2017-10-24 9:38 ` Byungchul Park
2017-10-24 9:38 ` [PATCH v3 6/8] lockdep: Remove unnecessary acquisitions wrt workqueue flush Byungchul Park
2017-10-24 9:38 ` Byungchul Park
2017-10-24 9:38 ` [PATCH v3 7/8] genhd.h: Remove trailing white space Byungchul Park
2017-10-24 9:38 ` Byungchul Park
2017-10-24 10:10 ` Ingo Molnar
2017-10-24 10:10 ` Ingo Molnar
2017-10-24 9:38 ` [PATCH v3 8/8] block: Assign a lock_class per gendisk used for wait_for_completion() Byungchul Park
2017-10-24 9:38 ` Byungchul Park
2017-10-24 10:15 ` Ingo Molnar
2017-10-24 10:15 ` Ingo Molnar
2017-10-25 0:26 ` Byungchul Park
2017-10-25 0:26 ` Byungchul Park
2017-10-25 5:55 ` Ingo Molnar
2017-10-25 5:55 ` Ingo Molnar
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20171024100613.vqy3l7gfjychauoc@gmail.com \
--to=mingo@kernel.org \
--cc=amir73il@gmail.com \
--cc=axboe@kernel.dk \
--cc=byungchul.park@lge.com \
--cc=darrick.wong@oracle.com \
--cc=david@fromorbit.com \
--cc=hch@infradead.org \
--cc=idryomov@gmail.com \
--cc=johannes.berg@intel.com \
--cc=kernel-team@lge.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-xfs@vger.kernel.org \
--cc=oleg@redhat.com \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.