All of lore.kernel.org
 help / color / mirror / Atom feed
From: Joel Fernandes <joel@joelfernandes.org>
To: Balbir Singh <bsingharora@gmail.com>
Cc: linux-mips@linux-mips.org, Rich Felker <dalias@libc.org>,
	linux-ia64@vger.kernel.org, linux-sh@vger.kernel.org,
	Peter Zijlstra <peterz@infradead.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Will Deacon <will.deacon@arm.com>,
	mhocko@kernel.org, linux-mm@kvack.org, lokeshgidra@google.com,
	sparclinux@vger.kernel.org, linux-riscv@lists.infradead.org,
	elfring@users.sourceforge.net, Jonas Bonn <jonas@southpole.se>,
	kvmarm@lists.cs.columbia.edu, dancol@google.com,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	linux-xtensa@linux-xtensa.org, linux-hexagon@vger.kernel.org,
	Helge Deller <deller@gmx.de>,
	"maintainer:X86 ARCHITECTURE \(32-BIT AND 64-BIT\)"
	<x86@kernel.org>,
	hughd@google.com, "James E.J. Bottomley" <jejb@parisc-linux.org>,
	kasan-dev@googlegroups.com, anton.ivanov@kot-begemot.co.uk,
	Ingo Molnar <mingo@redhat.com>,
	Geert Uy
Subject: Re: [PATCH 2/4] mm: speed up mremap by 500x on large regions (v2)
Date: Sat, 27 Oct 2018 12:39:17 -0700	[thread overview]
Message-ID: <20181027193917.GA51131@joelaf.mtv.corp.google.com> (raw)
In-Reply-To: <20181027102102.GO8537@350D>

Hi Balbir,

On Sat, Oct 27, 2018 at 09:21:02PM +1100, Balbir Singh wrote:
> On Wed, Oct 24, 2018 at 07:13:50PM -0700, Joel Fernandes wrote:
> > On Wed, Oct 24, 2018 at 10:57:33PM +1100, Balbir Singh wrote:
> > [...]
> > > > > +		pmd_t pmd;
> > > > > +
> > > > > +		new_ptl = pmd_lockptr(mm, new_pmd);
> > > 
> > > 
> > > Looks like this is largely inspired by move_huge_pmd(), I guess a lot of
> > > the code applies, why not just reuse as much as possible? The same comments
> > > w.r.t mmap_sem helping protect against lock order issues applies as well.
> > 
> > I thought about this and when I looked into it, it seemed there are subtle
> > differences that make such sharing not worth it (or not possible).
> >
> 
> Could you elaborate on them?

The move_huge_page function is defined only for CONFIG_TRANSPARENT_HUGEPAGE
so we cannot reuse it to begin with, since we have it disabled on our
systems. I am not sure if it is a good idea to split that out and refactor it
for reuse especially since our case is quite simple compared to huge pages.

There are also a couple of subtle differences between the move_normal_pmd and
the move_huge_pmd. Atleast 2 of them are:

1. We don't concern ourself with the PMD dirty bit, since the pages being
moved are normal pages and at the soft-dirty bit accounting is at the PTE
level, since we are not moving PTEs, we don't need to do that.

2. The locking is simpler as Kirill pointed, pmd_lock cannot fail however
__pmd_trans_huge_lock can.

I feel it is not super useful to refactor move_huge_pmd to support our case
especially since move_normal_pmd is quite small, so IMHO the benefit of code
reuse isn't there very much.

Do let me know your thoughts and thanks for your interest in this.

thanks,

 - Joel

