Messages in this thread | | | From | Qian Cai <> | Subject | Re: [PATCH v4 3/4] mm/util.c: remove the VM_WARN_ONCE for vm_committed_as underflow check | Date | Wed, 3 Jun 2020 07:51:37 -0400 |
| |
> On Jun 3, 2020, at 5:48 AM, Feng Tang <feng.tang@intel.com> wrote: > > This check was added by 82f71ae4a2b8 ("mm: catch memory commitment underflow") > in 2014 to have a safety check for issues which have been fixed. > And there has been few report caught by it, as described in its > commit log: > > : This shouldn't happen any more - the previous two patches fixed > : the committed_as underflow issues. > > But it was really found by Qian Cai when he used the LTP memory > stress suite to test a RFC patchset, which tries to improve scalability > of per-cpu counter 'vm_committed_as', by chosing a bigger 'batch' number > for loose overcommit policies (OVERCOMMIT_ALWAYS and OVERCOMMIT_GUESS), > while keeping current number for OVERCOMMIT_NEVER. > > With that patchset, when system firstly uses a loose policy, the > 'vm_committed_as' count could be a big negative value, as its big 'batch' > number allows a big deviation, then when the policy is changed to > OVERCOMMIT_NEVER, the 'batch' will be decreased to a much smaller value, > thus hits this WARN check. > > To mitigate this, one proposed solution is to queue work on all online > CPUs to do a local sync for 'vm_committed_as' when changing policy to > OVERCOMMIT_NEVER, plus some global syncing to garante the case won't > be hit. > > But this solution is costy and slow, given this check hasn't shown real > trouble or benefit, simply drop it from one hot path of MM. And perf > stats does show some tiny saving for removing it.
The text looks more reasonable than the previous one.
Reviewed-by: Qian Cai <cai@lca.pw>
| |