From: Feng Tang <feng.tang@intel.com>
To: "Kleen, Andi" <andi.kleen@intel.com>, Qian Cai <cai@lca.pw>,
Michal Hocko <mhocko@suse.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Johannes Weiner <hannes@cmpxchg.org>,
Stephen Rothwell <sfr@canb.auug.org.au>,
Matthew Wilcox <willy@infradead.org>,
Mel Gorman <mgorman@suse.de>, Kees Cook <keescook@chromium.org>,
Luis Chamberlain <mcgrof@kernel.org>,
Iurii Zaikin <yzaikin@google.com>,
"Chen, Tim C" <tim.c.chen@intel.com>,
"Hansen, Dave" <dave.hansen@intel.com>,
"Huang, Ying" <ying.huang@intel.com>,
"linux-mm@kvack.org" <linux-mm@kvack.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 0/3] make vm_committed_as_batch aware of vm overcommit policy
Date: Fri, 29 May 2020 23:43:15 +0800 [thread overview]
Message-ID: <20200529154315.GI93879@shbuild999.sh.intel.com> (raw)
In-Reply-To: <E8ECBC65D0B2554DAD44EBE43059B3741A2BFEEC@ORSMSX110.amr.corp.intel.com>
On Thu, May 28, 2020 at 11:21:36PM +0800, Kleen, Andi wrote:
>
>
> >If it's true, then there could be 2 solutions, one is to skip the WARN_ONCE as it has no practical value, as the real >check is the following code, the other is to rectify the percpu counter when the policy is changing to >OVERCOMMIT_NEVER.
>
> I think it's better to fix it up when the policy changes. That's the right place. The WARN_ON might be useful to catch other bugs.
If we keep the WARN_ON, then the draft fix patch I can think of looks like:
diff --git a/lib/percpu_counter.c b/lib/percpu_counter.c
index a66595b..02d87fc 100644
--- a/lib/percpu_counter.c
+++ b/lib/percpu_counter.c
@@ -98,6 +98,20 @@ void percpu_counter_add_batch(struct percpu_counter *fbc, s64 amount, s32 batch)
}
EXPORT_SYMBOL(percpu_counter_add_batch);
+void percpu_counter_sync(struct percpu_counter *fbc)
+{
+ unsigned long flags;
+ s64 count;
+
+ raw_spin_lock_irqsave(&fbc->lock, flags);
+ count = __this_cpu_read(*fbc->counters);
+ fbc->count += count;
+ __this_cpu_sub(*fbc->counters, count);
+ raw_spin_unlock_irqrestore(&fbc->lock, flags);
+}
+EXPORT_SYMBOL(percpu_counter_sync);
+
+
/*
* Add up all the per-cpu counts, return the result. This is a more accurate
* but much slower version of percpu_counter_read_positive()
diff --git a/mm/util.c b/mm/util.c
index 580d268..24322da 100644
--- a/mm/util.c
+++ b/mm/util.c
@@ -746,14 +746,24 @@ int overcommit_ratio_handler(struct ctl_table *table, int write, void *buffer,
return ret;
}
+static void sync_overcommit_as(struct work_struct *dummy)
+{
+ percpu_counter_sync(&vm_committed_as);
+}
+
int overcommit_policy_handler(struct ctl_table *table, int write, void *buffer,
size_t *lenp, loff_t *ppos)
{
int ret;
ret = proc_dointvec_minmax(table, write, buffer, lenp, ppos);
- if (ret == 0 && write)
+ if (ret == 0 && write) {
+ if (sysctl_overcommit_memory == OVERCOMMIT_NEVER)
+ schedule_on_each_cpu(sync_overcommit_as);
+
mm_compute_batch();
+ }
return ret;
}
Any comments?
Thanks,
Feng
> -Andi
>
next prev parent reply other threads:[~2020-05-29 15:43 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-08 7:25 [PATCH 0/3] make vm_committed_as_batch aware of vm overcommit policy Feng Tang
2020-05-08 7:25 ` [PATCH 1/3] proc/meminfo: avoid open coded reading of vm_committed_as Feng Tang
2020-05-15 7:22 ` Michal Hocko
2020-05-08 7:25 ` [PATCH 2/3] mm/util.c: make vm_memory_committed() more accurate Feng Tang
2020-05-15 7:23 ` Michal Hocko
2020-05-15 8:11 ` Feng Tang
2020-05-15 9:04 ` Michal Hocko
2020-05-15 13:01 ` Feng Tang
2020-05-08 7:25 ` [PATCH 3/3] mm: adjust vm_committed_as_batch according to vm overcommit policy Feng Tang
2020-05-08 11:24 ` Matthew Wilcox
2020-05-08 12:33 ` Feng Tang
2020-05-15 7:41 ` Michal Hocko
2020-05-15 8:02 ` Feng Tang
2020-05-15 9:08 ` Michal Hocko
2020-05-15 11:26 ` Feng Tang
2020-05-15 7:44 ` Michal Hocko
2020-05-15 8:38 ` Feng Tang
2020-05-21 21:27 ` [PATCH 0/3] make vm_committed_as_batch aware of " Qian Cai
2020-05-26 18:14 ` Qian Cai
2020-05-27 1:14 ` Andi Kleen
2020-05-27 1:43 ` Feng Tang
2020-05-27 1:46 ` Feng Tang
2020-05-27 2:25 ` Qian Cai
2020-05-27 10:46 ` Feng Tang
2020-05-27 12:05 ` Qian Cai
2020-05-27 13:33 ` Feng Tang
2020-05-27 15:42 ` Qian Cai
2020-05-28 14:18 ` Qian Cai
2020-05-28 15:10 ` Feng Tang
2020-05-28 15:21 ` Kleen, Andi
2020-05-29 15:43 ` Feng Tang [this message]
2020-05-29 15:50 ` Andi Kleen
2020-05-29 16:04 ` Feng Tang
2020-05-28 15:48 ` Michal Hocko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200529154315.GI93879@shbuild999.sh.intel.com \
--to=feng.tang@intel.com \
--cc=akpm@linux-foundation.org \
--cc=andi.kleen@intel.com \
--cc=cai@lca.pw \
--cc=dave.hansen@intel.com \
--cc=hannes@cmpxchg.org \
--cc=keescook@chromium.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mcgrof@kernel.org \
--cc=mgorman@suse.de \
--cc=mhocko@suse.com \
--cc=sfr@canb.auug.org.au \
--cc=tim.c.chen@intel.com \
--cc=willy@infradead.org \
--cc=ying.huang@intel.com \
--cc=yzaikin@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.