WARNING: multiple messages have this Message-ID (diff)
From: Joel Fernandes <joel@joelfernandes.org>
To: Balbir Singh <bsingharora@gmail.com>
Cc: "Kirill A. Shutemov" <kirill@shutemov.name>,
	linux-kernel@vger.kernel.org, kernel-team@android.com,
	minchan@kernel.org, pantin@google.com, hughd@google.com,
	lokeshgidra@google.com, dancol@google.com, mhocko@kernel.org,
	akpm@linux-foundation.org,
	Andrey Ryabinin <aryabinin@virtuozzo.com>,
	Andy Lutomirski <luto@kernel.org>,
	anton.ivanov@kot-begemot.co.uk, Borislav Petkov <bp@alien8.de>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Chris Zankel <chris@zankel.net>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	"David S. Miller" <davem@davemloft.net>,
	elfring@users.sourceforge.net, Fenghua Yu <fenghua.yu@intel.com>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Guan Xuetao <gxt@pku.edu.cn>, Helge Deller <deller@gmx.de>,
	Ingo Molnar <mingo@redhat.com>,
	"James E.J. Bottomley" <jejb@parisc-linux.org>,
	Jeff Dike <jdike@addtoit.com>, Jonas Bonn <jonas@southpole.se>,
	Julia Lawall <Julia.Lawall@lip6.fr>,
	kasan-dev@googlegroups.com, kvmarm@lists.cs.columbia.edu,
	Ley Foon Tan <lftan@altera.com>,
	linux-alpha@vger.kernel.org, linux-hexagon@vger.kernel.org,
	linux-ia64@vger.kernel.org, linux-m68k@lists.linux-m68k.org,
	linux-mips@linux-mips.org, linux-mm@kvack.org,
	linux-parisc@vger.kernel.org, linuxppc-dev@lists.ozlabs.org,
	linux-riscv@lists.infradead.org, linux-s390@vger.kernel.org,
	linux-sh@vger.kernel.org, linux-snps-arc@lists.infradead.org,
	linux-um@lists.infradead.org, linux-xtensa@linux-xtensa.org,
	Max Filippov <jcmvbkbc@gmail.com>,
	nios2-dev@lists.rocketboards.org,
	Peter Zijlstra <peterz@infradead.org>,
	Richard Weinberger <richard@nod.at>,
	Rich Felker <dalias@libc.org>, Sam Creasey <sammy@sammy.net>,
	sparclinux@vger.kernel.org, Stafford Horne <shorne@gmail.com>,
	Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>,
	Thomas Gleixner <tglx@linutronix.de>,
	Tony Luck <tony.luck@intel.com>,
	Will Deacon <will.deacon@arm.com>,
	"maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT)"
	<x86@kernel.org>, Yoshinori Sato <ysato@users.sourceforge.jp>
Subject: Re: [PATCH 2/4] mm: speed up mremap by 500x on large regions (v2)
Date: Sat, 27 Oct 2018 12:39:17 -0700	[thread overview]
Message-ID: <20181027193917.GA51131@joelaf.mtv.corp.google.com> (raw)
In-Reply-To: <20181027102102.GO8537@350D>

Hi Balbir,

On Sat, Oct 27, 2018 at 09:21:02PM +1100, Balbir Singh wrote:
> On Wed, Oct 24, 2018 at 07:13:50PM -0700, Joel Fernandes wrote:
> > On Wed, Oct 24, 2018 at 10:57:33PM +1100, Balbir Singh wrote:
> > [...]
> > > > > +		pmd_t pmd;
> > > > > +
> > > > > +		new_ptl = pmd_lockptr(mm, new_pmd);
> > > 
> > > 
> > > Looks like this is largely inspired by move_huge_pmd(), I guess a lot of
> > > the code applies, why not just reuse as much as possible? The same comments
> > > w.r.t mmap_sem helping protect against lock order issues applies as well.
> > 
> > I thought about this and when I looked into it, it seemed there are subtle
> > differences that make such sharing not worth it (or not possible).
> >
> 
> Could you elaborate on them?

The move_huge_page function is defined only for CONFIG_TRANSPARENT_HUGEPAGE
so we cannot reuse it to begin with, since we have it disabled on our
systems. I am not sure if it is a good idea to split that out and refactor it
for reuse especially since our case is quite simple compared to huge pages.

There are also a couple of subtle differences between the move_normal_pmd and
the move_huge_pmd. Atleast 2 of them are:

1. We don't concern ourself with the PMD dirty bit, since the pages being
moved are normal pages and at the soft-dirty bit accounting is at the PTE
level, since we are not moving PTEs, we don't need to do that.

2. The locking is simpler as Kirill pointed, pmd_lock cannot fail however
__pmd_trans_huge_lock can.

I feel it is not super useful to refactor move_huge_pmd to support our case
especially since move_normal_pmd is quite small, so IMHO the benefit of code
reuse isn't there very much.

Do let me know your thoughts and thanks for your interest in this.

thanks,

 - Joel

WARNING: multiple messages have this Message-ID (diff)
From: joel@joelfernandes.org (Joel Fernandes)
To: linux-riscv@lists.infradead.org
Subject: [PATCH 2/4] mm: speed up mremap by 500x on large regions (v2)
Date: Sat, 27 Oct 2018 12:39:17 -0700	[thread overview]
Message-ID: <20181027193917.GA51131@joelaf.mtv.corp.google.com> (raw)
In-Reply-To: <20181027102102.GO8537@350D>

Hi Balbir,

On Sat, Oct 27, 2018 at 09:21:02PM +1100, Balbir Singh wrote:
> On Wed, Oct 24, 2018 at 07:13:50PM -0700, Joel Fernandes wrote:
> > On Wed, Oct 24, 2018 at 10:57:33PM +1100, Balbir Singh wrote:
> > [...]
> > > > > +		pmd_t pmd;
> > > > > +
> > > > > +		new_ptl = pmd_lockptr(mm, new_pmd);
> > > 
> > > 
> > > Looks like this is largely inspired by move_huge_pmd(), I guess a lot of
> > > the code applies, why not just reuse as much as possible? The same comments
> > > w.r.t mmap_sem helping protect against lock order issues applies as well.
> > 
> > I thought about this and when I looked into it, it seemed there are subtle
> > differences that make such sharing not worth it (or not possible).
> >
> 
> Could you elaborate on them?

