mm: An enhancement of OVERCOMMIT_GUESS
Subsystems (2)
PATCH 3/3 mm: An enhancement of OVERCOMMIT_GUESS
There is a copy of __vm_enough_memory() in mm/nommu.c. I believe that this enhancement is useful for nommu environment too.
---
Hideo Aoki, Hitachi Computer Products (America) Inc.
This patch is an enhancement of OVERCOMMIT_GUESS algorithm in __vm_enough_memory() in mm/nommu.c.
When the OVERCOMMIT_GUESS algorithm calculates the number of free pages, the algorithm subtracts the number of reserved pages from the result nr_free_pages().
Signed-off-by Hideo Aoki <[email protected]>
---
nommu.c | 18 +++++++++++++++--- 1 files changed, 15 insertions(+), 3 deletions(-)
mm/nommu.c +15 -3
@@ -1147,14 +1147,26 @@ int __vm_enough_memory(long pages, int c* only call if we're about to fail. */ n =nr_free_pages (); + +/* +* Leave reserved pages. The pages are not for anonymous pages. +*/ +if (n <= totalreserve_pages) + goto error; +else + n -= totalreserve_pages; + +/* +* Leave the last 3% for root +*/ if (!cap_sys_admin) n -= n /32 ; free += n;if (free > pages)return 0 ; -vm_unacct_memory (pages); -return -ENOMEM ; + + goto error; } allowed = totalram_pages * sysctl_overcommit_ratio /100 ;
@@ -1175,7 +1187,7 @@ int __vm_enough_memory(long pages, int c*/ if (atomic_read (&vm_committed_space) < (long )allowed)return 0 ; - +error:vm_unacct_memory (pages);return -ENOMEM ;