Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aa49fa87 authored by Arve Hjønnevåg's avatar Arve Hjønnevåg Committed by Ruchi Kandoi
Browse files

mm: Add min_free_order_shift tunable.



By default the kernel tries to keep half as much memory free at each
order as it does for one order below. This can be too agressive when
running without swap.

Change-Id: I5efc1a0b50f41ff3ac71e92d2efd175dedd54ead
Signed-off-by: default avatarArve Hjønnevåg <arve@android.com>
parent 0ddfd45d
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -104,6 +104,7 @@ extern char core_pattern[];
extern unsigned int core_pipe_limit;
#endif
extern int pid_max;
extern int min_free_order_shift;
extern int pid_max_min, pid_max_max;
extern int percpu_pagelist_fraction;
extern int compat_log;
@@ -1310,6 +1311,13 @@ static struct ctl_table vm_table[] = {
		.proc_handler	= min_free_kbytes_sysctl_handler,
		.extra1		= &zero,
	},
	{
		.procname	= "min_free_order_shift",
		.data		= &min_free_order_shift,
		.maxlen		= sizeof(min_free_order_shift),
		.mode		= 0644,
		.proc_handler	= &proc_dointvec
	},
	{
		.procname	= "percpu_pagelist_fraction",
		.data		= &percpu_pagelist_fraction,
+2 −1
Original line number Diff line number Diff line
@@ -206,6 +206,7 @@ static char * const zone_names[MAX_NR_ZONES] = {

int min_free_kbytes = 1024;
int user_min_free_kbytes = -1;
int min_free_order_shift = 1;

static unsigned long __meminitdata nr_kernel_pages;
static unsigned long __meminitdata nr_all_pages;
@@ -1728,7 +1729,7 @@ static bool __zone_watermark_ok(struct zone *z, unsigned int order,
		free_pages -= z->free_area[o].nr_free << o;

		/* Require fewer higher order pages to be free */
		min >>= 1;
		min >>= min_free_order_shift;

		if (free_pages <= min)
			return false;