Index: sys/vm/vm_meter.c =================================================================== --- sys/vm/vm_meter.c +++ sys/vm/vm_meter.c @@ -110,8 +110,6 @@ SYSCTL_UINT(_vm, VM_V_FREE_MIN, v_free_min, CTLFLAG_RW, &vm_cnt.v_free_min, 0, "Minimum low-free-pages threshold"); -SYSCTL_UINT(_vm, VM_V_FREE_TARGET, v_free_target, - CTLFLAG_RW, &vm_cnt.v_free_target, 0, "Desired free pages"); SYSCTL_UINT(_vm, VM_V_FREE_RESERVED, v_free_reserved, CTLFLAG_RW, &vm_cnt.v_free_reserved, 0, "Pages reserved for deadlock"); SYSCTL_UINT(_vm, VM_V_INACTIVE_TARGET, v_inactive_target, @@ -121,6 +119,24 @@ SYSCTL_UINT(_vm, OID_AUTO, v_free_severe, CTLFLAG_RW, &vm_cnt.v_free_severe, 0, "Severe page depletion point"); +static int +sysctl_vm_free_target(SYSCTL_HANDLER_ARGS) +{ + + int error; + u_int perdomaintarget; + error = sysctl_handle_int(oidp, oidp->oid_arg1, oidp->oid_arg2, req); + if (!error && req->newptr) { + perdomaintarget = vm_cnt.v_free_target / vm_ndomains; + for (int i = 0; i < vm_ndomains; i++) + vm_dom[i].vmd_pid.pc_setpoint = perdomaintarget; + } + return (error); +} +SYSCTL_PROC(_vm, VM_V_FREE_TARGET, v_free_target, CTLTYPE_U32 | CTLFLAG_RW | + CTLFLAG_MPSAFE, &vm_cnt.v_free_target, 0, sysctl_vm_free_target, "IU", + "Desired free pages"); + static int sysctl_vm_loadavg(SYSCTL_HANDLER_ARGS) {