All of lore.kernel.org
 help / color / mirror / Atom feed
From: Richard Guenther <rguenther@suse.de>
To: Matt Mackall <mpm@selenic.com>
Cc: Balbir Singh <balbir@linux.vnet.ibm.com>,
	Nikanth Karthikesan <knikanth@suse.de>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
	Michael Matz <matz@novell.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] After swapout/swapin private dirty mappings are reported clean in smaps
Date: Wed, 15 Sep 2010 16:53:21 +0200 (CEST)	[thread overview]
Message-ID: <alpine.LNX.2.00.1009151648390.28912@zhemvz.fhfr.qr> (raw)
In-Reply-To: <1284561982.21906.280.camel@calx>

On Wed, 15 Sep 2010, Matt Mackall wrote:

> On Wed, 2010-09-15 at 16:14 +0200, Richard Guenther wrote:
> > On Wed, 15 Sep 2010, Balbir Singh wrote:
> > 
> > > * Nikanth Karthikesan <knikanth@suse.de> [2010-09-15 12:01:11]:
> > > 
> > > > How? Current smaps information without this patch provides incorrect 
> > > > information. Just because a private dirty page became part of swap cache, it 
> > > > shown as clean and backed by a file. If it is shown as clean and backed by 
> > > > swap then it is fine.
> > > >
> > > 
> > > How is GDB using this information?  
> > 
> > GDB counts the number of dirty and swapped pages in a private mapping and
> > based on that decides whether it needs to dump it to a core file or not.
> > If there are no dirty or swapped pages gdb assumes it can reconstruct
> > the mapping from the original backing file.  This way for example
> > shared libraries do not end up in the core file.
> 
> This whole discussion is a little disturbing.
>
> The page is being reported clean as per the kernel's definition of
> clean, full stop.
> 
> So either there's a latent bug/inconsistency in the kernel VM or
> external tools are misinterpreting this data. But smaps is just
> reporting what's there, the fault doesn't lie in smaps. So fixing smaps
> just hides the problem, wherever it is.
> 
> Richard's report that the page is still clean after swapoff suggests the
> inconsistency lies in the VM.

Well - the discussion is about the /proc/smaps interface and
inconsistencies in what it reports.  In particular the interface
does not have the capability of reporting all details the kernel
has, so it might make sense to not "report a page clean as per
the kernel's definition of clean", but only in a /proc/smaps
context definition of clean that makes sense.

So, for

7ffff81ff000-7ffff8201000 r--p 000a8000 08:01 16376 /bin/bash
Size:                  8 kB
Rss:                   8 kB
Pss:                   8 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         8 kB
Private_Dirty:         0 kB
Referenced:            4 kB
Swap:                  0 kB

I expect both pages of that mapping to be file-backed by /bin/bash.
But surprisingly one page is actually backed by anonymous memory
(it was changed, then mapped readonly, swapped out and swapped in
again).

Thus, the bug is the above inconsistency in /proc/smaps.  Whether
there are internal kernel inconsistencies as well doesn't really
matter to this problem (as there is no way to distinguish
pages that are now backed by anonymous memory in that interface).

Richard.

WARNING: multiple messages have this Message-ID (diff)
From: Richard Guenther <rguenther@suse.de>
To: Matt Mackall <mpm@selenic.com>
Cc: Balbir Singh <balbir@linux.vnet.ibm.com>,
	Nikanth Karthikesan <knikanth@suse.de>,
	KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
	linux-mm@kvack.org, Andrew Morton <akpm@linux-foundation.org>,
	Michael Matz <matz@novell.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] After swapout/swapin private dirty mappings are reported clean in smaps
Date: Wed, 15 Sep 2010 16:53:21 +0200 (CEST)	[thread overview]
Message-ID: <alpine.LNX.2.00.1009151648390.28912@zhemvz.fhfr.qr> (raw)
In-Reply-To: <1284561982.21906.280.camel@calx>

On Wed, 15 Sep 2010, Matt Mackall wrote:

