From: Michal Hocko <mhocko@suse.cz> To: Greg Thelen <gthelen@google.com>, Johannes Weiner <hannes@cmpxchg.org> Cc: Roman Gushchin <klamm@yandex-team.ru>, KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>, Tejun Heo <tj@kernel.org>, linux-mm@kvack.org, Hugh Dickins <hughd@google.com>, KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>, Rik van Riel <riel@redhat.com>, LKML <linux-kernel@vger.kernel.org>, Andrew Morton <akpm@linux-foundation.org>, Michel Lespinasse <walken@google.com> Subject: Re: [PATCH v2 0/4] memcg: Low-limit reclaim Date: Tue, 3 Jun 2014 16:44:55 +0200 [thread overview] Message-ID: <20140603144455.GL1321@dhcp22.suse.cz> (raw) In-Reply-To: <CAHH2K0YuEFdPRVrCfoxYwP5b0GK4cZzL5K3ByubW+087BKcsUg@mail.gmail.com> On Tue 03-06-14 07:01:20, Greg Thelen wrote: > On Jun 3, 2014 4:10 AM, "Michal Hocko" <mhocko@suse.cz> wrote: > > > > On Wed 28-05-14 09:17:13, Greg Thelen wrote: > > [...] > > > My 2c... The following works for my use cases: > > > 1) introduce memory.low_limit_in_bytes (default=0 thus no default change > > > from older kernels) > > > 2) interested users will set low_limit_in_bytes to non-zero value. > > > Memory protected by low limit should be as migratable/reclaimable as > > > mlock memory. If a zone full of mlock memory causes oom kills, then > > > so should the low limit. > > > > Would fallback mode in overcommit or the corner case situation break > > your usecase? > > Yes. Fallback mode would break my use cases. What is the corner case > situation? NUMA conflicts? Described here http://marc.info/?l=linux-mm&m=139940101124396&w=2 > Low limit is a substitute for users mlocking memory. So if mlocked > memory has the same NUMA conflicts, then I see no problem with low > limit having the same behavior. In principal they are similar - at least from the reclaim POV. The usage will be however quite different IMO. mlock is the explicit way to keep memory resident. The application writer knows_what_he_is_doing, right? Lowlimit is an administrative tool. Administrator of a potentially complex application is tuning the said application to beat the best performance out of it. Now both of them know that the thing might blow up if they overcommit on the locked memory. So the application writer can check the system state before he asks for mlock and he knows about previous mlocks. Admin doesn't have that possibility because the memory distribution of the memcg is not easy to find out. > From a user API perspective, I'm not clear on the difference between > non-ooming (fallback) low limit and the existing soft limit interface. If > low limit is a "soft" (non ooming) limit then why not rework the existing > soft limit interface and save the low limit for strict (ooming) behavior? No, not that path again. Pretty please! We've been there and it didn't work out. We've been told to not flip defaults and potentially break userspace. Softlimit with it weird semantic should die and stay as a colorful example of a bad design decision. > Of course, Google can continue to tweak the soft limit or new low > limit to provide an ooming guarantee rather than violating the limit. If you have the use case for the hard guarantee then we can add a knob as I've said repeatedly. I just wanted to hear the use case. If you have one, great. I just wanted to start with something which is more usable in general. Your setup is quite specific and known to love OOM killers so you are very well prepared for that. On the other hand my users would end up in a surprise if they saw an OOM while the setup was seemingly correct because lowlimit was not overcommitted. I can come up with a patch on top of what is in mm tree now. It would add a knob (configurable to default to fallback or OOM by default). What do you think about this? Would that work for you and Johannes? > PS: I currently have very limited connectivity so my responses will be > delayed. -- Michal Hocko SUSE Labs
WARNING: multiple messages have this Message-ID (diff)
From: Michal Hocko <mhocko@suse.cz> To: Greg Thelen <gthelen@google.com>, Johannes Weiner <hannes@cmpxchg.org> Cc: Roman Gushchin <klamm@yandex-team.ru>, KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>, Tejun Heo <tj@kernel.org>, linux-mm@kvack.org, Hugh Dickins <hughd@google.com>, KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>, Rik van Riel <riel@redhat.com>, LKML <linux-kernel@vger.kernel.org>, Andrew Morton <akpm@linux-foundation.org>, Michel Lespinasse <walken@google.com> Subject: Re: [PATCH v2 0/4] memcg: Low-limit reclaim Date: Tue, 3 Jun 2014 16:44:55 +0200 [thread overview] Message-ID: <20140603144455.GL1321@dhcp22.suse.cz> (raw) In-Reply-To: <CAHH2K0YuEFdPRVrCfoxYwP5b0GK4cZzL5K3ByubW+087BKcsUg@mail.gmail.com> On Tue 03-06-14 07:01:20, Greg Thelen wrote: > On Jun 3, 2014 4:10 AM, "Michal Hocko" <mhocko@suse.cz> wrote: > > > > On Wed 28-05-14 09:17:13, Greg Thelen wrote: > > [...] > > > My 2c... The following works for my use cases: > > > 1) introduce memory.low_limit_in_bytes (default=0 thus no default change > > > from older kernels) > > > 2) interested users will set low_limit_in_bytes to non-zero value. > > > Memory protected by low limit should be as migratable/reclaimable as > > > mlock memory. If a zone full of mlock memory causes oom kills, then > > > so should the low limit. > > > > Would fallback mode in overcommit or the corner case situation break > > your usecase? > > Yes. Fallback mode would break my use cases. What is the corner case > situation? NUMA conflicts? Described here http://marc.info/?l=linux-mm&m=139940101124396&w=2 > Low limit is a substitute for users mlocking memory. So if mlocked > memory has the same NUMA conflicts, then I see no problem with low > limit having the same behavior. In principal they are similar - at least from the reclaim POV. The usage will be however quite different IMO. mlock is the explicit way to keep memory resident. The application writer knows_what_he_is_doing, right? Lowlimit is an administrative tool. Administrator of a potentially complex application is tuning the said application to beat the best performance out of it. Now both of them know that the thing might blow up if they overcommit on the locked memory. So the application writer can check the system state before he asks for mlock and he knows about previous mlocks. Admin doesn't have that possibility because the memory distribution of the memcg is not easy to find out. > From a user API perspective, I'm not clear on the difference between > non-ooming (fallback) low limit and the existing soft limit interface. If > low limit is a "soft" (non ooming) limit then why not rework the existing > soft limit interface and save the low limit for strict (ooming) behavior? No, not that path again. Pretty please! We've been there and it didn't work out. We've been told to not flip defaults and potentially break userspace. Softlimit with it weird semantic should die and stay as a colorful example of a bad design decision. > Of course, Google can continue to tweak the soft limit or new low > limit to provide an ooming guarantee rather than violating the limit. If you have the use case for the hard guarantee then we can add a knob as I've said repeatedly. I just wanted to hear the use case. If you have one, great. I just wanted to start with something which is more usable in general. Your setup is quite specific and known to love OOM killers so you are very well prepared for that. On the other hand my users would end up in a surprise if they saw an OOM while the setup was seemingly correct because lowlimit was not overcommitted. I can come up with a patch on top of what is in mm tree now. It would add a knob (configurable to default to fallback or OOM by default). What do you think about this? Would that work for you and Johannes? > PS: I currently have very limited connectivity so my responses will be > delayed. -- Michal Hocko SUSE Labs -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2014-06-03 14:45 UTC|newest] Thread overview: 196+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-04-28 12:26 [PATCH v2 0/4] memcg: Low-limit reclaim Michal Hocko 2014-04-28 12:26 ` Michal Hocko 2014-04-28 12:26 ` [PATCH 1/4] memcg, mm: introduce lowlimit reclaim Michal Hocko 2014-04-28 12:26 ` Michal Hocko 2014-04-30 22:55 ` Johannes Weiner 2014-04-30 22:55 ` Johannes Weiner 2014-05-02 9:36 ` Michal Hocko 2014-05-02 9:36 ` Michal Hocko 2014-05-02 12:07 ` Michal Hocko 2014-05-02 12:07 ` Michal Hocko 2014-05-02 13:01 ` Johannes Weiner 2014-05-02 13:01 ` Johannes Weiner 2014-05-02 14:15 ` Michal Hocko 2014-05-02 14:15 ` Michal Hocko 2014-05-02 15:04 ` Johannes Weiner 2014-05-02 15:04 ` Johannes Weiner 2014-05-02 15:11 ` Michal Hocko 2014-05-02 15:11 ` Michal Hocko 2014-05-02 15:34 ` Johannes Weiner 2014-05-02 15:34 ` Johannes Weiner 2014-05-02 15:48 ` Michal Hocko 2014-05-02 15:48 ` Michal Hocko 2014-05-06 19:58 ` Michal Hocko 2014-05-06 19:58 ` Michal Hocko 2014-05-02 15:58 ` Johannes Weiner 2014-05-02 15:58 ` Johannes Weiner 2014-05-02 16:49 ` Michal Hocko 2014-05-02 16:49 ` Michal Hocko 2014-05-02 22:00 ` Johannes Weiner 2014-05-02 22:00 ` Johannes Weiner 2014-05-05 14:21 ` Michal Hocko 2014-05-05 14:21 ` Michal Hocko 2014-05-19 16:18 ` Michal Hocko 2014-05-19 16:18 ` Michal Hocko 2014-06-11 15:15 ` Johannes Weiner 2014-06-11 15:15 ` Johannes Weiner 2014-06-11 16:08 ` Michal Hocko 2014-06-11 16:08 ` Michal Hocko 2014-05-06 13:29 ` Johannes Weiner 2014-05-06 14:32 ` Michal Hocko 2014-05-06 14:32 ` Michal Hocko 2014-05-06 15:21 ` Johannes Weiner 2014-05-06 15:21 ` Johannes Weiner 2014-05-06 16:12 ` Michal Hocko 2014-05-06 16:12 ` Michal Hocko 2014-05-06 16:51 ` Johannes Weiner 2014-05-06 16:51 ` Johannes Weiner 2014-05-06 18:30 ` Michal Hocko 2014-05-06 18:30 ` Michal Hocko 2014-05-06 19:55 ` Johannes Weiner 2014-05-06 19:55 ` Johannes Weiner 2014-04-28 12:26 ` [PATCH 2/4] memcg: Allow setting low_limit Michal Hocko 2014-04-28 12:26 ` Michal Hocko 2014-04-28 12:26 ` [PATCH 3/4] memcg, doc: clarify global vs. limit reclaims Michal Hocko 2014-04-28 12:26 ` Michal Hocko 2014-04-30 23:03 ` Johannes Weiner 2014-04-30 23:03 ` Johannes Weiner 2014-05-02 9:43 ` Michal Hocko 2014-05-02 9:43 ` Michal Hocko 2014-05-06 19:56 ` Michal Hocko 2014-05-06 19:56 ` Michal Hocko 2014-04-28 12:26 ` [PATCH 4/4] memcg: Document memory.low_limit_in_bytes Michal Hocko 2014-04-28 12:26 ` Michal Hocko 2014-04-30 22:57 ` Johannes Weiner 2014-04-30 22:57 ` Johannes Weiner 2014-05-02 9:46 ` Michal Hocko 2014-05-02 9:46 ` Michal Hocko 2014-04-28 15:46 ` [PATCH v2 0/4] memcg: Low-limit reclaim Roman Gushchin 2014-04-28 15:46 ` Roman Gushchin 2014-04-29 7:42 ` Greg Thelen 2014-04-29 7:42 ` Greg Thelen 2014-04-29 10:50 ` Roman Gushchin 2014-04-29 10:50 ` Roman Gushchin 2014-04-29 12:54 ` Michal Hocko 2014-04-29 12:54 ` Michal Hocko 2014-04-30 21:52 ` Andrew Morton 2014-04-30 21:52 ` Andrew Morton 2014-04-30 22:49 ` Johannes Weiner 2014-04-30 22:49 ` Johannes Weiner 2014-05-02 12:03 ` Michal Hocko 2014-05-02 12:03 ` Michal Hocko 2014-04-30 21:59 ` Andrew Morton 2014-04-30 21:59 ` Andrew Morton 2014-05-02 11:22 ` Michal Hocko 2014-05-02 11:22 ` Michal Hocko 2014-05-28 12:10 ` Michal Hocko 2014-05-28 12:10 ` Michal Hocko 2014-05-28 13:49 ` Johannes Weiner 2014-05-28 13:49 ` Johannes Weiner 2014-05-28 14:21 ` Michal Hocko 2014-05-28 14:21 ` Michal Hocko 2014-05-28 15:28 ` Johannes Weiner 2014-05-28 15:28 ` Johannes Weiner 2014-05-28 15:54 ` Michal Hocko 2014-05-28 15:54 ` Michal Hocko 2014-05-28 16:33 ` Johannes Weiner 2014-05-28 16:33 ` Johannes Weiner 2014-06-03 11:07 ` Michal Hocko 2014-06-03 11:07 ` Michal Hocko 2014-06-03 14:22 ` Johannes Weiner 2014-06-03 14:22 ` Johannes Weiner 2014-06-04 14:46 ` Michal Hocko 2014-06-04 14:46 ` Michal Hocko 2014-06-04 15:44 ` Johannes Weiner 2014-06-04 15:44 ` Johannes Weiner 2014-06-04 19:18 ` Hugh Dickins 2014-06-04 19:18 ` Hugh Dickins 2014-06-04 21:45 ` Johannes Weiner 2014-06-04 21:45 ` Johannes Weiner 2014-06-05 14:51 ` Michal Hocko 2014-06-05 14:51 ` Michal Hocko 2014-06-05 16:10 ` Johannes Weiner 2014-06-05 16:10 ` Johannes Weiner 2014-06-05 16:43 ` Michal Hocko 2014-06-05 16:43 ` Michal Hocko 2014-06-05 18:23 ` Johannes Weiner 2014-06-05 18:23 ` Johannes Weiner 2014-06-06 14:44 ` Michal Hocko 2014-06-06 14:44 ` Michal Hocko 2014-06-06 14:46 ` [PATCH 1/2] mm, memcg: allow OOM if no memcg is eligible during direct reclaim Michal Hocko 2014-06-06 14:46 ` Michal Hocko 2014-06-06 14:46 ` [PATCH 2/2] memcg: Allow hard guarantee mode for low limit reclaim Michal Hocko 2014-06-06 14:46 ` Michal Hocko 2014-06-06 15:29 ` Tejun Heo 2014-06-06 15:29 ` Tejun Heo 2014-06-06 15:34 ` Tejun Heo 2014-06-06 15:34 ` Tejun Heo 2014-06-09 8:30 ` Michal Hocko 2014-06-09 8:30 ` Michal Hocko 2014-06-09 13:54 ` Tejun Heo 2014-06-09 13:54 ` Tejun Heo 2014-06-09 22:52 ` Greg Thelen 2014-06-09 22:52 ` Greg Thelen 2014-06-10 16:57 ` Johannes Weiner 2014-06-10 16:57 ` Johannes Weiner 2014-06-10 22:16 ` Greg Thelen 2014-06-10 22:16 ` Greg Thelen 2014-06-11 7:57 ` Michal Hocko 2014-06-11 7:57 ` Michal Hocko 2014-06-11 8:00 ` [PATCH 1/2] mm, memcg: allow OOM if no memcg is eligible during direct reclaim Michal Hocko 2014-06-11 8:00 ` Michal Hocko 2014-06-11 8:00 ` [PATCH 2/2] memcg: Allow guarantee reclaim Michal Hocko 2014-06-11 8:00 ` Michal Hocko 2014-06-11 15:36 ` Johannes Weiner 2014-06-11 15:36 ` Johannes Weiner 2014-06-12 13:22 ` Michal Hocko 2014-06-12 13:22 ` Michal Hocko 2014-06-12 13:56 ` Johannes Weiner 2014-06-12 13:56 ` Johannes Weiner 2014-06-12 14:22 ` Michal Hocko 2014-06-12 14:22 ` Michal Hocko 2014-06-12 16:17 ` Tejun Heo 2014-06-12 16:17 ` Tejun Heo 2014-06-16 12:59 ` Michal Hocko 2014-06-16 12:59 ` Michal Hocko 2014-06-16 13:57 ` Tejun Heo 2014-06-16 13:57 ` Tejun Heo 2014-06-16 14:04 ` Michal Hocko 2014-06-16 14:04 ` Michal Hocko 2014-06-16 14:12 ` Tejun Heo 2014-06-16 14:12 ` Tejun Heo 2014-06-16 14:29 ` Michal Hocko 2014-06-16 14:29 ` Michal Hocko 2014-06-16 14:40 ` Tejun Heo 2014-06-16 14:40 ` Tejun Heo 2014-06-12 16:51 ` Johannes Weiner 2014-06-12 16:51 ` Johannes Weiner 2014-06-16 13:22 ` Michal Hocko 2014-06-16 13:22 ` Michal Hocko 2014-06-11 15:20 ` [PATCH 1/2] mm, memcg: allow OOM if no memcg is eligible during direct reclaim Johannes Weiner 2014-06-11 15:20 ` Johannes Weiner 2014-06-11 16:14 ` Michal Hocko 2014-06-11 16:14 ` Michal Hocko 2014-06-11 12:31 ` [PATCH 2/2] memcg: Allow hard guarantee mode for low limit reclaim Tejun Heo 2014-06-11 12:31 ` Tejun Heo 2014-06-11 14:11 ` Michal Hocko 2014-06-11 14:11 ` Michal Hocko 2014-06-11 15:34 ` Tejun Heo 2014-06-11 15:34 ` Tejun Heo 2014-06-05 19:36 ` [PATCH v2 0/4] memcg: Low-limit reclaim Tejun Heo 2014-06-05 19:36 ` Tejun Heo 2014-06-05 14:32 ` Michal Hocko 2014-06-05 14:32 ` Michal Hocko 2014-06-05 15:43 ` Johannes Weiner 2014-06-05 15:43 ` Johannes Weiner 2014-06-05 16:09 ` Michal Hocko 2014-06-05 16:09 ` Michal Hocko 2014-06-05 16:46 ` Johannes Weiner 2014-06-05 16:46 ` Johannes Weiner 2014-05-28 16:17 ` Greg Thelen 2014-05-28 16:17 ` Greg Thelen 2014-06-03 11:09 ` Michal Hocko 2014-06-03 11:09 ` Michal Hocko 2014-06-03 14:01 ` Greg Thelen 2014-06-03 14:44 ` Michal Hocko [this message] 2014-06-03 14:44 ` 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=20140603144455.GL1321@dhcp22.suse.cz \ --to=mhocko@suse.cz \ --cc=akpm@linux-foundation.org \ --cc=gthelen@google.com \ --cc=hannes@cmpxchg.org \ --cc=hughd@google.com \ --cc=kamezawa.hiroyu@jp.fujitsu.com \ --cc=klamm@yandex-team.ru \ --cc=kosaki.motohiro@jp.fujitsu.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=riel@redhat.com \ --cc=tj@kernel.org \ --cc=walken@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: linkBe 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.