The move_huge_page function is defined only for CONFIG_TRANSPARENT_HUGEPAGE
so we cannot reuse it to begin with, since we have it disabled on our
systems. I am not sure if it is a good idea to split that out and refactor it
for reuse especially since our case is quite simple compared to huge pages.

There are also a couple of subtle differences between the move_normal_pmd and
the move_huge_pmd. Atleast 2 of them are:

1. We don't concern ourself with the PMD dirty bit, since the pages being
moved are normal pages and at the soft-dirty bit accounting is at the PTE
level, since we are not moving PTEs, we don't need to do that.

2. The locking is simpler as Kirill pointed, pmd_lock cannot fail however
__pmd_trans_huge_lock can.

I feel it is not super useful to refactor move_huge_pmd to support our case
especially since move_normal_pmd is quite small, so IMHO the benefit of code
reuse isn't there very much.

Do let me know your thoughts and thanks for your interest in this.

thanks,

 - Joel

WARNING: multiple messages have this Message-ID (diff)
From: Joel Fernandes <joel@joelfernandes.org>
To: Balbir Singh <bsingharora@gmail.com>
Cc: linux-mips@linux-mips.org, Rich Felker <dalias@libc.org>,
	linux-ia64@vger.kernel.org, linux-sh@vger.kernel.org,
	Peter Zijlstra <peterz@infradead.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Will Deacon <will.deacon@arm.com>,
	mhocko@kernel.org, linux-mm@kvack.org, lokeshgidra@google.com,
	sparclinux@vger.kernel.org, linux-riscv@lists.infradead.org,
	elfring@users.sourceforge.net, Jonas Bonn <jonas@southpole.se>,
	kvmarm@lists.cs.columbia.edu, dancol@google.com,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	linux-xtensa@linux-xtensa.org, linux-hexagon@vger.kernel.org,
	Helge Deller <deller@gmx.de>,
	"maintainer:X86 ARCHITECTURE \(32-BIT AND 64-BIT\)"
	<x86@kernel.org>,
	hughd@google.com, "James E.J. Bottomley" <jejb@parisc-linux.org>,
	kasan-dev@googlegroups.com, anton.ivanov@kot-begemot.co.uk,
	Ingo Molnar <mingo@redhat.com>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Andrey Ryabinin <aryabinin@virtuozzo.com>,
	linux-snps-arc@lists.infradead.org, kernel-team@android.com,
	Sam Creasey <sammy@sammy.net>, Fenghua Yu <fenghua.yu@intel.com>,
	linux-s390@vger.kernel.org, Jeff Dike <jdike@addtoit.com>,
	linux-um@lists.infradead.org,
	Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>,
	Julia Lawall <Julia.Lawall@lip6.fr>,
	linux-m68k@lists.linux-m68k.org, Borislav Petkov <bp@alien8.de>,
	Andy Lutomirski <luto@kernel.org>,
	nios2-dev@lists.rocketboards.org,
	"Kirill A. Shutemov" <kirill@shutemov.name>,
	Stafford Horne <shorne@gmail.com>, Guan Xuetao <gxt@pku.edu.cn>,
	Chris Zankel <chris@zankel.net>, Tony Luck <tony.luck@intel.com>,
	Richard Weinberger <richard@nod.at>,
	linux-parisc@vger.kernel.org, pantin@google.com,
	Max Filippov <jcmvbkbc@gmail.com>,
	linux-kernel@vger.kernel.org, minchan@kernel.org,
	Thomas Gleixner <tglx@linutronix.de>,
	linux-alpha@vger.kernel.org, Ley Foon Tan <lftan@altera.com>,
	akpm@linux-foundation.org, linuxppc-dev@lists.ozlabs.org,
	"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH 2/4] mm: speed up mremap by 500x on large regions (v2)
Date: Sat, 27 Oct 2018 12:39:17 -0700	[thread overview]
Message-ID: <20181027193917.GA51131@joelaf.mtv.corp.google.com> (raw)
Message-ID: <20181027193917.4bi4eH0QalqrYLVQkfQF3Ssxcg4If9_oEmkvK1poIck@z> (raw)
In-Reply-To: <20181027102102.GO8537@350D>

Hi Balbir,

