Loading Documentation/sysctl/vm.txt +8 −8 Original line number Diff line number Diff line Loading @@ -902,14 +902,14 @@ The intent is that compaction has less work to do in the future and to increase the success rate of future high-order allocations such as SLUB allocations, THP and hugetlbfs pages. To make it sensible with respect to the watermark_scale_factor parameter, the unit is in fractions of 10,000. The default value of 15,000 means that up to 150% of the high watermark will be reclaimed in the event of a pageblock being mixed due to fragmentation. The level of reclaim is determined by the number of fragmentation events that occurred in the recent past. If this value is smaller than a pageblock then a pageblocks worth of pages will be reclaimed (e.g. 2MB on 64-bit x86). A boost factor of 0 will disable the feature. To make it sensible with respect to the watermark_scale_factor parameter, the unit is in fractions of 10,000. The default value of 15,000 on !DISCONTIGMEM configurations means that up to 150% of the high watermark will be reclaimed in the event of a pageblock being mixed due to fragmentation. The level of reclaim is determined by the number of fragmentation events that occurred in the recent past. If this value is smaller than a pageblock then a pageblocks worth of pages will be reclaimed (e.g. 2MB on 64-bit x86). A boost factor of 0 will disable the feature. ============================================================= Loading include/linux/compaction.h +2 −1 Original line number Diff line number Diff line Loading @@ -95,7 +95,8 @@ extern int sysctl_compact_unevictable_allowed; extern int fragmentation_index(struct zone *zone, unsigned int order); extern enum compact_result try_to_compact_pages(gfp_t gfp_mask, unsigned int order, unsigned int alloc_flags, const struct alloc_context *ac, enum compact_priority prio); const struct alloc_context *ac, enum compact_priority prio, struct page **page); extern void reset_isolation_suitable(pg_data_t *pgdat); extern enum compact_result compaction_suitable(struct zone *zone, int order, unsigned int alloc_flags, int classzone_idx); Loading include/linux/mmzone.h +2 −0 Original line number Diff line number Diff line Loading @@ -492,6 +492,8 @@ struct zone { unsigned long compact_cached_free_pfn; /* pfn where async and sync compaction migration scanner should start */ unsigned long compact_cached_migrate_pfn[2]; unsigned long compact_init_migrate_pfn; unsigned long compact_init_free_pfn; #endif #ifdef CONFIG_COMPACTION Loading include/linux/sched.h +4 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ struct pid_namespace; struct pipe_inode_info; struct rcu_node; struct reclaim_state; struct capture_control; struct robust_list_head; struct sched_attr; struct sched_param; Loading Loading @@ -1120,6 +1121,9 @@ struct task_struct { struct io_context *io_context; #ifdef CONFIG_COMPACTION struct capture_control *capture_control; #endif /* Ptrace state: */ unsigned long ptrace_message; siginfo_t *last_siginfo; Loading kernel/sched/core.c +3 −0 Original line number Diff line number Diff line Loading @@ -2284,6 +2284,9 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p) INIT_HLIST_HEAD(&p->preempt_notifiers); #endif #ifdef CONFIG_COMPACTION p->capture_control = NULL; #endif init_numa_balancing(clone_flags, p); } Loading Loading
Documentation/sysctl/vm.txt +8 −8 Original line number Diff line number Diff line Loading @@ -902,14 +902,14 @@ The intent is that compaction has less work to do in the future and to increase the success rate of future high-order allocations such as SLUB allocations, THP and hugetlbfs pages. To make it sensible with respect to the watermark_scale_factor parameter, the unit is in fractions of 10,000. The default value of 15,000 means that up to 150% of the high watermark will be reclaimed in the event of a pageblock being mixed due to fragmentation. The level of reclaim is determined by the number of fragmentation events that occurred in the recent past. If this value is smaller than a pageblock then a pageblocks worth of pages will be reclaimed (e.g. 2MB on 64-bit x86). A boost factor of 0 will disable the feature. To make it sensible with respect to the watermark_scale_factor parameter, the unit is in fractions of 10,000. The default value of 15,000 on !DISCONTIGMEM configurations means that up to 150% of the high watermark will be reclaimed in the event of a pageblock being mixed due to fragmentation. The level of reclaim is determined by the number of fragmentation events that occurred in the recent past. If this value is smaller than a pageblock then a pageblocks worth of pages will be reclaimed (e.g. 2MB on 64-bit x86). A boost factor of 0 will disable the feature. ============================================================= Loading
include/linux/compaction.h +2 −1 Original line number Diff line number Diff line Loading @@ -95,7 +95,8 @@ extern int sysctl_compact_unevictable_allowed; extern int fragmentation_index(struct zone *zone, unsigned int order); extern enum compact_result try_to_compact_pages(gfp_t gfp_mask, unsigned int order, unsigned int alloc_flags, const struct alloc_context *ac, enum compact_priority prio); const struct alloc_context *ac, enum compact_priority prio, struct page **page); extern void reset_isolation_suitable(pg_data_t *pgdat); extern enum compact_result compaction_suitable(struct zone *zone, int order, unsigned int alloc_flags, int classzone_idx); Loading
include/linux/mmzone.h +2 −0 Original line number Diff line number Diff line Loading @@ -492,6 +492,8 @@ struct zone { unsigned long compact_cached_free_pfn; /* pfn where async and sync compaction migration scanner should start */ unsigned long compact_cached_migrate_pfn[2]; unsigned long compact_init_migrate_pfn; unsigned long compact_init_free_pfn; #endif #ifdef CONFIG_COMPACTION Loading
include/linux/sched.h +4 −0 Original line number Diff line number Diff line Loading @@ -46,6 +46,7 @@ struct pid_namespace; struct pipe_inode_info; struct rcu_node; struct reclaim_state; struct capture_control; struct robust_list_head; struct sched_attr; struct sched_param; Loading Loading @@ -1120,6 +1121,9 @@ struct task_struct { struct io_context *io_context; #ifdef CONFIG_COMPACTION struct capture_control *capture_control; #endif /* Ptrace state: */ unsigned long ptrace_message; siginfo_t *last_siginfo; Loading
kernel/sched/core.c +3 −0 Original line number Diff line number Diff line Loading @@ -2284,6 +2284,9 @@ static void __sched_fork(unsigned long clone_flags, struct task_struct *p) INIT_HLIST_HEAD(&p->preempt_notifiers); #endif #ifdef CONFIG_COMPACTION p->capture_control = NULL; #endif init_numa_balancing(clone_flags, p); } Loading