> On Wed, 2010-09-15 at 16:14 +0200, Richard Guenther wrote:
> > On Wed, 15 Sep 2010, Balbir Singh wrote:
> > 
> > > * Nikanth Karthikesan <knikanth@suse.de> [2010-09-15 12:01:11]:
> > > 
> > > > How? Current smaps information without this patch provides incorrect 
> > > > information. Just because a private dirty page became part of swap cache, it 
> > > > shown as clean and backed by a file. If it is shown as clean and backed by 
> > > > swap then it is fine.
> > > >
> > > 
> > > How is GDB using this information?  
> > 
> > GDB counts the number of dirty and swapped pages in a private mapping and
> > based on that decides whether it needs to dump it to a core file or not.
> > If there are no dirty or swapped pages gdb assumes it can reconstruct
> > the mapping from the original backing file.  This way for example
> > shared libraries do not end up in the core file.
> 
> This whole discussion is a little disturbing.
>
> The page is being reported clean as per the kernel's definition of
> clean, full stop.
> 
> So either there's a latent bug/inconsistency in the kernel VM or
> external tools are misinterpreting this data. But smaps is just
> reporting what's there, the fault doesn't lie in smaps. So fixing smaps
> just hides the problem, wherever it is.
> 
> Richard's report that the page is still clean after swapoff suggests the
> inconsistency lies in the VM.

Well - the discussion is about the /proc/smaps interface and
inconsistencies in what it reports.  In particular the interface
does not have the capability of reporting all details the kernel
has, so it might make sense to not "report a page clean as per
the kernel's definition of clean", but only in a /proc/smaps
context definition of clean that makes sense.

So, for

7ffff81ff000-7ffff8201000 r--p 000a8000 08:01 16376 /bin/bash
Size:                  8 kB
Rss:                   8 kB
Pss:                   8 kB
Shared_Clean:          0 kB
Shared_Dirty:          0 kB
Private_Clean:         8 kB
Private_Dirty:         0 kB
Referenced:            4 kB
Swap:                  0 kB

I expect both pages of that mapping to be file-backed by /bin/bash.
But surprisingly one page is actually backed by anonymous memory
(it was changed, then mapped readonly, swapped out and swapped in
again).

Thus, the bug is the above inconsistency in /proc/smaps.  Whether
there are internal kernel inconsistencies as well doesn't really
matter to this problem (as there is no way to distinguish
pages that are now backed by anonymous memory in that interface).

Richard.