On Sat, Oct 27, 2018 at 09:21:02PM +1100, Balbir Singh wrote:
> On Wed, Oct 24, 2018 at 07:13:50PM -0700, Joel Fernandes wrote:
> > On Wed, Oct 24, 2018 at 10:57:33PM +1100, Balbir Singh wrote:
> > [...]
> > > > > +		pmd_t pmd;
> > > > > +
> > > > > +		new_ptl = pmd_lockptr(mm, new_pmd);
> > > 
> > > 
> > > Looks like this is largely inspired by move_huge_pmd(), I guess a lot of
> > > the code applies, why not just reuse as much as possible? The same comments
> > > w.r.t mmap_sem helping protect against lock order issues applies as well.
> > 
> > I thought about this and when I looked into it, it seemed there are subtle
> > differences that make such sharing not worth it (or not possible).
> >
> 
> Could you elaborate on them?

The move_huge_page function is defined only for CONFIG_TRANSPARENT_HUGEPAGE
so we cannot reuse it to begin with, since we have it disabled on our
systems. I am not sure if it is a good idea to split that out and refactor it
for reuse especially since our case is quite simple compared to huge pages.

There are also a couple of subtle differences between the move_normal_pmd and
the move_huge_pmd. Atleast 2 of them are:

1. We don't concern ourself with the PMD dirty bit, since the pages being
moved are normal pages and at the soft-dirty bit accounting is at the PTE
level, since we are not moving PTEs, we don't need to do that.

2. The locking is simpler as Kirill pointed, pmd_lock cannot fail however
__pmd_trans_huge_lock can.

I feel it is not super useful to refactor move_huge_pmd to support our case
especially since move_normal_pmd is quite small, so IMHO the benefit of code
reuse isn't there very much.

Do let me know your thoughts and thanks for your interest in this.

thanks,

 - Joel


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

WARNING: multiple messages have this Message-ID (diff)
From: Joel Fernandes <joel@joelfernandes.org>
To: Balbir Singh <bsingharora@gmail.com>
Cc: linux-mips@linux-mips.org, Rich Felker <dalias@libc.org>,
	linux-ia64@vger.kernel.org, linux-sh@vger.kernel.org,
	Peter Zijlstra <peterz@infradead.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Will Deacon <will.deacon@arm.com>,
	mhocko@kernel.org, linux-mm@kvack.org, lokeshgidra@google.com,
	sparclinux@vger.kernel.org, linux-riscv@lists.infradead.org,
	elfring@users.sourceforge.net, Jonas Bonn <jonas@southpole.se>,
	kvmarm@lists.cs.columbia.edu, dancol@google.com,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	linux-xtensa@linux-xtensa.org, linux-hexagon@vger.kernel.org,
	Helge Deller <deller@gmx.de>,
	"maintainer:X86 ARCHITECTURE \(32-BIT AND 64-BIT\)"
	<x86@kernel.org>,
	hughd@google.com, "James E.J. Bottomley" <jejb@parisc-linux.org>,
	kasan-dev@googlegroups.com, anton.ivanov@kot-begemot.co.uk,
	Ingo Molnar <mingo@redhat.com>,
	Geert Uytterhoeven <geert@linux-m68k.org>,
	Andrey Ryabinin <aryabinin@virtuozzo.com>,
	linux-snps-arc@lists.infradead.org, kernel-team@android.com,
	Sam Creasey <sammy@sammy.net>, Fenghua Yu <fenghua.yu@intel.com>,
	linux-s390@vger.kernel.org, Jeff Dike <jdike@addtoit.com>,
	linux-um@lists.infradead.org,
	Stefan Kristiansson <stefan.kristiansson@saunalahti.fi>,
	Julia Lawall <Julia.Lawall@lip6.fr>,
	linux-m68k@lists.linux-m68k.org, Borislav Petkov <bp@alien8.de>,
	Andy Lutomirski <luto@kernel.org>,
	nios2-dev@lists.rocketboards.org,
	"Kirill A. Shutemov" <kirill@shutemov.name>,
	Stafford Horne <shorne@gmail.com>, Guan Xuetao <gxt@pku.edu.cn>,
	Chris Zankel <chris@zankel.net>, Tony Luck <tony.luck@intel.com>,
	Richard Weinberger <richard@nod.at>,
	linux-parisc@vger.kernel.org, pantin@google.com,
	Max Filippov <jcmvbkbc@gmail.com>,
	linux-kernel@vger.kernel.org, minchan@kernel.org,
	Thomas Gleixner <tglx@linutronix.de>,
	linux-alpha@vger.kernel.org, Ley Foon Tan <lftan@altera.com>,
	akpm@linux-foundation.org, linuxppc-dev@lists.ozlabs.org,
	"David S. Miller" <davem@davemloft.net>
Subject: Re: [PATCH 2/4] mm: speed up mremap by 500x on large regions (v2)
Date: Sat, 27 Oct 2018 12:39:17 -0700	[thread overview]
Message-ID: <20181027193917.GA51131@joelaf.mtv.corp.google.com> (raw)
In-Reply-To: <20181027102102.GO8537@350D>

Hi Balbir,

