From: Leonardo Bras <leonardo@linux.ibm.com>
To: Christophe Leroy <christophe.leroy@c-s.fr>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Paul Mackerras <paulus@samba.org>,
Michael Ellerman <mpe@ellerman.id.au>,
Arnd Bergmann <arnd@arndb.de>,
Andrew Morton <akpm@linux-foundation.org>,
"Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>,
Nicholas Piggin <npiggin@gmail.com>,
Steven Price <steven.price@arm.com>,
Robin Murphy <robin.murphy@arm.com>,
Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>,
Balbir Singh <bsingharora@gmail.com>,
Reza Arbab <arbab@linux.ibm.com>,
Thomas Gleixner <tglx@linutronix.de>,
Allison Randal <allison@lohutok.net>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Mike Rapoport <rppt@linux.ibm.com>,
Michal Suchanek <msuchanek@suse.de>
Cc: linux-arch@vger.kernel.org, linux-mm@kvack.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
kvm-ppc@vger.kernel.org
Subject: Re: [PATCH v6 10/11] powerpc/mm: Adds counting method to track lockless pagetable walks
Date: Fri, 07 Feb 2020 01:56:40 +0000 [thread overview]
Message-ID: <ee81338952c474f2bb4c19055105e906ee89ed8f.camel@linux.ibm.com> (raw)
In-Reply-To: <d9bf6878-43d5-b45a-7abb-cdcb712a0d7a@c-s.fr>
[-- Attachment #1: Type: text/plain, Size: 1611 bytes --]
Hello Christophe, thanks for the feedback!
On Thu, 2020-02-06 at 07:23 +0100, Christophe Leroy wrote:
> > Due to not locking nor using atomic variables, the impact on the
> > lockless pagetable walk is intended to be minimum.
>
> atomic variables have a lot less impact than preempt_enable/disable.
>
> preemt_disable forces a re-scheduling, it really has impact. Why not use
> atomic variables instead ?
In fact, v5 of this patch used atomic variables. But it seems to cause
contention on a single exclusive cacheline, which had no better
performance than locking.
(discussion here: http://patchwork.ozlabs.org/patch/1171012/)
When I try to understand the effect of preempt_disable(), all I can
see is a barrier() and possibly a preempt_count_inc(), which updates a
member of current thread struct if CONFIG_PREEMPT_COUNT is enabled.
If CONFIG_PREEMPTION is also enabled, preempt_enable() can run a
__preempt_schedule() on unlikely(__preempt_count_dec_and_test()).
On most configs available, CONFIG_PREEMPTION is not set, being replaced
either by CONFIG_PREEMPT_NONE (kernel defconfigs) or
CONFIG_PREEMPT_VOLUNTARY in most supported distros. With that, most
probably CONFIG_PREEMPT_COUNT will also not be set, and
preempt_{en,dis}able() are replaced by a barrier().
Using preempt_disable approach, I intent to get better performance for
most used cases.
What do you think of it?
I am still new on this subject, and I am still trying to better
understand how it works. If you notice something I am missing, please
let me know.
Best regards,
Leonardo Bras
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Leonardo Bras <leonardo@linux.ibm.com>
To: Christophe Leroy <christophe.leroy@c-s.fr>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Paul Mackerras <paulus@samba.org>,
Michael Ellerman <mpe@ellerman.id.au>,
Arnd Bergmann <arnd@arndb.de>,
Andrew Morton <akpm@linux-foundation.org>,
"Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>,
Nicholas Piggin <npiggin@gmail.com>,
Steven Price <steven.price@arm.com>,
Robin Murphy <robin.murphy@arm.com>,
Mahesh Salgaonkar <mahesh@linux.vnet.ibm.com>,
Balbir Singh <bsingharora@gmail.com>,
Reza Arbab <arbab@linux.ibm.com>,
Thomas Gleixner <tglx@linutronix.de>,
Allison Randal <allison@lohutok.net>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Mike Rapoport <rppt@linux.ibm.com>,
Michal Suchanek <msuchanek@suse.de>
Cc: linux-arch@vger.kernel.org, linux-mm@kvack.org,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
kvm-ppc@vger.kernel.org
Subject: Re: [PATCH v6 10/11] powerpc/mm: Adds counting method to track lockless pagetable walks
Date: Thu, 06 Feb 2020 22:56:40 -0300 [thread overview]
Message-ID: <ee81338952c474f2bb4c19055105e906ee89ed8f.camel@linux.ibm.com> (raw)
In-Reply-To: <d9bf6878-43d5-b45a-7abb-cdcb712a0d7a@c-s.fr>
[-- Attachment #1: Type: text/plain, Size: 1611 bytes --]
Hello Christophe, thanks for the feedback!
On Thu, 2020-02-06 at 07:23 +0100, Christophe Leroy wrote:
> > Due to not locking nor using atomic variables, the impact on the
> > lockless pagetable walk is intended to be minimum.
>
> atomic variables have a lot less impact than preempt_enable/disable.
>
> preemt_disable forces a re-scheduling, it really has impact. Why not use
> atomic variables instead ?
In fact, v5 of this patch used atomic variables. But it seems to cause
contention on a single exclusive cacheline, which had no better
performance than locking.
(discussion here: http://patchwork.ozlabs.org/patch/1171012/)
When I try to understand the effect of preempt_disable(), all I can
see is a barrier() and possibly a preempt_count_inc(), which updates a
member of current thread struct if CONFIG_PREEMPT_COUNT is enabled.
If CONFIG_PREEMPTION is also enabled, preempt_enable() can run a
__preempt_schedule() on unlikely(__preempt_count_dec_and_test()).
On most configs available, CONFIG_PREEMPTION is not set, being replaced
either by CONFIG_PREEMPT_NONE (kernel defconfigs) or
CONFIG_PREEMPT_VOLUNTARY in most supported distros. With that, most
probably CONFIG_PREEMPT_COUNT will also not be set, and
preempt_{en,dis}able() are replaced by a barrier().
Using preempt_disable approach, I intent to get better performance for
most used cases.
What do you think of it?
I am still new on this subject, and I am still trying to better
understand how it works. If you notice something I am missing, please
let me know.
Best regards,
Leonardo Bras
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
next prev parent reply other threads:[~2020-02-07 1:56 UTC|newest]
Thread overview: 117+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-06 3:08 [PATCH v6 00/11] Introduces new functions for tracking lockless pagetable walks Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` [PATCH v6 01/11] asm-generic/pgtable: Adds generic functions to track lockless pgtable walks Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 5:54 ` Christophe Leroy
2020-02-06 5:54 ` Christophe Leroy
2020-02-06 5:54 ` Christophe Leroy
2020-02-07 2:19 ` Leonardo Bras
2020-02-07 2:19 ` Leonardo Bras
2020-02-07 2:19 ` Leonardo Bras
2020-02-07 5:39 ` kbuild test robot
2020-02-07 5:39 ` kbuild test robot
2020-02-07 5:39 ` kbuild test robot
2020-02-07 5:39 ` kbuild test robot
2020-02-07 5:39 ` kbuild test robot
2020-02-07 5:39 ` kbuild test robot
2020-02-06 3:08 ` [PATCH v6 02/11] mm/gup: Use functions to track lockless pgtbl walks on gup_pgd_range Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:25 ` Leonardo Bras
2020-02-06 3:25 ` Leonardo Bras
2020-02-07 22:54 ` John Hubbard
2020-02-07 22:54 ` John Hubbard
2020-02-17 20:55 ` Leonardo Bras
2020-02-17 20:55 ` Leonardo Bras
2020-02-17 20:55 ` Leonardo Bras
2020-10-15 14:46 ` Michal Suchánek
2020-10-15 14:46 ` Michal Suchánek
2020-10-15 14:46 ` Michal Suchánek
2020-10-16 3:27 ` Aneesh Kumar K.V
2020-10-16 3:39 ` Aneesh Kumar K.V
2020-10-16 3:27 ` Aneesh Kumar K.V
2020-02-07 1:19 ` kbuild test robot
2020-02-07 1:19 ` kbuild test robot
2020-02-07 1:19 ` kbuild test robot
2020-02-07 1:19 ` kbuild test robot
2020-02-07 1:19 ` kbuild test robot
2020-02-07 1:19 ` kbuild test robot
2020-02-07 8:01 ` kbuild test robot
2020-02-07 8:01 ` kbuild test robot
2020-02-07 8:01 ` kbuild test robot
2020-02-07 8:01 ` kbuild test robot
2020-02-07 8:01 ` kbuild test robot
2020-02-07 8:01 ` kbuild test robot
2020-02-06 3:08 ` [PATCH v6 03/11] powerpc/mm: Adds arch-specificic functions to track lockless pgtable walks Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 5:46 ` Christophe Leroy
2020-02-06 5:46 ` Christophe Leroy
2020-02-06 5:46 ` Christophe Leroy
2020-02-07 4:38 ` Leonardo Bras
2020-02-07 4:38 ` Leonardo Bras
2020-02-07 4:38 ` Leonardo Bras
2020-02-17 20:32 ` Leonardo Bras
2020-02-17 20:32 ` Leonardo Bras
2020-02-17 20:32 ` Leonardo Bras
2020-02-06 3:08 ` [PATCH v6 04/11] powerpc/mce_power: Use functions to track lockless pgtbl walks Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 5:48 ` Christophe Leroy
2020-02-06 5:48 ` Christophe Leroy
2020-02-06 5:48 ` Christophe Leroy
2020-02-07 4:00 ` Leonardo Bras
2020-02-07 4:00 ` Leonardo Bras
2020-02-07 4:00 ` Leonardo Bras
2020-02-06 3:08 ` [PATCH v6 05/11] powerpc/perf: " Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` [PATCH v6 06/11] powerpc/mm/book3s64/hash: " Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 6:06 ` Christophe Leroy
2020-02-06 6:06 ` Christophe Leroy
2020-02-06 6:06 ` Christophe Leroy
2020-02-07 3:49 ` Leonardo Bras
2020-02-07 3:49 ` Leonardo Bras
2020-02-07 3:49 ` Leonardo Bras
2020-02-06 3:08 ` [PATCH v6 07/11] powerpc/kvm/e500: " Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 6:18 ` Christophe Leroy
2020-02-06 6:18 ` Christophe Leroy
2020-02-06 6:18 ` Christophe Leroy
2020-02-07 3:10 ` Leonardo Bras
2020-02-07 3:10 ` Leonardo Bras
2020-02-07 3:10 ` Leonardo Bras
2020-02-06 3:08 ` [PATCH v6 08/11] powerpc/kvm/book3s_hv: " Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` [PATCH v6 09/11] powerpc/kvm/book3s_64: " Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` [PATCH v6 10/11] powerpc/mm: Adds counting method to track lockless pagetable walks Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 3:08 ` Leonardo Bras
2020-02-06 6:23 ` Christophe Leroy
2020-02-06 6:23 ` Christophe Leroy
2020-02-06 6:23 ` Christophe Leroy
2020-02-07 1:56 ` Leonardo Bras [this message]
2020-02-07 1:56 ` Leonardo Bras
2020-02-06 3:09 ` [PATCH v6 11/11] powerpc/mm/book3s64/pgtable: Uses counting method to skip serializing Leonardo Bras
2020-02-06 3:09 ` Leonardo Bras
2020-02-06 3:09 ` Leonardo Bras
2020-02-06 3:09 ` Leonardo Bras
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=ee81338952c474f2bb4c19055105e906ee89ed8f.camel@linux.ibm.com \
--to=leonardo@linux.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=allison@lohutok.net \
--cc=aneesh.kumar@linux.ibm.com \
--cc=arbab@linux.ibm.com \
--cc=arnd@arndb.de \
--cc=benh@kernel.crashing.org \
--cc=bsingharora@gmail.com \
--cc=christophe.leroy@c-s.fr \
--cc=gregkh@linuxfoundation.org \
--cc=kvm-ppc@vger.kernel.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mahesh@linux.vnet.ibm.com \
--cc=mpe@ellerman.id.au \
--cc=msuchanek@suse.de \
--cc=npiggin@gmail.com \
--cc=paulus@samba.org \
--cc=robin.murphy@arm.com \
--cc=rppt@linux.ibm.com \
--cc=steven.price@arm.com \
--cc=tglx@linutronix.de \
/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.