All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH V2] mm/hugetlb: Avoid soft lockup in set_max_huge_pages()
@ 2016-07-28  2:54 ` Jia He
  0 siblings, 0 replies; 8+ messages in thread
From: Jia He @ 2016-07-28  2:54 UTC (permalink / raw)
  To: linux-mm
  Cc: linux-kernel, Jia He, Andrew Morton, Naoya Horiguchi,
	Mike Kravetz, Kirill A. Shutemov, Michal Hocko, Dave Hansen,
	Paul Gortmaker

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

^ permalink raw reply related	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2016-07-28 16:42 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-28  2:54 [PATCH V2] mm/hugetlb: Avoid soft lockup in set_max_huge_pages() Jia He
2016-07-28  2:54 ` Jia He
2016-07-28  6:41 ` Naoya Horiguchi
2016-07-28  6:41   ` Naoya Horiguchi
2016-07-28  7:09 ` Michal Hocko
2016-07-28  7:09   ` Michal Hocko
2016-07-28 16:42 ` Dave Hansen
2016-07-28 16:42   ` Dave Hansen

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.