On Sat, Oct 27, 2018 at 09:21:02PM +1100, Balbir Singh wrote:
> On Wed, Oct 24, 2018 at 07:13:50PM -0700, Joel Fernandes wrote:
> > On Wed, Oct 24, 2018 at 10:57:33PM +1100, Balbir Singh wrote:
> > [...]
> > > > > +		pmd_t pmd;
> > > > > +
> > > > > +		new_ptl = pmd_lockptr(mm, new_pmd);
> > > 
> > > 
> > > Looks like this is largely inspired by move_huge_pmd(), I guess a lot of
> > > the code applies, why not just reuse as much as possible? The same comments
> > > w.r.t mmap_sem helping protect against lock order issues applies as well.
> > 
> > I thought about this and when I looked into it, it seemed there are subtle
> > differences that make such sharing not worth it (or not possible).
> >
> 
> Could you elaborate on them?

The move_huge_page function is defined only for CONFIG_TRANSPARENT_HUGEPAGE
so we cannot reuse it to begin with, since we have it disabled on our
systems. I am not sure if it is a good idea to split that out and refactor it
for reuse especially since our case is quite simple compared to huge pages.

There are also a couple of subtle differences between the move_normal_pmd and
the move_huge_pmd. Atleast 2 of them are:

1. We don't concern ourself with the PMD dirty bit, since the pages being
moved are normal pages and at the soft-dirty bit accounting is at the PTE
level, since we are not moving PTEs, we don't need to do that.

2. The locking is simpler as Kirill pointed, pmd_lock cannot fail however
__pmd_trans_huge_lock can.

I feel it is not super useful to refactor move_huge_pmd to support our case
especially since move_normal_pmd is quite small, so IMHO the benefit of code
reuse isn't there very much.

Do let me know your thoughts and thanks for your interest in this.

thanks,

 - Joel


WARNING: multiple messages have this Message-ID (diff)
From: joel@joelfernandes.org (Joel Fernandes)
To: linux-snps-arc@lists.infradead.org
Subject: [PATCH 2/4] mm: speed up mremap by 500x on large regions (v2)
Date: Sat, 27 Oct 2018 12:39:17 -0700	[thread overview]
Message-ID: <20181027193917.GA51131@joelaf.mtv.corp.google.com> (raw)
In-Reply-To: <20181027102102.GO8537@350D>

Hi Balbir,

On Sat, Oct 27, 2018@09:21:02PM +1100, Balbir Singh wrote:
> On Wed, Oct 24, 2018@07:13:50PM -0700, Joel Fernandes wrote:
> > On Wed, Oct 24, 2018@10:57:33PM +1100, Balbir Singh wrote:
> > [...]
> > > > > +		pmd_t pmd;
> > > > > +
> > > > > +		new_ptl = pmd_lockptr(mm, new_pmd);
> > > 
> > > 
> > > Looks like this is largely inspired by move_huge_pmd(), I guess a lot of
> > > the code applies, why not just reuse as much as possible? The same comments
> > > w.r.t mmap_sem helping protect against lock order issues applies as well.
> > 
> > I thought about this and when I looked into it, it seemed there are subtle
> > differences that make such sharing not worth it (or not possible).
> >
> 
> Could you elaborate on them?

The move_huge_page function is defined only for CONFIG_TRANSPARENT_HUGEPAGE
so we cannot reuse it to begin with, since we have it disabled on our
systems. I am not sure if it is a good idea to split that out and refactor it
for reuse especially since our case is quite simple compared to huge pages.

There are also a couple of subtle differences between the move_normal_pmd and
the move_huge_pmd. Atleast 2 of them are:

1. We don't concern ourself with the PMD dirty bit, since the pages being
moved are normal pages and at the soft-dirty bit accounting is at the PTE
level, since we are not moving PTEs, we don't need to do that.

2. The locking is simpler as Kirill pointed, pmd_lock cannot fail however
__pmd_trans_huge_lock can.

I feel it is not super useful to refactor move_huge_pmd to support our case
especially since move_normal_pmd is quite small, so IMHO the benefit of code
reuse isn't there very much.

Do let me know your thoughts and thanks for your interest in this.

thanks,

 - Joel

