mm-commits.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andrew Morton <akpm@linux-foundation.org>
To: aarcange@redhat.com, akpm@linux-foundation.org,
	apais@microsoft.com, kirill.shutemov@linux.intel.com,
	linux-mm@kvack.org, mhocko@suse.com, mm-commits@vger.kernel.org,
	oleg@redhat.com, pasha.tatashin@soleen.com,
	songliubraving@fb.com, stable@vger.kernel.org,
	torvalds@linux-foundation.org, vijayb@linux.microsoft.com
Subject: [patch 5/5] mm: khugepaged: recalculate min_free_kbytes after memory hotplug as expected by khugepaged
Date: Sat, 10 Oct 2020 23:16:40 -0700	[thread overview]
Message-ID: <20201011061640.f9YRgiyXB%akpm@linux-foundation.org> (raw)
In-Reply-To: <20201010231559.e148a66f744d0b4870301450@linux-foundation.org>

From: Vijay Balakrishna <vijayb@linux.microsoft.com>
Subject: mm: khugepaged: recalculate min_free_kbytes after memory hotplug as expected by khugepaged

When memory is hotplug added or removed the min_free_kbytes should be
recalculated based on what is expected by khugepaged.  Currently after
hotplug, min_free_kbytes will be set to a lower default and higher default
set when THP enabled is lost.  This change restores min_free_kbytes as
expected for THP consumers.

[vijayb@linux.microsoft.com: v5]
  Link: https://lkml.kernel.org/r/1601398153-5517-1-git-send-email-vijayb@linux.microsoft.com
Link: https://lkml.kernel.org/r/1600305709-2319-2-git-send-email-vijayb@linux.microsoft.com
Link: https://lkml.kernel.org/r/1600204258-13683-1-git-send-email-vijayb@linux.microsoft.com
Fixes: f000565adb77 ("thp: set recommended min free kbytes")
Signed-off-by: Vijay Balakrishna <vijayb@linux.microsoft.com>
Reviewed-by: Pavel Tatashin <pasha.tatashin@soleen.com>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Allen Pais <apais@microsoft.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Song Liu <songliubraving@fb.com>
Cc: <stable@vger.kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
---

 include/linux/khugepaged.h |    5 +++++
 mm/khugepaged.c            |   13 +++++++++++--
 mm/page_alloc.c            |    3 +++
 3 files changed, 19 insertions(+), 2 deletions(-)

--- a/include/linux/khugepaged.h~mm-khugepaged-recalculate-min_free_kbytes-after-memory-hotplug-as-expected-by-khugepaged
+++ a/include/linux/khugepaged.h
@@ -15,6 +15,7 @@ extern int __khugepaged_enter(struct mm_
 extern void __khugepaged_exit(struct mm_struct *mm);
 extern int khugepaged_enter_vma_merge(struct vm_area_struct *vma,
 				      unsigned long vm_flags);
+extern void khugepaged_min_free_kbytes_update(void);
 #ifdef CONFIG_SHMEM
 extern void collapse_pte_mapped_thp(struct mm_struct *mm, unsigned long addr);
 #else
@@ -85,6 +86,10 @@ static inline void collapse_pte_mapped_t
 					   unsigned long addr)
 {
 }
+
+static inline void khugepaged_min_free_kbytes_update(void)
+{
+}
 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
 
 #endif /* _LINUX_KHUGEPAGED_H */
