Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1630484 > unrolled thread
| Started by | "Huang, Ying" <ying.huang@intel.com> |
|---|---|
| First post | 2017-04-25 15:00 +0200 |
| Last post | 2017-04-28 15:20 +0200 |
| Articles | 3 — 3 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH -mm -v10 3/3] mm, THP, swap: Enable THP swap optimization only if has compound map "Huang, Ying" <ying.huang@intel.com> - 2017-04-25 15:00 +0200
Re: [PATCH -mm -v10 3/3] mm, THP, swap: Enable THP swap optimization only if has compound map Johannes Weiner <hannes@cmpxchg.org> - 2017-04-25 23:50 +0200
Re: [PATCH -mm -v10 3/3] mm, THP, swap: Enable THP swap optimization only if has compound map "Kirill A. Shutemov" <kirill@shutemov.name> - 2017-04-28 15:20 +0200
| From | "Huang, Ying" <ying.huang@intel.com> |
|---|---|
| Date | 2017-04-25 15:00 +0200 |
| Subject | [PATCH -mm -v10 3/3] mm, THP, swap: Enable THP swap optimization only if has compound map |
| Message-ID | <tA8eu-4Pu-29@gated-at.bofh.it> |
From: Huang Ying <ying.huang@intel.com>
If there is no compound map for a THP (Transparent Huge Page), it is
possible that the map count of some sub-pages of the THP is 0. So it
is better to split the THP before swapping out. In this way, the
sub-pages not mapped will be freed, and we can avoid the unnecessary
swap out operations for these sub-pages.
Cc: Johannes Weiner <hannes@cmpxchg.org>
Signed-off-by: "Huang, Ying" <ying.huang@intel.com>
---
mm/swap_state.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/mm/swap_state.c b/mm/swap_state.c
index 006d91d8fc53..13f83c6bb1b4 100644
--- a/mm/swap_state.c
+++ b/mm/swap_state.c
@@ -192,9 +192,19 @@ int add_to_swap(struct page *page, struct list_head *list)
VM_BUG_ON_PAGE(!PageLocked(page), page);
VM_BUG_ON_PAGE(!PageUptodate(page), page);
- /* cannot split, skip it */
- if (PageTransHuge(page) && !can_split_huge_page(page, NULL))
- return 0;
+ if (PageTransHuge(page)) {
+ /* cannot split, skip it */
+ if (!can_split_huge_page(page, NULL))
+ return 0;
+ /*
+ * Split pages without a PMD map right away. Chances
+ * are some or all of the tail pages can be freed
+ * without IO.
+ */
+ if (!compound_mapcount(page) &&
+ split_huge_page_to_list(page, list))
+ return 0;
+ }
retry:
entry = get_swap_page(page);
--
2.11.0
[toc] | [next] | [standalone]
| From | Johannes Weiner <hannes@cmpxchg.org> |
|---|---|
| Date | 2017-04-25 23:50 +0200 |
| Subject | Re: [PATCH -mm -v10 3/3] mm, THP, swap: Enable THP swap optimization only if has compound map |
| Message-ID | <tAgvn-1HU-13@gated-at.bofh.it> |
| In reply to | #1630484 |
On Tue, Apr 25, 2017 at 08:56:58PM +0800, Huang, Ying wrote:
> From: Huang Ying <ying.huang@intel.com>
>
> If there is no compound map for a THP (Transparent Huge Page), it is
> possible that the map count of some sub-pages of the THP is 0. So it
> is better to split the THP before swapping out. In this way, the
> sub-pages not mapped will be freed, and we can avoid the unnecessary
> swap out operations for these sub-pages.
>
> Cc: Johannes Weiner <hannes@cmpxchg.org>
> Signed-off-by: "Huang, Ying" <ying.huang@intel.com>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
CC Kirill to double check the reasoning here
> ---
> mm/swap_state.c | 16 +++++++++++++---
> 1 file changed, 13 insertions(+), 3 deletions(-)
>
> diff --git a/mm/swap_state.c b/mm/swap_state.c
> index 006d91d8fc53..13f83c6bb1b4 100644
> --- a/mm/swap_state.c
> +++ b/mm/swap_state.c
> @@ -192,9 +192,19 @@ int add_to_swap(struct page *page, struct list_head *list)
> VM_BUG_ON_PAGE(!PageLocked(page), page);
> VM_BUG_ON_PAGE(!PageUptodate(page), page);
>
> - /* cannot split, skip it */
> - if (PageTransHuge(page) && !can_split_huge_page(page, NULL))
> - return 0;
> + if (PageTransHuge(page)) {
> + /* cannot split, skip it */
> + if (!can_split_huge_page(page, NULL))
> + return 0;
> + /*
> + * Split pages without a PMD map right away. Chances
> + * are some or all of the tail pages can be freed
> + * without IO.
> + */
> + if (!compound_mapcount(page) &&
> + split_huge_page_to_list(page, list))
> + return 0;
> + }
>
> retry:
> entry = get_swap_page(page);
> --
> 2.11.0
[toc] | [prev] | [next] | [standalone]
| From | "Kirill A. Shutemov" <kirill@shutemov.name> |
|---|---|
| Date | 2017-04-28 15:20 +0200 |
| Subject | Re: [PATCH -mm -v10 3/3] mm, THP, swap: Enable THP swap optimization only if has compound map |
| Message-ID | <tBdYu-7Nk-17@gated-at.bofh.it> |
| In reply to | #1631026 |
On Tue, Apr 25, 2017 at 05:46:18PM -0400, Johannes Weiner wrote: > On Tue, Apr 25, 2017 at 08:56:58PM +0800, Huang, Ying wrote: > > From: Huang Ying <ying.huang@intel.com> > > > > If there is no compound map for a THP (Transparent Huge Page), it is > > possible that the map count of some sub-pages of the THP is 0. So it > > is better to split the THP before swapping out. In this way, the > > sub-pages not mapped will be freed, and we can avoid the unnecessary > > swap out operations for these sub-pages. > > > > Cc: Johannes Weiner <hannes@cmpxchg.org> > > Signed-off-by: "Huang, Ying" <ying.huang@intel.com> > > Acked-by: Johannes Weiner <hannes@cmpxchg.org> > > CC Kirill to double check the reasoning here Looks good to me: Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> -- Kirill A. Shutemov
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web