--
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:[~2010-09-15 14:53 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-14 11:10 [PATCH] After swapout/swapin private dirty mappings become clean Nikanth Karthikesan
2010-09-14 11:10 ` Nikanth Karthikesan
2010-09-14 11:33 ` Richard Guenther
2010-09-14 11:33   ` Richard Guenther
2010-09-14 17:12   ` Nikanth Karthikesan
2010-09-14 17:12     ` Nikanth Karthikesan
2010-09-14 17:14     ` [PATCH v2] After swapout/swapin private dirty mappings are reported clean in smaps Nikanth Karthikesan
2010-09-14 17:14       ` Nikanth Karthikesan
2010-09-15  0:26       ` KOSAKI Motohiro
2010-09-15  0:26         ` KOSAKI Motohiro
2010-09-15  4:38         ` Nikanth Karthikesan
2010-09-15  4:38           ` Nikanth Karthikesan
2010-09-15  4:48           ` KOSAKI Motohiro
2010-09-15  4:48             ` KOSAKI Motohiro
2010-09-15  5:04             ` Nikanth Karthikesan
2010-09-15  5:04               ` Nikanth Karthikesan
2010-09-15  5:20               ` KOSAKI Motohiro
2010-09-15  5:20                 ` KOSAKI Motohiro
2010-09-15  6:31                 ` Nikanth Karthikesan
2010-09-15  6:31                   ` Nikanth Karthikesan
2010-09-15 14:09                   ` Balbir Singh
2010-09-15 14:09                     ` Balbir Singh
2010-09-15 14:14                     ` Richard Guenther
2010-09-15 14:14                       ` Richard Guenther
2010-09-15 14:46                       ` Matt Mackall
2010-09-15 14:46                         ` Matt Mackall
2010-09-15 14:53                         ` Richard Guenther [this message]
2010-09-15 14:53                           ` Richard Guenther
2010-09-15 17:24                           ` Matt Mackall
2010-09-15 17:24                             ` Matt Mackall
2010-09-15 19:08                             ` Richard Guenther
2010-09-15 19:08                               ` Richard Guenther
2010-09-15 19:18                             ` Hugh Dickins
2010-09-15 19:18                               ` Hugh Dickins
2010-09-15 19:46                               ` Matt Mackall
2010-09-15 19:46                                 ` Matt Mackall
2010-09-15 19:53                                 ` Richard Guenther
2010-09-15 19:53                                   ` Richard Guenther
2010-09-15 21:47                                 ` Hugh Dickins
2010-09-15 21:47                                   ` Hugh Dickins
2010-09-16  3:26                                   ` [PATCH] Export amount of anonymous memory in a mapping via smaps Nikanth Karthikesan
2010-09-16  3:26                                     ` Nikanth Karthikesan
2010-09-16  3:52                                     ` KOSAKI Motohiro
2010-09-16  3:52                                       ` KOSAKI Motohiro
2010-09-16  6:04                                       ` [PATCH] Document the new Anonymous field in smaps Nikanth Karthikesan
2010-09-16  6:04                                         ` Nikanth Karthikesan
2010-09-16  6:34                                         ` [PATCH] smaps: fix dirty pages accounting KOSAKI Motohiro
2010-09-16  6:34                                           ` KOSAKI Motohiro
2010-09-16 16:56                                           ` Hugh Dickins
2010-09-16 16:56                                             ` Hugh Dickins
2010-09-16 16:50                                         ` [PATCH] Document the new Anonymous field in smaps Hugh Dickins
2010-09-17  6:04                                           ` [PATCH v2] " Nikanth Karthikesan
2010-09-17  6:04                                             ` Nikanth Karthikesan
2010-09-20  7:11                                             ` Hugh Dickins
2010-09-20 19:24                                               ` Matt Mackall
2010-09-20 19:24                                                 ` Matt Mackall
2010-09-16 16:40                                     ` [PATCH] Export amount of anonymous memory in a mapping via smaps Hugh Dickins
2010-09-16 16:40                                       ` Hugh Dickins
2010-09-15 17:41                       ` [PATCH v2] After swapout/swapin private dirty mappings are reported clean in smaps Balbir Singh
2010-09-15 17:41                         ` Balbir Singh
2010-09-19 17:37                       ` Nikanth Karthikesan
2010-09-19 17:37                         ` Nikanth Karthikesan
2010-09-19 17:38                         ` [PATCH] Document /proc/pid/pagemap in Documentation/filesystems/proc.txt Nikanth Karthikesan
2010-09-19 17:38                           ` Nikanth Karthikesan
2010-09-20 21:27                           ` Matt Mackall
2010-09-20 21:27                             ` Matt Mackall
2010-09-20  5:24                         ` [PATCH v2] After swapout/swapin private dirty mappings are reported clean in smaps Nikanth Karthikesan
2010-09-20  5:24                           ` Nikanth Karthikesan
2010-09-20 14:30                         ` Richard Guenther
2010-09-20 14:30                           ` Richard Guenther
2010-09-15  0:24 ` [PATCH] After swapout/swapin private dirty mappings become clean KOSAKI Motohiro
2010-09-15  0:24   ` KOSAKI Motohiro
2010-09-15  4:37   ` Nikanth Karthikesan
2010-09-15  4:37     ` Nikanth Karthikesan
2010-09-15  4:46     ` KOSAKI Motohiro
2010-09-15  4:46       ` KOSAKI Motohiro
2010-09-15  5:00       ` Nikanth Karthikesan
2010-09-15  5:00         ` Nikanth Karthikesan
2010-09-15  5:15         ` KOSAKI Motohiro
2010-09-15  5:15           ` KOSAKI Motohiro
2010-09-15  6:29           ` Nikanth Karthikesan
2010-09-15  6:29             ` Nikanth Karthikesan
2010-09-15  8:40         ` Richard Guenther
2010-09-15  8:40           ` Richard Guenther
2010-09-16  1:29           ` KOSAKI Motohiro
2010-09-16  1:29             ` KOSAKI Motohiro

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=alpine.LNX.2.00.1009151648390.28912@zhemvz.fhfr.qr \
    --to=rguenther@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=balbir@linux.vnet.ibm.com \
    --cc=knikanth@suse.de \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=matz@novell.com \
    --cc=mpm@selenic.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.