Messages in this thread Patch in this message |  | | From | Spencer Baugh <> | | Subject | [PATCH] hugetlb: cond_resched for set_max_huge_pages and follow_hugetlb_page | | Date | Thu, 23 Jul 2015 14:54:31 -0700 |
| |
From: Joern Engel <joern@logfs.org>
~150ms scheduler latency for both observed in the wild.
Signed-off-by: Joern Engel <joern@logfs.org> Signed-off-by: Spencer Baugh <sbaugh@catern.com> --- mm/hugetlb.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/mm/hugetlb.c b/mm/hugetlb.c index a8c3087..2eb6919 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -1836,6 +1836,7 @@ static unsigned long set_max_huge_pages(struct hstate *h, unsigned long count, ret = alloc_fresh_gigantic_page(h, nodes_allowed); else ret = alloc_fresh_huge_page(h, nodes_allowed); + cond_resched(); spin_lock(&hugetlb_lock); if (!ret) goto out; @@ -3521,6 +3522,7 @@ long follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, spin_unlock(ptl); ret = hugetlb_fault(mm, vma, vaddr, (flags & FOLL_WRITE) ? FAULT_FLAG_WRITE : 0); + cond_resched(); if (!(ret & VM_FAULT_ERROR)) continue; -- 2.5.0.rc3
|  |