public inbox for trinity@vger.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Christoph Lameter <cl@linux.com>
Cc: Al Viro <viro@ZenIV.linux.org.uk>,
	Vince Weaver <vincent.weaver@maine.edu>,
	linux-kernel@vger.kernel.org, Paul Mackerras <paulus@samba.org>,
	Ingo Molnar <mingo@redhat.com>,
	Arnaldo Carvalho de Melo <acme@ghostprotocols.net>,
	trinity@vger.kernel.org
Subject: Re: OOPS in perf_mmap_close()
Date: Thu, 23 May 2013 18:39:01 +0200	[thread overview]
Message-ID: <20130523163901.GG23650@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <0000013ed2297ba8-467d474a-7068-45b3-9fa3-82641e6aa363-000000@email.amazonses.com>

On Thu, May 23, 2013 at 04:12:14PM +0000, Christoph Lameter wrote:
> On Thu, 23 May 2013, Peter Zijlstra wrote:
> 
> > The patch completely fails to explain how RLIMIT_LOCKED is supposed to
> > deal with pinned vs locked. Perf used to account its pages against
> > RLIMIT_LOCKED, with the patch it compares pinned against RLIMIT_LOCKED
> > but completely discards any possible locked pages.
> 
> Pinned pages are different from mlock. Mlock semantics means that the
> pages are kept in memory but the pages are movable (subject to page
> migration f.e.).
> 
> Pinned pages have to stay where they are since the physical addresses may
> be used for device I/O or other stuff.
> 
> Both pinned and mlocked pages cannot be evicted from memory. If one wants
> to account for unevictable pages then both are contributing. However,
> since a pinned page may be mlocked simply adding up the counter may cause
> problems. The sum could be used as a worst case estimate though.
> 
> We could mlock all pinned pages but then the issue arises on how to track
> that properly in order to unpin when the I/O action is done since the app
> may have also mlocked pages.

I know all that, and its completely irrelevant to the discussion.

You cannot simply take away pinned pages from the RLIMIT_MEMLOCK
accounting without mention nor replacement limits.

You now have double the amount of memory you can loose, once to actual
mlock() and once through whatever generates pinned -- if it bothers with
checking limits at all.

Where we had the guarantee that x < y; you did x := x1 + x2; which then
should result in: x1 + x2 < y, instead you did: x1 < y && x2 < y, not
the same and completely wrong.

  reply	other threads:[~2013-05-23 16:39 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-22 19:35 OOPS in perf_mmap_close() Vince Weaver
2013-05-22 23:56 ` Vince Weaver
2013-05-23  3:48   ` Vince Weaver
2013-05-23  4:48     ` Al Viro
2013-05-23 10:41       ` Peter Zijlstra
2013-05-23 14:09         ` Christoph Lameter
2013-05-23 15:24           ` Peter Zijlstra
2013-05-23 16:12             ` Christoph Lameter
2013-05-23 16:39               ` Peter Zijlstra [this message]
2013-05-23 17:59                 ` Christoph Lameter
2013-05-23 19:24                   ` Peter Zijlstra
2013-05-24 14:01                   ` [RFC][PATCH] mm: Fix RLIMIT_MEMLOCK Peter Zijlstra
2013-05-24 15:40                     ` Christoph Lameter
2013-05-26  1:11                       ` KOSAKI Motohiro
2013-05-28 16:19                         ` Christoph Lameter
2013-05-27  6:48                       ` Peter Zijlstra
2013-05-28 16:37                         ` Christoph Lameter
2013-05-29  7:58                           ` [regression] " Ingo Molnar
2013-05-29 19:53                             ` KOSAKI Motohiro
2013-05-30  6:32                               ` Ingo Molnar
2013-05-30 20:42                                 ` KOSAKI Motohiro
2013-05-31  9:27                                   ` Ingo Molnar
2013-05-30 18:30                           ` Peter Zijlstra
2013-05-30 19:59                           ` Pekka Enberg
2013-05-30 21:00                     ` KOSAKI Motohiro
2013-05-23 12:52       ` OOPS in perf_mmap_close() Peter Zijlstra
2013-05-23 14:10         ` Vince Weaver
2013-05-23 15:26           ` Peter Zijlstra
2013-05-23 15:47             ` Vince Weaver
2013-05-23 23:40             ` Vince Weaver
2013-05-24  9:21               ` Peter Zijlstra
2013-05-28  8:55               ` Peter Zijlstra
2013-05-28 16:19                 ` Vince Weaver
2013-05-28 18:22                   ` Vince Weaver
2013-05-29  7:44                     ` Peter Zijlstra
2013-05-29 13:17                       ` Vince Weaver
2013-05-29 19:18                       ` Vince Weaver
2013-05-30  7:25                         ` Peter Zijlstra
2013-05-30 12:51                           ` Vince Weaver
2013-05-31 15:46                             ` Peter Zijlstra
2013-06-03 13:26                             ` Peter Zijlstra
2013-06-03 17:18                               ` Peter Zijlstra
2013-06-03 19:25                               ` Peter Zijlstra
2013-06-05 15:54                                 ` Vince Weaver
2013-06-05 16:54                                   ` Peter Zijlstra
2013-05-29  8:07                   ` Ingo Molnar

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=20130523163901.GG23650@twins.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=acme@ghostprotocols.net \
    --cc=cl@linux.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=paulus@samba.org \
    --cc=trinity@vger.kernel.org \
    --cc=vincent.weaver@maine.edu \
    --cc=viro@ZenIV.linux.org.uk \
    /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