Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4aab2be

Browse files
vijaybalakrishnatorvalds
authored andcommitted
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 berecalculated based on what is expected by khugepaged. Currently afterhotplug, min_free_kbytes will be set to a lower default and higherdefault 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.comFixes:f000565 ("thp: set recommended min free kbytes")Signed-off-by: Vijay Balakrishna <vijayb@linux.microsoft.com>Signed-off-by: Andrew Morton <akpm@linux-foundation.org>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>Link:https://lkml.kernel.org/r/1600305709-2319-2-git-send-email-vijayb@linux.microsoft.comLink:https://lkml.kernel.org/r/1600204258-13683-1-git-send-email-vijayb@linux.microsoft.comSigned-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent8b7b2eb commit4aab2be

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

‎include/linux/khugepaged.h‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ extern int __khugepaged_enter(struct mm_struct *mm);
1515
externvoid__khugepaged_exit(structmm_struct*mm);
1616
externintkhugepaged_enter_vma_merge(structvm_area_struct*vma,
1717
unsigned longvm_flags);
18+
externvoidkhugepaged_min_free_kbytes_update(void);
1819
#ifdefCONFIG_SHMEM
1920
externvoidcollapse_pte_mapped_thp(structmm_struct*mm,unsigned longaddr);
2021
#else
@@ -85,6 +86,10 @@ static inline void collapse_pte_mapped_thp(struct mm_struct *mm,
8586
unsigned longaddr)
8687
{
8788
}
89+
90+
staticinlinevoidkhugepaged_min_free_kbytes_update(void)
91+
{
92+
}
8893
#endif/* CONFIG_TRANSPARENT_HUGEPAGE */
8994

9095
#endif/* _LINUX_KHUGEPAGED_H */

‎mm/khugepaged.c‎

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ enum scan_result {
5656
#defineCREATE_TRACE_POINTS
5757
#include<trace/events/huge_memory.h>
5858

59+
staticstructtask_struct*khugepaged_thread__read_mostly;
60+
staticDEFINE_MUTEX(khugepaged_mutex);
61+
5962
/* default scan 8*512 pte (or vmas) every 30 second */
6063
staticunsignedintkhugepaged_pages_to_scan__read_mostly;
6164
staticunsignedintkhugepaged_pages_collapsed;
@@ -2304,8 +2307,6 @@ static void set_recommended_min_free_kbytes(void)
23042307

23052308
intstart_stop_khugepaged(void)
23062309
{
2307-
staticstructtask_struct*khugepaged_thread__read_mostly;
2308-
staticDEFINE_MUTEX(khugepaged_mutex);
23092310
interr=0;
23102311

23112312
mutex_lock(&khugepaged_mutex);
@@ -2332,3 +2333,11 @@ int start_stop_khugepaged(void)
23322333
mutex_unlock(&khugepaged_mutex);
23332334
returnerr;
23342335
}
2336+
2337+
voidkhugepaged_min_free_kbytes_update(void)
2338+
{
2339+
mutex_lock(&khugepaged_mutex);
2340+
if (khugepaged_enabled()&&khugepaged_thread)
2341+
set_recommended_min_free_kbytes();
2342+
mutex_unlock(&khugepaged_mutex);
2343+
}

‎mm/page_alloc.c‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
#include<linux/nmi.h>
7070
#include<linux/psi.h>
7171
#include<linux/padata.h>
72+
#include<linux/khugepaged.h>
7273

7374
#include<asm/sections.h>
7475
#include<asm/tlbflush.h>
@@ -7904,6 +7905,8 @@ int __meminit init_per_zone_wmark_min(void)
79047905
setup_min_slab_ratio();
79057906
#endif
79067907

7908+
khugepaged_min_free_kbytes_update();
7909+
79077910
return0;
79087911
}
79097912
postcore_initcall(init_per_zone_wmark_min)

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp