diff --git a/sys/vm/vm_map.c b/sys/vm/vm_map.c --- a/sys/vm/vm_map.c +++ b/sys/vm/vm_map.c @@ -1980,6 +1980,11 @@ &cluster_anon, 0, "Cluster anonymous mappings: 0 = no, 1 = yes if no hint, 2 = always"); +static int anon_low_pref = 0; +SYSCTL_INT(_vm, OID_AUTO, anon_low_pref, CTLFLAG_RW, + &anon_low_pref, 0, + "Prefer lower addresses when clustering anonymous mappings: 0 = no, 1 = yes"); + static bool clustering_anon_allowed(vm_offset_t addr) { @@ -2127,6 +2132,8 @@ curr_min_addr = map->anon_loc; if (curr_min_addr == 0) cluster = false; + else if (anon_low_pref) + update_anon = false; } if (find_space != VMFS_NO_SPACE) { KASSERT(find_space == VMFS_ANY_SPACE ||