WARNING: multiple messages have this Message-ID (diff)
From: Joel Fernandes <joel@joelfernandes.org>
To: Balbir Singh <bsingharora@gmail.com>
Cc: linux-mips@linux-mips.org, Rich Felker <dalias@libc.org>,
	linux-ia64@vger.kernel.org, linux-sh@vger.kernel.org,
	Peter Zijlstra <peterz@infradead.org>,
	Catalin Marinas <catalin.marinas@arm.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Will Deacon <will.deacon@arm.com>,
	mhocko@kernel.org, linux-mm@kvack.org, lokeshgidra@google.com,
	sparclinux@vger.kernel.org, linux-riscv@lists.infradead.org,
	elfring@users.sourceforge.net, Jonas Bonn <jonas@southpole.se>,
	kvmarm@lists.cs.columbia.edu, dancol@google.com,
	Yoshinori Sato <ysato@users.sourceforge.jp>,
	linux-xtensa@linux-xtensa.org, linux-hexagon@vger.kernel.org,
	Helge Deller <deller@gmx.de>,
	"maintainer:X86 ARCHITECTURE (32-BIT AND 64-BIT)"
	<x86@kernel.org>,
	hughd@google.com, "James E.J. Bottomley" <jejb@parisc-linux.org>,
	kasan-dev@googlegroups.com, anton.ivanov@kot-begemot.co.uk,
	Ingo Molnar <mingo@redhat.com>,
	Geert
Subject: Re: [PATCH 2/4] mm: speed up mremap by 500x on large regions (v2)
Date: Sat, 27 Oct 2018 12:39:17 -0700	[thread overview]
Message-ID: <20181027193917.GA51131@joelaf.mtv.corp.google.com> (raw)
In-Reply-To: <20181027102102.GO8537@350D>

Hi Balbir,

On Sat, Oct 27, 2018 at 09:21:02PM +1100, Balbir Singh wrote:
> On Wed, Oct 24, 2018 at 07:13:50PM -0700, Joel Fernandes wrote:
> > On Wed, Oct 24, 2018 at 10:57:33PM +1100, Balbir Singh wrote:
> > [...]
> > > > > +		pmd_t pmd;
> > > > > +
> > > > > +		new_ptl = pmd_lockptr(mm, new_pmd);
> > > 
> > > 
> > > Looks like this is largely inspired by move_huge_pmd(), I guess a lot of
> > > the code applies, why not just reuse as much as possible? The same comments
> > > w.r.t mmap_sem helping protect against lock order issues applies as well.
> > 
> > I thought about this and when I looked into it, it seemed there are subtle
> > differences that make such sharing not worth it (or not possible).
> >
> 
> Could you elaborate on them?

The move_huge_page function is defined only for CONFIG_TRANSPARENT_HUGEPAGE
so we cannot reuse it to begin with, since we have it disabled on our
systems. I am not sure if it is a good idea to split that out and refactor it
for reuse especially since our case is quite simple compared to huge pages.

There are also a couple of subtle differences between the move_normal_pmd and
the move_huge_pmd. Atleast 2 of them are:

1. We don't concern ourself with the PMD dirty bit, since the pages being
moved are normal pages and at the soft-dirty bit accounting is at the PTE
level, since we are not moving PTEs, we don't need to do that.

2. The locking is simpler as Kirill pointed, pmd_lock cannot fail however
__pmd_trans_huge_lock can.

I feel it is not super useful to refactor move_huge_pmd to support our case
especially since move_normal_pmd is quite small, so IMHO the benefit of code
reuse isn't there very much.

Do let me know your thoughts and thanks for your interest in this.

thanks,

 - Joel

  reply	other threads:[~2018-10-27 19:39 UTC|newest]

