Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1451646 > unrolled thread
| Started by | Jia He <hejianet@gmail.com> |
|---|---|
| First post | 2016-07-28 05:00 +0200 |
| Last post | 2016-07-28 18:50 +0200 |
| Articles | 4 — 4 participants |
Back to article view | Back to linux.kernel
[PATCH V2] mm/hugetlb: Avoid soft lockup in set_max_huge_pages() Jia He <hejianet@gmail.com> - 2016-07-28 05:00 +0200
Re: [PATCH V2] mm/hugetlb: Avoid soft lockup in set_max_huge_pages() Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> - 2016-07-28 08:50 +0200
Re: [PATCH V2] mm/hugetlb: Avoid soft lockup in set_max_huge_pages() Michal Hocko <mhocko@kernel.org> - 2016-07-28 09:10 +0200
Re: [PATCH V2] mm/hugetlb: Avoid soft lockup in set_max_huge_pages() Dave Hansen <dave.hansen@linux.intel.com> - 2016-07-28 18:50 +0200
| From | Jia He <hejianet@gmail.com> |
|---|---|
| Date | 2016-07-28 05:00 +0200 |
| Subject | [PATCH V2] mm/hugetlb: Avoid soft lockup in set_max_huge_pages() |
| Message-ID | <rZJId-8pQ-17@gated-at.bofh.it> |
In powerpc servers with large memory(32TB), we watched several soft lockups for hugepage under stress tests. The call trace are as follows: 1. get_page_from_freelist+0x2d8/0xd50 __alloc_pages_nodemask+0x180/0xc20 alloc_fresh_huge_page+0xb0/0x190 set_max_huge_pages+0x164/0x3b0 2. prep_new_huge_page+0x5c/0x100 alloc_fresh_huge_page+0xc8/0x190 set_max_huge_pages+0x164/0x3b0 This patch is to fix such soft lockups. It is safe to call cond_resched() there because it is out of spin_lock/unlock section. Signed-off-by: Jia He <hejianet@gmail.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> Cc: Mike Kravetz <mike.kravetz@oracle.com> Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> Cc: Michal Hocko <mhocko@suse.com> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: Paul Gortmaker <paul.gortmaker@windriver.com> --- Changes in V2: move cond_resched to a common calling site in set_max_huge_pages mm/hugetlb.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/mm/hugetlb.c b/mm/hugetlb.c index abc1c5f..9284280 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -2216,6 +2216,10 @@ static unsigned long set_max_huge_pages(struct hstate *h, unsigned long count, * and reducing the surplus. */ spin_unlock(&hugetlb_lock); + + /* yield cpu to avoid soft lockup */ + cond_resched(); + if (hstate_is_gigantic(h)) ret = alloc_fresh_gigantic_page(h, nodes_allowed); else -- 2.5.0
[toc] | [next] | [standalone]
| From | Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> |
|---|---|
| Date | 2016-07-28 08:50 +0200 |
| Message-ID | <rZNiO-2tg-15@gated-at.bofh.it> |
| In reply to | #1451646 |
On Thu, Jul 28, 2016 at 10:54:02AM +0800, Jia He wrote: > In powerpc servers with large memory(32TB), we watched several soft > lockups for hugepage under stress tests. > The call trace are as follows: > 1. > get_page_from_freelist+0x2d8/0xd50 > __alloc_pages_nodemask+0x180/0xc20 > alloc_fresh_huge_page+0xb0/0x190 > set_max_huge_pages+0x164/0x3b0 > > 2. > prep_new_huge_page+0x5c/0x100 > alloc_fresh_huge_page+0xc8/0x190 > set_max_huge_pages+0x164/0x3b0 > > This patch is to fix such soft lockups. It is safe to call cond_resched() > there because it is out of spin_lock/unlock section. > > Signed-off-by: Jia He <hejianet@gmail.com> > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> > Cc: Mike Kravetz <mike.kravetz@oracle.com> > Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> > Cc: Michal Hocko <mhocko@suse.com> > Cc: Dave Hansen <dave.hansen@linux.intel.com> > Cc: Paul Gortmaker <paul.gortmaker@windriver.com> Looks good to me. Reviewed-by: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> Thanks, Naoya Horiguchi > > --- > Changes in V2: move cond_resched to a common calling site in set_max_huge_pages > > mm/hugetlb.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index abc1c5f..9284280 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -2216,6 +2216,10 @@ static unsigned long set_max_huge_pages(struct hstate *h, unsigned long count, > * and reducing the surplus. > */ > spin_unlock(&hugetlb_lock); > + > + /* yield cpu to avoid soft lockup */ > + cond_resched(); > + > if (hstate_is_gigantic(h)) > ret = alloc_fresh_gigantic_page(h, nodes_allowed); > else > -- > 2.5.0 >
[toc] | [prev] | [next] | [standalone]
| From | Michal Hocko <mhocko@kernel.org> |
|---|---|
| Date | 2016-07-28 09:10 +0200 |
| Message-ID | <rZNCa-2Rd-37@gated-at.bofh.it> |
| In reply to | #1451646 |
On Thu 28-07-16 10:54:02, Jia He wrote: > In powerpc servers with large memory(32TB), we watched several soft > lockups for hugepage under stress tests. > The call trace are as follows: > 1. > get_page_from_freelist+0x2d8/0xd50 > __alloc_pages_nodemask+0x180/0xc20 > alloc_fresh_huge_page+0xb0/0x190 > set_max_huge_pages+0x164/0x3b0 > > 2. > prep_new_huge_page+0x5c/0x100 > alloc_fresh_huge_page+0xc8/0x190 > set_max_huge_pages+0x164/0x3b0 > > This patch is to fix such soft lockups. It is safe to call cond_resched() > there because it is out of spin_lock/unlock section. > > Signed-off-by: Jia He <hejianet@gmail.com> > Cc: Andrew Morton <akpm@linux-foundation.org> > Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com> > Cc: Mike Kravetz <mike.kravetz@oracle.com> > Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com> > Cc: Michal Hocko <mhocko@suse.com> > Cc: Dave Hansen <dave.hansen@linux.intel.com> > Cc: Paul Gortmaker <paul.gortmaker@windriver.com> Acked-by: Michal Hocko <mhocko@suse.com> > > --- > Changes in V2: move cond_resched to a common calling site in set_max_huge_pages > > mm/hugetlb.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > index abc1c5f..9284280 100644 > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -2216,6 +2216,10 @@ static unsigned long set_max_huge_pages(struct hstate *h, unsigned long count, > * and reducing the surplus. > */ > spin_unlock(&hugetlb_lock); > + > + /* yield cpu to avoid soft lockup */ > + cond_resched(); > + > if (hstate_is_gigantic(h)) > ret = alloc_fresh_gigantic_page(h, nodes_allowed); > else > -- > 2.5.0 > > -- > 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> -- Michal Hocko SUSE Labs
[toc] | [prev] | [next] | [standalone]
| From | Dave Hansen <dave.hansen@linux.intel.com> |
|---|---|
| Date | 2016-07-28 18:50 +0200 |
| Message-ID | <rZWFs-oF-11@gated-at.bofh.it> |
| In reply to | #1451646 |
Looks fine to me. Acked-by: Dave Hansen <dave.hansen@linux.intel.com>
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web