All of lore.kernel.org
 help / color / mirror / Atom feed
From: Xishi Qiu <qiuxishi@huawei.com>
To: Shakeel Butt <shakeelb@google.com>
Cc: Linux MM <linux-mm@kvack.org>, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [RFC] mm: why cat /proc/pid/smaps | grep Rss is different from cat /proc/pid/statm?
Date: Wed, 30 Mar 2016 15:16:07 +0800	[thread overview]
Message-ID: <56FB7D37.5070503@huawei.com> (raw)
In-Reply-To: <CALvZod5PnHz5OsNrcfsMZ6=cxLBy9436htbKerv67S+CigwGbQ@mail.gmail.com>

On 2016/3/22 22:47, Shakeel Butt wrote:

> 
> On Tue, Mar 22, 2016 at 6:55 AM, Xishi Qiu <qiuxishi@huawei.com <mailto:qiuxishi@huawei.com>> wrote:
> 
>     [root@localhost c_test]# cat /proc/3948/smaps | grep Rss
> 
> The /proc/[pid]/smaps read triggers the traversal of all of process's vmas and then page tables and accumulate RSS on each present page table entry.
> 
>     [root@localhost c_test]# cat /proc/3948/statm
>     1042 173 154 1 0 48 0
> 
> The files /proc/[pid]/statm and /proc/[pid]/status uses the counters (MM_ANONPAGES & MM_FILEPAGES) in mm_struct to report RSS of a process. These counters are modified on page table modifications. However the kernel implements an optimization where each thread keeps a local copy of these counters in its task_struct. These local counter are accumulated in the shared counter of mm_struct after some number of page faults (I think 32) faced by the thread and thus there will be mismatch with smaps file.
> 
> Shakeel

Hi Shakeel,

I malloc and memset 10M, then sleep. It seems that the problem is still exist,
the kernel version is v4.1

[root@localhost c_test]# cat /proc/13746/statm
3603 2767 250 1 0 2609 0
[root@localhost c_test]# cat /proc/13746/smaps | grep Rss
Rss:                   4 kB
Rss:                   4 kB
Rss:                   4 kB
Rss:               10244 kB
Rss:                 924 kB
Rss:                   0 kB
Rss:                  16 kB
Rss:                   8 kB
Rss:                  12 kB
Rss:                 132 kB
Rss:                  12 kB
Rss:                   4 kB
Rss:                   4 kB
Rss:                   4 kB
Rss:                   4 kB
Rss:                   8 kB
Rss:                   0 kB
Rss:                   4 kB
Rss:                   0 kB

WARNING: multiple messages have this Message-ID (diff)
From: Xishi Qiu <qiuxishi@huawei.com>
To: Shakeel Butt <shakeelb@google.com>
Cc: Linux MM <linux-mm@kvack.org>, LKML <linux-kernel@vger.kernel.org>
Subject: Re: [RFC] mm: why cat /proc/pid/smaps | grep Rss is different from cat /proc/pid/statm?
Date: Wed, 30 Mar 2016 15:16:07 +0800	[thread overview]
Message-ID: <56FB7D37.5070503@huawei.com> (raw)
In-Reply-To: <CALvZod5PnHz5OsNrcfsMZ6=cxLBy9436htbKerv67S+CigwGbQ@mail.gmail.com>

On 2016/3/22 22:47, Shakeel Butt wrote:

> 
> On Tue, Mar 22, 2016 at 6:55 AM, Xishi Qiu <qiuxishi@huawei.com <mailto:qiuxishi@huawei.com>> wrote:
> 
>     [root@localhost c_test]# cat /proc/3948/smaps | grep Rss
> 
> The /proc/[pid]/smaps read triggers the traversal of all of process's vmas and then page tables and accumulate RSS on each present page table entry.
> 
>     [root@localhost c_test]# cat /proc/3948/statm
>     1042 173 154 1 0 48 0
> 
> The files /proc/[pid]/statm and /proc/[pid]/status uses the counters (MM_ANONPAGES & MM_FILEPAGES) in mm_struct to report RSS of a process. These counters are modified on page table modifications. However the kernel implements an optimization where each thread keeps a local copy of these counters in its task_struct. These local counter are accumulated in the shared counter of mm_struct after some number of page faults (I think 32) faced by the thread and thus there will be mismatch with smaps file.
> 
> Shakeel

Hi Shakeel,

I malloc and memset 10M, then sleep. It seems that the problem is still exist,
the kernel version is v4.1

[root@localhost c_test]# cat /proc/13746/statm
3603 2767 250 1 0 2609 0
[root@localhost c_test]# cat /proc/13746/smaps | grep Rss
Rss:                   4 kB
Rss:                   4 kB
Rss:                   4 kB
Rss:               10244 kB
Rss:                 924 kB
Rss:                   0 kB
Rss:                  16 kB
Rss:                   8 kB
Rss:                  12 kB
Rss:                 132 kB
Rss:                  12 kB
Rss:                   4 kB
Rss:                   4 kB
Rss:                   4 kB
Rss:                   4 kB
Rss:                   8 kB
Rss:                   0 kB
Rss:                   4 kB
Rss:                   0 kB

--
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:[~2016-03-30  7:16 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-22 13:55 [RFC] mm: why cat /proc/pid/smaps | grep Rss is different from cat /proc/pid/statm? Xishi Qiu
2016-03-22 13:55 ` Xishi Qiu
2016-03-22 14:47 ` Shakeel Butt
2016-03-30  7:16   ` Xishi Qiu [this message]
2016-03-30  7:16     ` Xishi Qiu
2016-03-30  9:39     ` Xishi Qiu
2016-03-30  9:39       ` Xishi Qiu

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=56FB7D37.5070503@huawei.com \
    --to=qiuxishi@huawei.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=shakeelb@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.