Thread overview: 192+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-13  1:31 [PATCH 0/4] Add support for fast mremap Joel Fernandes (Google)
2018-10-13  1:31 ` Joel Fernandes (Google)
2018-10-13  1:31 ` Joel Fernandes (Google)
2018-10-13  1:31 ` Joel Fernandes (Google)
2018-10-13  1:31 ` Joel Fernandes (Google)
2018-10-13  1:31 ` Joel Fernandes (Google)
2018-10-13  1:31 ` Joel Fernandes (Google)
2018-10-13  1:31 ` Joel Fernandes (Google)
2018-10-13  1:31 ` [PATCH 1/4] treewide: remove unused address argument from pte_alloc functions (v2) Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-24  8:37   ` Peter Zijlstra
2018-10-24  8:37     ` Peter Zijlstra
2018-10-24  8:37     ` Peter Zijlstra
2018-10-24  8:37     ` Peter Zijlstra
2018-10-24  8:37     ` Peter Zijlstra
2018-10-24  8:37     ` Peter Zijlstra
2018-10-24  8:37     ` Peter Zijlstra
2018-10-24  8:37     ` Peter Zijlstra
2018-10-25  2:21     ` Joel Fernandes
2018-10-25  2:21       ` Joel Fernandes
2018-10-25  2:21       ` Joel Fernandes
2018-10-25  2:21       ` Joel Fernandes
2018-10-25  2:21       ` Joel Fernandes
2018-10-25  2:21       ` Joel Fernandes
2018-10-25  2:21       ` Joel Fernandes
2018-10-26  8:52       ` Peter Zijlstra
2018-10-26  8:52         ` Peter Zijlstra
2018-10-26  8:52         ` Peter Zijlstra
2018-10-26  8:52         ` Peter Zijlstra
2018-10-26  8:52         ` Peter Zijlstra
2018-10-26  8:52         ` Peter Zijlstra
2018-10-26  8:52         ` Peter Zijlstra
2018-10-26  8:52         ` Peter Zijlstra
2018-10-25 10:47     ` Kirill A. Shutemov
2018-10-25 10:47       ` Kirill A. Shutemov
2018-10-25 10:47       ` Kirill A. Shutemov
2018-10-25 10:47       ` Kirill A. Shutemov
2018-10-25 10:47       ` Kirill A. Shutemov
2018-10-25 10:47       ` Kirill A. Shutemov
2018-10-25 10:47       ` Kirill A. Shutemov
2018-10-26  8:50       ` Peter Zijlstra
2018-10-26  8:50         ` Peter Zijlstra
2018-10-26  8:50         ` Peter Zijlstra
2018-10-26  8:50         ` Peter Zijlstra
2018-10-26  8:50         ` Peter Zijlstra
2018-10-26  8:50         ` Peter Zijlstra
2018-10-26  8:50         ` Peter Zijlstra
2018-10-26  8:50         ` Peter Zijlstra
2018-10-13  1:31 ` [PATCH 2/4] mm: speed up mremap by 500x on large regions (v2) Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-15  9:42   ` Christoph Hellwig
2018-10-15  9:42     ` Christoph Hellwig
2018-10-15  9:42     ` Christoph Hellwig
2018-10-15  9:42     ` Christoph Hellwig
2018-10-15  9:42     ` Christoph Hellwig
2018-10-15  9:42     ` Christoph Hellwig
2018-10-15  9:42     ` Christoph Hellwig
2018-10-15  9:42     ` Christoph Hellwig
2018-10-15 22:33     ` Joel Fernandes
2018-10-15 22:33       ` Joel Fernandes
2018-10-15 22:33       ` Joel Fernandes
2018-10-15 22:33       ` Joel Fernandes
2018-10-15 22:33       ` Joel Fernandes
2018-10-15 22:33       ` Joel Fernandes
2018-10-15 22:33       ` Joel Fernandes
2018-10-16 11:29       ` Vlastimil Babka
2018-10-16 11:29         ` Vlastimil Babka
2018-10-16 11:29         ` Vlastimil Babka
2018-10-16 11:29         ` Vlastimil Babka
2018-10-16 11:29         ` Vlastimil Babka
2018-10-16 11:29         ` Vlastimil Babka
2018-10-16 11:29         ` Vlastimil Babka
2018-10-16 19:43         ` Joel Fernandes
2018-10-16 19:43           ` Joel Fernandes
2018-10-16 19:43           ` Joel Fernandes
2018-10-16 19:43           ` Joel Fernandes
2018-10-16 19:43           ` Joel Fernandes
2018-10-16 19:43           ` Joel Fernandes
2018-10-17  7:38           ` Vlastimil Babka
2018-10-17  7:38             ` Vlastimil Babka
2018-10-17  7:38             ` Vlastimil Babka
2018-10-17  7:38             ` Vlastimil Babka
2018-10-17  7:38             ` Vlastimil Babka
2018-10-17  7:38             ` Vlastimil Babka
2018-10-24 10:12   ` Kirill A. Shutemov
2018-10-24 10:12     ` Kirill A. Shutemov
2018-10-24 10:12     ` Kirill A. Shutemov
2018-10-24 10:12     ` Kirill A. Shutemov
2018-10-24 10:12     ` Kirill A. Shutemov
2018-10-24 10:12     ` Kirill A. Shutemov
2018-10-24 10:12     ` Kirill A. Shutemov
2018-10-24 11:57     ` Balbir Singh
2018-10-24 11:57       ` Balbir Singh
2018-10-24 11:57       ` Balbir Singh
2018-10-24 11:57       ` Balbir Singh
2018-10-24 11:57       ` Balbir Singh
2018-10-24 11:57       ` Balbir Singh
2018-10-24 11:57       ` Balbir Singh
2018-10-24 12:57       ` Kirill A. Shutemov
2018-10-24 12:57         ` Kirill A. Shutemov
2018-10-24 12:57         ` Kirill A. Shutemov
2018-10-24 12:57         ` Kirill A. Shutemov
2018-10-24 12:57         ` Kirill A. Shutemov
2018-10-24 12:57         ` Kirill A. Shutemov
2018-10-24 12:57         ` Kirill A. Shutemov
2018-10-25  2:09         ` Joel Fernandes
2018-10-25  2:09           ` Joel Fernandes
2018-10-25  2:09           ` Joel Fernandes
2018-10-25  2:09           ` Joel Fernandes
2018-10-25  2:09           ` Joel Fernandes
2018-10-25  2:09           ` Joel Fernandes
2018-10-25  2:09           ` Joel Fernandes
2018-10-25  2:09           ` Joel Fernandes
2018-10-25 10:19           ` Kirill A. Shutemov
2018-10-25 10:19             ` Kirill A. Shutemov
2018-10-25 10:19             ` Kirill A. Shutemov
2018-10-25 10:19             ` Kirill A. Shutemov
2018-10-25 10:19             ` Kirill A. Shutemov
2018-10-25 10:19             ` Kirill A. Shutemov
2018-10-25 10:19             ` Kirill A. Shutemov
2018-10-25 10:19             ` Kirill A. Shutemov
2018-10-26 21:11             ` Joel Fernandes
2018-10-26 21:11               ` Joel Fernandes
2018-10-26 21:11               ` Joel Fernandes
2018-10-26 21:11               ` Joel Fernandes
2018-10-26 21:11               ` Joel Fernandes
2018-10-26 21:11               ` Joel Fernandes
2018-10-26 21:11               ` Joel Fernandes
2018-10-26 21:11               ` Joel Fernandes
2018-10-29 10:28               ` Will Deacon
2018-10-29 10:28                 ` Will Deacon
2018-10-29 10:28                 ` Will Deacon
2018-10-29 10:28                 ` Will Deacon
2018-10-29 10:28                 ` Will Deacon
2018-10-29 10:28                 ` Will Deacon
2018-10-29 10:28                 ` Will Deacon
2018-10-25  2:13       ` Joel Fernandes
2018-10-25  2:13         ` Joel Fernandes
2018-10-25  2:13         ` Joel Fernandes
2018-10-25  2:13         ` Joel Fernandes
2018-10-25  2:13         ` Joel Fernandes
2018-10-25  2:13         ` Joel Fernandes
2018-10-25  2:13         ` Joel Fernandes
2018-10-27 10:21         ` Balbir Singh
2018-10-27 10:21           ` Balbir Singh
2018-10-27 10:21           ` Balbir Singh
2018-10-27 10:21           ` Balbir Singh
2018-10-27 10:21           ` Balbir Singh
2018-10-27 10:21           ` Balbir Singh
2018-10-27 10:21           ` Balbir Singh
2018-10-27 19:39           ` Joel Fernandes [this message]
2018-10-27 19:39             ` Joel Fernandes
2018-10-27 19:39             ` Joel Fernandes
2018-10-27 19:39             ` Joel Fernandes
2018-10-27 19:39             ` Joel Fernandes
2018-10-27 19:39             ` Joel Fernandes
2018-10-27 19:39             ` Joel Fernandes
2018-10-28 22:40             ` Balbir Singh
2018-10-28 22:40               ` Balbir Singh
2018-10-28 22:40               ` Balbir Singh
2018-10-28 22:40               ` Balbir Singh
2018-10-28 22:40               ` Balbir Singh
2018-10-28 22:40               ` Balbir Singh
2018-10-28 22:40               ` Balbir Singh
2018-10-13  1:31 ` [PATCH 3/4] arm64: select HAVE_MOVE_PMD for faster mremap (v1) Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:31   ` Joel Fernandes (Google)
2018-10-13  1:32 ` [PATCH 4/4] x86: " Joel Fernandes (Google)
2018-10-13  1:32   ` Joel Fernandes (Google)
2018-10-13  1:32   ` Joel Fernandes (Google)
2018-10-13  1:32   ` Joel Fernandes (Google)
2018-10-13  1:32   ` Joel Fernandes (Google)
2018-10-13  1:32   ` Joel Fernandes (Google)
2018-10-13  1:32   ` Joel Fernandes (Google)
2018-10-13  1:32   ` Joel Fernandes (Google)

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=20181027193917.GA51131@joelaf.mtv.corp.google.com \
    --to=joel@joelfernandes.org \
    --cc=anton.ivanov@kot-begemot.co.uk \
    --cc=bsingharora@gmail.com \
    --cc=catalin.marinas@arm.com \
    --cc=dalias@libc.org \
    --cc=dancol@google.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=deller@gmx.de \
    --cc=elfring@users.sourceforge.net \
    --cc=hughd@google.com \
    --cc=jejb@parisc-linux.org \
    --cc=jonas@southpole.se \
    --cc=kasan-dev@googlegroups.com \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=linux-hexagon@vger.kernel.org \
    --cc=linux-ia64@vger.kernel.org \
    --cc=linux-mips@linux-mips.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=linux-sh@vger.kernel.org \
    --cc=linux-xtensa@linux-xtensa.org \
    --cc=lokeshgidra@google.com \
    --cc=mhocko@kernel.org \
    --cc=mingo@redhat.com \
    --cc=peterz@infradead.org \
    --cc=sparclinux@vger.kernel.org \
    --cc=will.deacon@arm.com \
    --cc=x86@kernel.org \
    --cc=ysato@users.sourceforge.jp \
    /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.