--- a/mm/khugepaged.c~mm-khugepaged-recalculate-min_free_kbytes-after-memory-hotplug-as-expected-by-khugepaged
+++ a/mm/khugepaged.c
@@ -56,6 +56,9 @@ enum scan_result {
 #define CREATE_TRACE_POINTS
 #include <trace/events/huge_memory.h>
 
+static struct task_struct *khugepaged_thread __read_mostly;
+static DEFINE_MUTEX(khugepaged_mutex);
+
 /* default scan 8*512 pte (or vmas) every 30 second */
 static unsigned int khugepaged_pages_to_scan __read_mostly;
 static unsigned int khugepaged_pages_collapsed;
@@ -2304,8 +2307,6 @@ static void set_recommended_min_free_kby
 
 int start_stop_khugepaged(void)
 {
-	static struct task_struct *khugepaged_thread __read_mostly;
-	static DEFINE_MUTEX(khugepaged_mutex);
 	int err = 0;
 
 	mutex_lock(&khugepaged_mutex);
@@ -2332,3 +2333,11 @@ fail:
 	mutex_unlock(&khugepaged_mutex);
 	return err;
 }
+
+void khugepaged_min_free_kbytes_update(void)
+{
+	mutex_lock(&khugepaged_mutex);
+	if (khugepaged_enabled() && khugepaged_thread)
+		set_recommended_min_free_kbytes();
+	mutex_unlock(&khugepaged_mutex);
+}
--- a/mm/page_alloc.c~mm-khugepaged-recalculate-min_free_kbytes-after-memory-hotplug-as-expected-by-khugepaged
+++ a/mm/page_alloc.c
@@ -69,6 +69,7 @@
 #include <linux/nmi.h>
 #include <linux/psi.h>
 #include <linux/padata.h>
+#include <linux/khugepaged.h>
 
 #include <asm/sections.h>
 #include <asm/tlbflush.h>
@@ -7904,6 +7905,8 @@ int __meminit init_per_zone_wmark_min(vo
 	setup_min_slab_ratio();
 #endif
 
+	khugepaged_min_free_kbytes_update();
+
 	return 0;
 }
 postcore_initcall(init_per_zone_wmark_min)
_

  parent reply	other threads:[~2020-10-11  6:16 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-11  6:15 incoming Andrew Morton
2020-10-11  6:16 ` [patch 1/5] MAINTAINERS: change hardening mailing list Andrew Morton
2020-10-11  6:16 ` [patch 2/5] MAINTAINERS: Antoine Tenart's email address Andrew Morton
2020-10-11  6:16 ` [patch 3/5] mm: mmap: fix general protection fault in unlink_file_vma() Andrew Morton
2020-10-11  6:16 ` [patch 4/5] mm: validate inode in mapping_set_error() Andrew Morton
2020-10-11  6:16 ` Andrew Morton [this message]
2020-10-13 23:02 ` [folded-merged] x86-numa-add-nohmat-option-fix.patch removed from -mm tree Andrew Morton
2020-10-13 23:02 ` [folded-merged] acpi-hmat-refactor-hmat_register_target_device-to-hmem_register_device-fix.patch " Andrew Morton
2020-10-13 23:03 ` [folded-merged] mm-memory_hotplug-introduce-default-phys_to_target_node-implementation-fix.patch " Andrew Morton
2020-10-13 23:04 ` [folded-merged] acpi-hmat-attach-a-device-for-each-soft-reserved-range-fix.patch " Andrew Morton
2020-10-13 23:05 ` [folded-merged] mm-memremap_pages-convert-to-struct-range-fix.patch " Andrew Morton
2020-10-13 23:05 ` [folded-merged] mm-optimise-madvise-willneed-fix.patch " Andrew Morton
2020-10-13 23:06 ` [folded-merged] mm-convert-find_get_entry-to-return-the-head-page-fix.patch " Andrew Morton
2020-10-13 23:07 ` [folded-merged] mm-shmem-return-head-page-from-find_lock_entry-fix.patch " Andrew Morton
2020-10-13 23:08 ` [folded-merged] mm-gup-dont-permit-users-to-call-get_user_pages-with-foll_longterm-fix.patch " Andrew Morton
2020-10-13 23:09 ` [folded-merged] mm-memcg-simplify-mem_cgroup_get_max-v4.patch " Andrew Morton
2020-10-13 23:09 ` [folded-merged] mm-account-pmd-tables-like-pte-tables-fix.patch " Andrew Morton
2020-10-13 23:10 ` [folded-merged] mm-remove-src-dst-mm-parameter-in-copy_page_range-v2.patch " Andrew Morton
2020-10-13 23:10 ` [folded-merged] mm-remove-src-dst-mm-parameter-in-copy_page_range-v2-fix.patch " Andrew Morton
2020-10-13 23:12 ` [folded-merged] kasan-port-kasan-tests-to-kunit-v14.patch " Andrew Morton
2020-10-13 23:12 ` [folded-merged] mm-page_allocc-clean-code-by-removing-unnecessary-initialization-fix.patch " Andrew Morton
2020-10-13 23:13 ` [folded-merged] mm-hugetlb-take-the-free-hpage-during-the-iteration-directly-v4.patch " Andrew Morton
2020-10-13 23:13 ` [folded-merged] mm-mempool-add-else-to-split-mutually-exclusive-case-fix.patch " Andrew Morton
2020-10-13 23:14 ` [folded-merged] memblock-make-memblock_debug-and-related-functionality-private-fix.patch " Andrew Morton
2020-10-13 23:14 ` [folded-merged] arch-drivers-replace-for_each_membock-with-for_each_mem_range-fix.patch " Andrew Morton
2020-10-13 23:14 ` [folded-merged] arch-drivers-replace-for_each_membock-with-for_each_mem_range-fix-2.patch " Andrew Morton
2020-10-13 23:15 ` [folded-merged] mm-oom_adj-dont-loop-through-tasks-in-__set_oom_adj-when-not-necessary-v3.patch " Andrew Morton
2020-10-16  2:11 ` [folded-merged] powerpc-mm-move-setting-pte-specific-flags-to-pfn_pte-fix.patch " Andrew Morton
2020-10-16  2:12 ` [folded-merged] mm-debug_vm_pgtable-hugetlb-disable-hugetlb-test-on-ppc64-fix.patch " Andrew Morton
2020-10-16  2:13 ` [folded-merged] mm-debug_vm_pgtable-avoid-none-pte-in-pte_clear_test-fix.patch " Andrew Morton
2020-10-16  2:14 ` [folded-merged] xarray-add-xa_get_order-fix.patch " Andrew Morton
2020-10-16  2:14 ` [folded-merged] xarray-add-xas_split-fix.patch " Andrew Morton
2020-10-16  2:14 ` [folded-merged] xarray-add-xas_split-fix-2.patch " Andrew Morton
2020-10-16  2:14 ` [folded-merged] xarray-add-xas_split-fix-3patch.patch " Andrew Morton
2020-10-16  2:15 ` [folded-merged] mm-memory-remove-page-fault-assumption-of-compound-page-size-fix.patch " Andrew Morton
2020-10-16  2:16 ` [folded-merged] mm-memory_hotplug-simplify-page-offlining-fix.patch " Andrew Morton
2020-10-16  2:17 ` [folded-merged] kernel-resource-make-release_mem_region_adjustable-never-fail-fix.patch " Andrew Morton
2020-10-16  2:19 ` [folded-merged] checkpatch-warn-on-self-assignments-checkpatch-fixes.patch " Andrew Morton
2020-10-16  2:20 ` [folded-merged] checkpatch-allow-not-using-f-with-files-that-are-in-git-fix.patch " Andrew Morton
2020-10-16  2:20 ` [folded-merged] checkpatch-emit-a-warning-on-embedded-filenames-fix.patch " Andrew Morton
2020-10-16  2:21 ` [folded-merged] fs-binfmt_elf-use-pt_load-p_align-values-for-suitable-start-address-fix.patch " Andrew Morton
2020-10-16  2:21 ` [folded-merged] fs-binfmt_elf-use-pt_load-p_align-values-for-suitable-start-address-v4.patch " Andrew Morton

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=20201011061640.f9YRgiyXB%akpm@linux-foundation.org \
    --to=akpm@linux-foundation.org \
    --cc=aarcange@redhat.com \
    --cc=apais@microsoft.com \
    --cc=kirill.shutemov@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@suse.com \
    --cc=mm-commits@vger.kernel.org \
    --cc=oleg@redhat.com \
    --cc=pasha.tatashin@soleen.com \
    --cc=songliubraving@fb.com \
    --cc=stable@vger.kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=vijayb@linux.microsoft.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).