linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Michal Hocko <mhocko@suse.cz>
To: Minchan Kim <minchan@kernel.org>
Cc: Hyunhee Kim <hyunhee.kim@samsung.com>,
	'Anton Vorontsov' <anton@enomsg.org>,
	linux-mm@kvack.org, akpm@linux-foundation.org, rob@landley.net,
	kamezawa.hiroyu@jp.fujitsu.com, hannes@cmpxchg.org,
	rientjes@google.com, kirill@shutemov.name,
	'Kyungmin Park' <kyungmin.park@samsung.com>
Subject: Re: [PATCH v2] vmpressure: consider "scanned < reclaimed" case when calculating  a pressure level.
Date: Fri, 28 Jun 2013 17:17:34 +0200	[thread overview]
Message-ID: <20130628151734.GF5125@dhcp22.suse.cz> (raw)
In-Reply-To: <20130628135517.GA4414@gmail.com>

On Fri 28-06-13 22:55:17, Minchan Kim wrote:
> Hi Michal,
> 
> On Fri, Jun 28, 2013 at 02:24:12PM +0200, Michal Hocko wrote:
> > On Fri 28-06-13 08:54:35, Minchan Kim wrote:
> > > Hello Michal,
> > > 
> > > On Thu, Jun 27, 2013 at 06:11:03PM +0200, Michal Hocko wrote:
> > > > On Fri 28-06-13 00:35:28, Minchan Kim wrote:
> > > > > Hi Michal,
> > > > > 
> > > > > On Thu, Jun 27, 2013 at 11:37:21AM +0200, Michal Hocko wrote:
> > > > > > On Thu 27-06-13 15:12:10, Hyunhee Kim wrote:
> > > > > > > In vmpressure, the pressure level is calculated based on the ratio
> > > > > > > of how many pages were scanned vs. reclaimed in a given time window.
> > > > > > > However, there is a possibility that "scanned < reclaimed" in such a
> > > > > > > case, when reclaiming ends by fatal signal in shrink_inactive_list.
> > > > > > > So, with this patch, we just return "low" level when "scanned < reclaimed"
> > > > > > > happens not to have userland miss reclaim activity.
> > > > > > 
> > > > > > Hmm, fatal signal pending on kswapd doesn't make sense to me so it has
> > > > > > to be a direct reclaim path. Does it really make sense to signal LOW
> > > > > > when there is probably a big memory pressure and somebody is killing the
> > > > > > current allocator?
> > > > > 
> > > > > So, do you want to trigger critical instead of low?
> > > > > 
> > > > > Now, current is going to die so we can expect shortly we can get a amount
> > > > > of memory, normally. 
> > > > 
> > > > And also consider that this is per-memcg interface. And so it is even
> > > > more complicated. If a task dies then there is _no_ guarantee that there
> > > > will be an uncharge in that group (task could have been migrated to that
> > > > group so the memory belongs to somebody else).
> > > 
> > > Good point and that's one of the reason I hate memcg for just using
> > > vmpressure. 
> > 
> > Well, the very same problem is present in the memcg OOM as well. oom
> > score calculation is not memcg aware wrt charges.
> > 
> > > Let's think over it. One of the very avaialbe scenario
> > > which userland could do when notified from vmpressure is that manager
> > > process sends signal for others to release own cached memory.
> > 
> > Assuming those processes are in the same memcg, right?
> > 
> > > If we use vmpressure without move_charge_at_immigrate in multiple memcg
> > > group, it would be a disaster. But if we use move_charge_at_immigrate,
> > > we will see long stall easily so it's not an option, either.
> > 
> > I am not sure I am following you here. Could you be more specific what
> > is the actual problem?
> > From my POV, a manager can see a memory pressure, it notifies others in
> > the same memcg and they will release their caches. With
> > move_charge_at_immigrate == 0 some of those might release a memory in
> > other group but somebody must be using memory from the currently
> > signaled group, right?
> 
> My concern is that manager process can send a signal to a process A
> in same group but unfortunately, process A would release a memory
> in other group so manager process can send a signal to a process B
> in same group but unfortunately, process B would release a memory
> in other group so manger process can ...
> ...
> ...
> ...
> in same group and at last, process Z would release a memory in same
> group but we release all of cached from A-Y process. :(

I would say, do not move tasks without move_at_immigrate if you are
doing something like that.

> > > So, IMO, it's not a good idea to use vmpressure with no-root memcg so
> > > it could raise the question again "why vmpressure is part of memcg".
> > 
> > Maybe I do not see the problem correctly, but making vmpressure memcg
> > aware was a good idea. It is something like userspace pre-oom handling.
> 
> I don't say that memcg-aware is bad. Surely it's good thing but
> it's not good that we must enable memcg for just using memory notifier
> globally. Even above problem would make memcg-vmpressure complicated and
> memory reclaim behavior change compared to long history well-made global
> page reclaim.
> 
> I claim we should be able to use vmpressure without memcg as well as
> memcg.

This is not hard to do. Look at how we are handling lruvec for !memcg
configurations. The similar thing could be done for vmpressure as well.
You just need to find a way how to export eventfd which is not private
to memcg AFAIK.

-- 
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>

  reply	other threads:[~2013-06-28 15:17 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-17 11:30 [PATCH v3] memcg: event control at vmpressure Hyunhee Kim
2013-06-17 13:15 ` Michal Hocko
2013-06-18  6:10   ` Hyunhee Kim
2013-06-18  8:00     ` Hyunhee Kim
2013-06-18 11:01       ` Michal Hocko
2013-06-19 11:25         ` Hyunhee Kim
2013-06-19 11:59           ` Michal Hocko
2013-06-19 11:31         ` [PATCH v4] " Hyunhee Kim
2013-06-19 12:53           ` Michal Hocko
2013-06-20  2:13             ` Hyunhee Kim
2013-06-20  2:17             ` [PATCH v5] " Hyunhee Kim
2013-06-20 12:16               ` Michal Hocko
2013-06-21  0:21                 ` [PATCH v6] " Hyunhee Kim
2013-06-21  0:24                   ` Hyunhee Kim
2013-06-21  1:22                     ` Minchan Kim
2013-06-21  9:19                       ` Michal Hocko
2013-06-21 11:02                         ` Hyunhee Kim
2013-06-21 11:54                           ` Hyunhee Kim
2013-06-21 12:40                             ` [PATCH v7] " Hyunhee Kim
2013-06-21 16:27                         ` [PATCH v6] " Minchan Kim
2013-06-21 16:44                           ` Minchan Kim
2013-06-22  0:27                             ` Anton Vorontsov
2013-06-22  1:28                               ` Hyunhee Kim
2013-06-26  7:47                               ` Minchan Kim
2013-06-21 22:35                           ` Anton Vorontsov
2013-06-22  4:36                           ` Hyunhee Kim
2013-06-22  4:51                             ` Hyunhee Kim
2013-06-22  5:50                               ` [PATCH] memcg: consider "scanned < reclaimed" case when calculating Hyunhee Kim
2013-06-22  7:34                                 ` [PATCH] memcg: add interface to specify thresholds of vmpressure Hyunhee Kim
2013-06-25 20:46                                   ` Michal Hocko
2013-06-26  7:39                                   ` Minchan Kim
2013-06-26  7:50                                     ` Kyungmin Park
2013-06-26  8:03                                       ` Minchan Kim
2013-06-26  7:35                                 ` [PATCH] memcg: consider "scanned < reclaimed" case when calculating Minchan Kim
2013-06-27  6:12                                   ` [PATCH v2] vmpressure: consider "scanned < reclaimed" case when calculating a pressure level Hyunhee Kim
2013-06-27  9:37                                     ` Michal Hocko
2013-06-27 15:35                                       ` Minchan Kim
2013-06-27 16:11                                         ` Michal Hocko
2013-06-27 18:05                                           ` Anton Vorontsov
2013-06-28 12:17                                             ` Michal Hocko
2013-06-27 23:54                                           ` Minchan Kim
2013-06-28  7:43                                             ` [PATCH v3] " Hyunhee Kim
2013-06-28 12:26                                               ` Michal Hocko
2013-06-28 12:24                                             ` [PATCH v2] " Michal Hocko
2013-06-28 13:55                                               ` Minchan Kim
2013-06-28 15:17                                                 ` Michal Hocko [this message]
2013-06-27 18:33                                     ` Anton Vorontsov
2013-06-26  7:34                               ` [PATCH v6] memcg: event control at vmpressure Minchan Kim
2013-06-26  7:31                             ` Minchan Kim
2013-06-25 16:07                           ` 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=20130628151734.GF5125@dhcp22.suse.cz \
    --to=mhocko@suse.cz \
    --cc=akpm@linux-foundation.org \
    --cc=anton@enomsg.org \
    --cc=hannes@cmpxchg.org \
    --cc=hyunhee.kim@samsung.com \
    --cc=kamezawa.hiroyu@jp.fujitsu.com \
    --cc=kirill@shutemov.name \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-mm@kvack.org \
    --cc=minchan@kernel.org \
    --cc=rientjes@google.com \
    --cc=rob@landley.net \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox