KOSAKI Motohiro
1c2499ae87
/proc/pid/smaps: fix dirty pages accounting
Currently, /proc/<pid>/smaps has wrong dirty pages accounting.
Shared_Dirty and Private_Dirty output only pte dirty pages and ignore
PG_dirty page flag. It is difference against documentation, but also
inconsistent against Referenced field. (Referenced checks both pte and
page flags)
This patch fixes it.
Test program:
large-array.c
---------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
char array[1*1024*1024*1024L];
int main(void)
{
memset(array, 1, sizeof(array));
pause();
return 0;
}
---------------------------------------------------
Test case:
1. run ./large-array
2. cat /proc/`pidof large-array`/smaps
3. swapoff -a
4. cat /proc/`pidof large-array`/smaps again
Test result:
<before patch>
00601000-40601000 rw-p 00000000 00:00 0
Size: 1048576 kB
Rss: 1048576 kB
Pss: 1048576 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 218992 kB <-- showed pages as clean incorrectly
Private_Dirty: 829584 kB
Referenced: 388364 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
<after patch>
00601000-40601000 rw-p 00000000 00:00 0
Size: 1048576 kB
Rss: 1048576 kB
Pss: 1048576 kB
Shared_Clean: 0 kB
Shared_Dirty: 0 kB
Private_Clean: 0 kB
Private_Dirty: 1048576 kB <-- fixed
Referenced: 388480 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Acked-by: Hugh Dickins <hughd@google.com>
Cc: Matt Mackall <mpm@selenic.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2010-09-22 17:22:39 -07:00
..
2010-09-13 08:13:03 -05:00
2010-08-09 16:47:39 -04:00
2010-08-09 16:48:51 -04:00
2010-08-13 10:37:30 -07:00
2010-08-09 00:13:34 +02:00
2010-08-11 08:59:06 -07:00
2010-08-09 16:48:53 -04:00
2010-08-10 15:22:42 -07:00
2010-08-12 09:51:35 -07:00
2010-09-17 12:30:31 -07:00
2010-09-14 23:21:03 +00:00
2010-09-19 11:03:09 -07:00
2010-08-18 01:01:33 -04:00
2010-08-05 14:23:45 -05:00
2010-08-27 10:50:53 -05:00
2010-08-11 09:19:43 -07:00
2010-08-09 16:48:45 -04:00
2010-08-10 11:26:52 -07:00
2010-08-10 11:26:52 -07:00
2010-08-18 01:09:01 -04:00
2010-08-10 11:26:52 -07:00
2010-08-12 09:51:35 -07:00
2010-09-07 13:42:41 +02:00
2010-09-17 14:00:10 +01:00
2010-08-09 16:48:37 -04:00
2010-08-09 16:48:37 -04:00
2010-08-18 06:21:10 -04:00
2010-08-09 16:48:17 -04:00
2010-08-09 16:48:16 -04:00
2010-08-09 16:47:49 -04:00
2010-08-11 00:29:47 -04:00
2010-08-18 01:09:01 -04:00
2010-08-18 01:09:01 -04:00
2010-08-10 11:49:21 -07:00
2010-08-10 15:33:09 -07:00
2010-08-14 00:24:24 +02:00
2010-09-09 18:57:25 -07:00
2010-08-10 13:58:28 -07:00
2010-09-12 19:57:50 -04:00
2010-09-12 19:57:50 -04:00
2010-08-30 10:18:03 +09:00
2010-08-27 21:42:11 -04:00
2010-08-09 16:48:37 -04:00
2010-09-08 14:26:00 +08:00
2010-08-10 11:47:36 -07:00
2010-08-13 10:06:55 +02:00
2010-09-22 17:22:39 -07:00
2010-08-09 16:47:31 -04:00
2010-08-10 11:26:52 -07:00
2010-08-09 16:47:39 -04:00
2010-08-18 01:09:01 -04:00
2010-08-09 16:48:00 -04:00
2010-08-08 22:29:33 +00:00
2010-09-03 17:26:28 -07:00
2010-08-11 08:59:23 -07:00
2010-08-10 11:26:52 -07:00
2010-08-10 11:26:52 -07:00
2010-08-18 01:09:01 -04:00
2010-09-10 10:16:54 -05:00
2010-09-22 17:22:39 -07:00
2010-08-09 16:47:39 -04:00
2010-08-14 00:24:24 +02:00
2010-06-29 15:29:31 -07:00
2010-09-09 18:57:24 -07:00
2010-08-17 18:07:43 -07:00
2010-08-23 13:36:59 +02:00
2010-08-07 18:20:39 +02:00
2010-08-11 08:59:18 -07:00
2010-08-18 01:09:01 -04:00
2010-09-22 09:48:47 +02:00
2010-08-14 00:24:24 +02:00
2010-09-22 17:22:38 -07:00
2010-08-18 08:35:48 -04:00
2010-09-09 18:57:22 -07:00
2010-08-09 16:47:44 -04:00
2010-09-10 08:10:26 -07:00
2010-09-09 18:57:25 -07:00
2010-08-18 08:35:48 -04:00
2010-08-11 08:59:02 -07:00
2010-08-18 08:35:46 -04:00
2010-09-22 09:48:47 +02:00
2010-08-18 01:04:22 -04:00
2010-08-10 11:39:13 -07:00
2010-08-18 08:35:48 -04:00
2010-08-14 00:24:24 +02:00
2010-07-20 17:30:22 +02:00
2010-08-09 16:47:39 -04:00
2010-08-18 06:24:41 -04:00
2010-08-18 08:35:48 -04:00
2010-09-07 13:46:20 -07:00
2010-08-18 08:35:47 -04:00
2010-08-18 08:35:48 -04:00
2010-07-28 09:58:32 -04:00
2010-08-09 20:45:05 -07:00
2010-08-11 08:59:20 -07:00
2010-08-07 18:52:56 +02:00
2010-08-13 16:53:13 -07:00
2010-08-09 16:48:44 -04:00
2010-08-18 08:35:48 -04:00
2010-08-09 16:47:43 -04:00
2010-08-13 16:53:13 -07:00