Colin Cross
5e608e9325
mm: add a field to store names for private anonymous memory
...
Userspace processes often have multiple allocators that each do
anonymous mmaps to get memory. When examining memory usage of
individual processes or systems as a whole, it is useful to be
able to break down the various heaps that were allocated by
each layer and examine their size, RSS, and physical memory
usage.
This patch adds a user pointer to the shared union in
vm_area_struct that points to a null terminated string inside
the user process containing a name for the vma. vmas that
point to the same address will be merged, but vmas that
point to equivalent strings at different addresses will
not be merged.
Userspace can set the name for a region of memory by calling
prctl(PR_SET_VMA, PR_SET_VMA_ANON_NAME, start, len, (unsigned long)name);
Setting the name to NULL clears it.
The names of named anonymous vmas are shown in /proc/pid/maps
as [anon:<name>] and in /proc/pid/smaps in a new "Name" field
that is only present for named vmas. If the userspace pointer
is no longer valid all or part of the name will be replaced
with "<fault>".
The idea to store a userspace pointer to reduce the complexity
within mm (at the expense of the complexity of reading
/proc/pid/mem) came from Dave Hansen. This results in no
runtime overhead in the mm subsystem other than comparing
the anon_name pointers when considering vma merging. The pointer
is stored in a union with fieds that are only used on file-backed
mappings, so it does not increase memory usage.
Includes fix from Jed Davis <jld@mozilla.com> for typo in
prctl_set_vma_anon_name, which could attempt to set the name
across two vmas at the same time due to a typo, which might
corrupt the vma list. Fix it to use tmp instead of end to limit
the name setting to a single vma at a time.
Change-Id: I9aa7b6b5ef536cd780599ba4e2fba8ceebe8b59f
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2016-10-24 23:41:21 +08:00
..
caching
FS-Cache: Count the number of initialised operations
2015-04-02 14:28:53 +01:00
cifs
Documentation: fix common spelling mistakes
2016-04-28 07:51:59 -06:00
configfs
configfs: switch ->default groups to a linked list
2016-03-06 16:11:24 +01:00
nfs
Various bugfixes, a RDMA update from Chuck Lever, and support for a new
2016-03-24 19:50:32 -07:00
pohmelfs
Documentation: fix common spelling mistakes
2016-04-28 07:51:59 -06:00
00-INDEX
Doc: update 00-INDEX files to reflect the runnable code move
2016-10-10 07:12:09 -06:00
9p.txt
9p: update documentation
2014-01-24 10:55:21 -06:00
adfs.txt
affs.txt
affs: add mount option to avoid filename truncates
2014-04-07 16:36:08 -07:00
afs.txt
AFS: Documentation updates
2009-08-19 10:40:13 -07:00
autofs4-mount-control.txt
autofs: update struct autofs_dev_ioctl in Documentation
2016-10-11 15:06:31 -07:00
autofs4.txt
autofs: fix typos in Documentation/filesystems/autofs4.txt
2016-10-11 15:06:31 -07:00
automount-support.txt
Documentation: remove outdated information from automount-support.txt
2015-05-15 01:10:38 -04:00
befs.txt
bfs.txt
remove mention of CONFIG_KMOD from documentation
2008-07-22 19:24:29 +10:00
btrfs.txt
Documentation: btrfs: remove usage specific information
2016-03-11 17:02:09 +01:00
ceph.txt
ceph: fix description for rsize and rasize mount options
2016-10-03 16:13:50 +02:00
coda.txt
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
cramfs.txt
mm, fs: remove remaining PAGE_CACHE_* and page_cache_{get,release} usage
2016-04-04 10:41:08 -07:00
dax.txt
dax : Fix documentation with respect to struct pages
2016-10-01 00:52:18 -06:00
debugfs.txt
debugfs: Pass bool pointer to debugfs_create_bool()
2015-10-04 11:36:07 +01:00
devpts.txt
devpts: Make each mount of devpts an independent filesystem.
2016-06-05 10:36:01 -07:00
directory-locking
vfs: remove unused i_op->rename
2016-09-27 11:03:58 +02:00
dlmfs.txt
ocfs2: update web page + git tree in documentation
2015-02-28 09:57:50 -08:00
dnotify.txt
Documentation/fs/: split txt and source files
2010-03-12 15:52:35 -08:00
ecryptfs.txt
eCryptfs: Move ecryptfs docs into Documentation/filesystems/
2007-07-17 10:23:08 -07:00
efivarfs.txt
efi: Make efivarfs entries immutable by default
2016-02-10 16:25:52 +00:00
exofs.txt
exofs: Add option to mount by osdname
2011-03-15 15:02:51 +02:00
ext2.txt
fs: Remove ext3 filesystem driver
2015-07-23 20:59:40 +02:00
ext3.txt
fs: Remove ext3 filesystem driver
2015-07-23 20:59:40 +02:00
ext4.txt
ext4: add DAX functionality
2015-02-16 17:56:04 -08:00
f2fs.txt
f2fs: enable inline_dentry by default and add noinline_dentry option
2016-08-29 18:31:17 -07:00
fiemap.txt
fsioctl.c: make generic_block_fiemap() signal-tolerant
2015-02-10 14:30:30 -08:00
files.txt
Wrap accesses to the fd_sets in struct fdtable
2012-02-19 10:30:52 -08:00
fuse.txt
Documentation/: it's -> its where appropriate
2010-04-23 02:09:52 +02:00
gfs2-glocks.txt
gfs2: Remove gl_spin define
2015-10-29 12:57:48 -05:00
gfs2-uevents.txt
Documentation: Fix multiple typo in Documentation
2012-03-07 16:08:24 +01:00
gfs2.txt
GFS2: Update main gfs2 doc
2012-05-10 11:45:31 +01:00
hfs.txt
Documentation: HFS is orphaned
2011-11-04 12:01:48 -07:00
hfsplus.txt
Documentation: update URL to hfsplus Technote 1150
2014-02-20 14:48:51 +01:00
hpfs.txt
Documentation/: it's -> its where appropriate
2010-04-23 02:09:52 +02:00
inotify.txt
inotify: update documentation to reflect code changes
2015-02-10 14:30:28 -08:00
isofs.txt
Documentation: update broken web addresses.
2010-08-04 15:21:40 +02:00
jfs.txt
doc: fix misspellings with 'codespell' tool
2013-05-28 12:02:12 +02:00
Locking
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
locks.txt
doc: fix broken references
2011-09-27 18:08:04 +02:00
logfs.txt
mandatory-locking.txt
ncpfs.txt
ncpfs: remove dead URL from documentation
2009-09-23 07:39:42 -07:00
nilfs2.txt
nilfs2: move ioctl interface and disk layout to uapi separately
2016-08-02 19:35:21 -04:00
ntfs.txt
NTFS: Remove changelog from Documentation/filesystems/ntfs.txt.
2014-10-16 12:43:57 +01:00
ocfs2-online-filecheck.txt
Doc: ocfs: Fix typo in filesystems/ocfs2-online-filecheck.txt
2016-07-01 16:17:15 -06:00
ocfs2.txt
ocfs2: update web page + git tree in documentation
2015-02-28 09:57:50 -08:00
omfs.txt
omfs: add filesystem documentation
2008-07-26 12:00:05 -07:00
orangefs.txt
Orangefs: update orangefs.txt
2016-08-02 15:39:14 -04:00
overlayfs.txt
ovl: update doc
2016-09-01 11:12:00 +02:00
path-lookup.md
Documentation: add new description of path-name lookup.
2015-11-02 18:18:25 -07:00
path-lookup.txt
Documentation: add new description of path-name lookup.
2015-11-02 18:18:25 -07:00
porting
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
proc.txt
mm: add a field to store names for private anonymous memory
2016-10-24 23:41:21 +08:00
qnx6.txt
Documentation: fix common spelling mistakes
2016-04-28 07:51:59 -06:00
quota.txt
quota: Update documentation
2015-05-18 11:23:07 +02:00
ramfs-rootfs-initramfs.txt
initmpfs: use initramfs if rootfstype= or root= specified
2013-09-11 15:59:38 -07:00
relay.txt
doc: Fix typo in doucmentations
2013-07-25 12:34:15 +02:00
romfs.txt
Documentation/filesystems/romfs.txt: fixing link to genromfs
2011-02-17 22:04:46 +01:00
seq_file.txt
Documentation: update seq_file
2014-12-29 15:40:18 -07:00
sharedsubtree.txt
doc: fix grammar
2016-03-09 15:33:06 -07:00
spufs.txt
squashfs.txt
Squashfs: Add LZ4 compression configuration option
2014-11-27 18:48:44 +00:00
sysfs-pci.txt
sysfs-tagging.txt
sysfs-tagging.txt: fix pre-kernfs references
2015-09-13 14:38:51 -06:00
sysfs.txt
sysfs.txt: mention that store method buffers are null-terminated
2015-09-13 14:38:51 -06:00
sysv-fs.txt
[PATCH] fs/sysv/: doc cleanup
2006-12-07 08:39:44 -08:00
tmpfs.txt
Documenation: update cgroup's document path
2016-08-03 15:43:58 -06:00
ubifs.txt
udf.txt
udf: implement mode and dmode mounting options
2009-04-02 12:29:50 +02:00
ufs.txt
vfat.txt
fat: add config option to set UTF-8 mount option by default
2016-03-22 15:36:02 -07:00
vfs.txt
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
2016-10-10 20:16:43 -07:00
xfs-delayed-logging-design.txt
xfs-self-describing-metadata.txt
xfs: add metadata CRC documentation
2013-04-27 13:27:43 -05:00
xfs.txt
xfs: Document error handlers behavior
2016-09-19 09:38:25 +10:00