linux/Documentation/filesystems
David Rientjes b813e931b4 smaps: add clear_refs file to clear reference
Adds /proc/pid/clear_refs.  When any non-zero number is written to this file,
pte_mkold() and ClearPageReferenced() is called for each pte and its
corresponding page, respectively, in that task's VMAs.  This file is only
writable by the user who owns the task.

It is now possible to measure _approximately_ how much memory a task is using
by clearing the reference bits with

	echo 1 > /proc/pid/clear_refs

and checking the reference count for each VMA from the /proc/pid/smaps output
at a measured time interval.  For example, to observe the approximate change
in memory footprint for a task, write a script that clears the references
(echo 1 > /proc/pid/clear_refs), sleeps, and then greps for Pgs_Referenced and
extracts the size in kB.  Add the sizes for each VMA together for the total
referenced footprint.  Moments later, repeat the process and observe the
difference.

For example, using an efficient Mozilla:

	accumulated time		referenced memory
	----------------		-----------------
		 0 s				 408 kB
		 1 s				 408 kB
		 2 s				 556 kB
		 3 s				1028 kB
		 4 s				 872 kB
		 5 s				1956 kB
		 6 s				 416 kB
		 7 s				1560 kB
		 8 s				2336 kB
		 9 s				1044 kB
		10 s				 416 kB

This is a valuable tool to get an approximate measurement of the memory
footprint for a task.

Cc: Hugh Dickins <hugh@veritas.com>
Cc: Paul Mundt <lethal@linux-sh.org>
Cc: Christoph Lameter <clameter@sgi.com>
Signed-off-by: David Rientjes <rientjes@google.com>
[akpm@linux-foundation.org: build fixes]
[mpm@selenic.com: rename for_each_pmd]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-05-07 12:12:52 -07:00
..
configfs Fix typos in /Documentation : 'U-Z' 2006-11-30 04:58:40 +01:00
9p.txt 9p: implement optional loose read cache 2007-02-18 10:16:10 -06:00
00-INDEX 9p: implement optional loose read cache 2007-02-18 10:16:10 -06:00
adfs.txt Fix typos in /Documentation : 'U-Z' 2006-11-30 04:58:40 +01:00
affs.txt [PATCH] kernel Doc/ URL corrections 2005-11-22 09:14:30 -08:00
afs.txt [AFS]: Update the AFS fs documentation. 2007-04-26 15:57:43 -07:00
automount-support.txt VFS: Unexport do_kern_mount() and clean up simple_pin_fs() 2006-06-09 09:34:16 -04:00
befs.txt Fix typos in Documentation/: 'Q'-'R' 2006-10-03 22:54:15 +02:00
bfs.txt [PATCH] update Tigran's email addresses 2006-12-13 09:05:53 -08:00
cifs.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
coda.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cramfs.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
dentry-locking.txt [PATCH] VFS: split dentry locking documentation 2005-11-07 07:53:56 -08:00
directory-locking Documentation: remove duplicated words 2006-10-03 22:57:56 +02:00
dlmfs.txt Fix typos in Documentation/: 'D'-'E' 2006-10-03 22:47:42 +02:00
Exporting Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ext2.txt Fix typos in Documentation/: 'N'-'P' 2006-10-03 22:52:05 +02:00
ext3.txt [PATCH] ext3: Add "-o bh" option 2006-06-26 09:58:20 -07:00
ext4.txt [PATCH] Documentation/filesystems/ext4.txt 2006-10-11 11:14:19 -07:00
files.txt Documentation: remove duplicated words 2006-10-03 22:57:56 +02:00
fuse.txt [PATCH] fuse: fix typo 2006-12-30 10:56:45 -08:00
gfs2.txt [GFS2] Update documentation 2006-04-25 15:44:04 -04:00
hfs.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
hpfs.txt Fix typos in /Documentation : 'U-Z' 2006-11-30 04:58:40 +01:00
inotify.txt [PATCH] inotify (5/5): update kernel documentation 2006-06-20 05:25:19 -04:00
isofs.txt It's UTF-8 2006-03-22 00:13:35 +01:00
jfs.txt It's UTF-8 2006-03-22 00:13:35 +01:00
Locking [PATCH] NFS: Fix race in nfs_release_page() 2007-01-11 18:18:21 -08:00
ncpfs.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ntfs.txt NTFS: 2.1.28 - Fix deadlock reported by Sergey Vlasov due to ntfs_put_inode(). 2007-01-18 09:42:48 +00:00
ocfs2.txt ocfs2: update mount option documentation 2006-12-07 17:48:41 -08:00
porting [PATCH] VFS: Permit filesystem to override root dentry on mount 2006-06-23 07:42:45 -07:00
proc.txt smaps: add clear_refs file to clear reference 2007-05-07 12:12:52 -07:00
ramfs-rootfs-initramfs.txt [PATCH] Initramfs docs update 2006-06-25 10:01:21 -07:00
relay.txt [PATCH] Relay: add CPU hotplug support 2007-02-11 10:51:28 -08:00
romfs.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
smbfs.txt Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
spufs.txt Fix typos in /Documentation : 'U-Z' 2006-11-30 04:58:40 +01:00
sysfs-pci.txt Fix typos concerning hierarchy 2007-02-17 19:23:03 +01:00
sysfs.txt Fix typos in Documentation/: 'D'-'E' 2006-10-03 22:47:42 +02:00
sysv-fs.txt [PATCH] fs/sysv/: doc cleanup 2006-12-07 08:39:44 -08:00
tmpfs.txt Documentation: remove duplicated words 2006-10-03 22:57:56 +02:00
udf.txt [PATCH] Update udf documentation to reflect current state of read/write support 2006-11-16 11:43:38 -08:00
ufs.txt [PATCH] ufs2 write: mount as rw 2007-02-12 09:48:40 -08:00
vfat.txt Documentation: remove duplicated words 2006-10-03 22:57:56 +02:00
vfs.txt [PATCH] fs: fix libfs data leak 2007-02-20 17:10:15 -08:00
xfs.txt [XFS] Update XFS documentation. 2005-11-03 13:46:43 +11:00
xip.txt [PATCH] xip: description 2005-06-24 00:06:42 -07:00