WSL2-Linux-Kernel/Documentation
Konstantin Khlebnikov 052fb0d635 proc: report file/anon bit in /proc/pid/pagemap
This is an implementation of Andrew's proposal to extend the pagemap file
bits to report what is missing about tasks' working set.

The problem with the working set detection is multilateral.  In the criu
(checkpoint/restore) project we dump the tasks' memory into image files
and to do it properly we need to detect which pages inside mappings are
really in use.  The mincore syscall I though could help with this did not.
 First, it doesn't report swapped pages, thus we cannot find out which
parts of anonymous mappings to dump.  Next, it does report pages from page
cache as present even if they are not mapped, and it doesn't make that has
not been cow-ed.

Note, that issue with swap pages is critical -- we must dump swap pages to
image file.  But the issues with file pages are optimization -- we can
take all file pages to image, this would be correct, but if we know that a
page is not mapped or not cow-ed, we can remove them from dump file.  The
dump would still be self-consistent, though significantly smaller in size
(up to 10 times smaller on real apps).

Andrew noticed, that the proc pagemap file solved 2 of 3 above issues --
it reports whether a page is present or swapped and it doesn't report not
mapped page cache pages.  But, it doesn't distinguish cow-ed file pages
from not cow-ed.

I would like to make the last unused bit in this file to report whether the
page mapped into respective pte is PageAnon or not.

[comment stolen from Pavel Emelyanov's v1 patch]

Signed-off-by: Konstantin Khlebnikov <khlebnikov@openvz.org>
Cc: Pavel Emelyanov <xemul@parallels.com>
Cc: Matt Mackall <mpm@selenic.com>
Cc: Hugh Dickins <hughd@google.com>
Cc: Rik van Riel <riel@redhat.com>
Acked-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2012-05-31 17:49:29 -07:00
..
ABI leds: add LM3533 LED driver 2012-05-29 16:22:32 -07:00
DocBook Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 2012-05-24 10:21:51 -07:00
EDID drm: allow loading an EDID as firmware to override broken monitor 2012-03-20 10:09:28 +00:00
PCI
RCU rcu: Introduce rcutorture testing for rcu_barrier() 2012-04-30 10:48:18 -07:00
accounting
acpi Update documentation for parameter *notrigger* in einj.txt 2012-03-30 03:30:19 -04:00
aoe Documentation: remove references to /etc/modprobe.conf 2012-03-30 16:03:15 -07:00
arm arm-soc: soc specific changes, part 2 2012-05-26 13:05:55 -07:00
auxdisplay
backlight backlight: new backlight driver for LP855x devices 2012-03-23 16:58:33 -07:00
blackfin Documentation: Fix typo in multiple files in Documentation 2012-04-16 14:37:13 +02:00
block
blockdev Documentation: remove references to /etc/modprobe.conf 2012-03-30 16:03:15 -07:00
cdrom
cgroups memcg: move charges to root cgroup if use_hierarchy=0 2012-05-29 16:22:27 -07:00
connector
console
cpu-freq
cpuidle cpuidle: add a sysfs entry to disable specific C state for debug purpose. 2012-03-30 01:52:58 -04:00
cris CRIS: Update documentation 2012-04-03 13:09:18 +02:00
crypto
development-process Documentation: Update stable address 2011-12-12 14:14:31 -08:00
device-mapper dm: add verity target 2012-03-28 18:43:38 +01:00
devicetree drivers/rtc/rtc-lpc32xx.c: add device tree support 2012-05-29 16:22:34 -07:00
driver-model Pin control subsystem changes for kernel 3.5: 2012-05-21 16:58:23 -07:00
dvb Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 2012-05-24 10:21:51 -07:00
early-userspace
extcon Documentation/extcon: porting guide for Android kernel switch driver. 2012-04-20 09:24:27 -07:00
fault-injection
fb Documentation: remove references to /etc/modprobe.conf 2012-03-30 16:03:15 -07:00
filesystems mm: document the meminfo and vmstat fields of relevance to transparent hugepages 2012-05-29 16:22:23 -07:00
firmware_class
frv
hid
hwmon hwmon updates for 3.5-rc1 2012-05-23 14:15:09 -07:00
i2c i2c: Rename last mux driver to standard pattern 2012-05-12 14:28:18 +02:00
i2o Documentation: Fix multiple typo in Documentation 2012-03-07 16:08:24 +01:00
ia64
ide Documentation: remove references to /etc/modprobe.conf 2012-03-30 16:03:15 -07:00
infiniband
input Documentation: input.txt: clarify mousedev 'cat' command syntax 2012-03-30 16:03:15 -07:00
ioctl mei: update Documentation/ioctl/ioctl-number.txt 2012-05-09 14:00:31 -07:00
isdn Documentation: remove references to /etc/modprobe.conf 2012-03-30 16:03:15 -07:00
ja_JP
kbuild Merge branch 'kconfig' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild 2012-05-28 10:37:56 -07:00
kdump [S390] Add s390x description to Documentation/kdump/kdump.txt 2011-12-27 11:27:13 +01:00
ko_KR driver-core: documentation: fix up Greg's email address 2012-02-15 14:48:01 -08:00
laptops Documentation: remove references to /etc/modprobe.conf 2012-03-30 16:03:15 -07:00
leds leds: add new transient trigger for one shot timer activation 2012-05-29 16:22:32 -07:00
m68k
make
memory-devices memory: emif: add basic infrastructure for EMIF driver 2012-05-02 00:10:49 -07:00
mips
misc-devices mei: Documentation: add generated example binary into .gitignore file 2012-05-14 15:43:44 -07:00
mmc mmc: core: Fixup delayed work clock gating patch 2012-01-11 23:58:43 -05:00
mn10300
mtd
namespaces
netlabel
networking Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-05-22 19:22:50 -07:00
nfc NFC: Update Documentation/nfc-hci.txt 2012-05-15 17:28:01 -04:00
parisc Documentation: Fix typo in multiple files in Documentation 2012-04-16 14:37:13 +02:00
pcmcia
power Power management updates for 3.5 2012-05-23 14:07:06 -07:00
powerpc Revert "powerpc/hw-breakpoint: Use generic hw-breakpoint interfaces for new PPC ptrace flags" 2012-05-22 14:37:24 +10:00
pps
prctl Documentation: prctl/seccomp_filter 2012-04-14 11:13:22 +10:00
pti
ptp
rapidio
s390 Documentation: remove references to /etc/modprobe.conf 2012-03-30 16:03:15 -07:00
scheduler sched: Remove stale power aware scheduling remnants and dysfunctional knobs 2012-05-17 13:48:56 +02:00
scsi Merge branch 'delete-mca' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2012-05-23 17:12:06 -07:00
security Smack: allow for significantly longer Smack labels v4 2012-05-14 22:48:38 -07:00
serial serial: delete the MCA specific 8250 support. 2012-05-17 19:02:14 -04:00
sh
sound Sound updates for 3.5-rc1 2012-05-23 13:05:43 -07:00
spi spi: create a message queueing infrastructure 2012-03-07 19:19:48 -07:00
sysctl net: doc: merge /proc/sys/net/core/* documents into one place 2012-04-27 00:09:26 -04:00
target Documentation: Fix typo in tcm_mod_builder.py 2012-02-10 09:52:18 +01:00
telephony
thermal thermal: Rename generate_netlink_event 2012-01-23 03:15:25 -05:00
timers
trace tracing: Fix kconfig warning due to a typo 2012-05-08 14:17:25 +02:00
usb Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-05-22 19:22:50 -07:00
vDSO
video4linux Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media 2012-05-24 10:21:51 -07:00
virtual Merge branch 'next' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2012-05-24 16:17:30 -07:00
vm proc: report file/anon bit in /proc/pid/pagemap 2012-05-31 17:49:29 -07:00
w1
watchdog Documentation/watchdog: Fix the file descriptor leak when no cmdline arg given 2012-05-23 16:27:48 +02:00
wimax
x86
zh_CN Fix a mistake sentence in the file 'Documentation/zh_CN/magic-number.txt' 2012-05-07 17:20:27 -07:00
.gitignore
00-INDEX MCA: delete all remaining traces of microchannel bus support. 2012-05-17 19:06:13 -04:00
BUG-HUNTING
Changes
CodingStyle CodingStyle: add kmalloc_array() to memory allocators 2012-05-31 17:49:26 -07:00
DMA-API-HOWTO.txt
DMA-API.txt
DMA-ISA-LPC.txt
DMA-attributes.txt common: DMA-mapping: add NON-CONSISTENT attribute 2012-03-28 16:36:44 +02:00
HOWTO docs: update HOWTO for 2.6.x -> 3.x versioning 2012-04-19 19:13:08 -07:00
IPMI.txt
IRQ-affinity.txt
IRQ-domain.txt irq_domain: add documentation and MAINTAINERS entry. 2012-02-14 14:06:47 -07:00
IRQ.txt
Intel-IOMMU.txt
Makefile mei: move doc files Documentation/misc-devices/mei 2012-05-09 13:59:09 -07:00
ManagementStyle
SAK.txt
SM501.txt
SecurityBugs
SubmitChecklist
SubmittingDrivers
SubmittingPatches Documentation/SubmittingPatches: suggested the use of scripts/get_maintainer.pl 2012-05-25 16:18:30 +02:00
VGA-softcursor.txt
applying-patches.txt
atomic_ops.txt doc: Add load/store guarantees to Documentation/atomic-ops.txt 2011-12-11 10:31:58 -08:00
bad_memory.txt
basic_profiling.txt
binfmt_misc.txt
braille-console.txt
bt8xxgpio.txt
btmrvl.txt
bus-virt-phys-mapping.txt
cachetlb.txt
circular-buffers.txt
clk.txt Documentation: common clk API 2012-03-16 20:35:01 +00:00
coccinelle.txt coccinelle.txt: update documentation to include M= option 2012-01-14 22:25:56 +01:00
cpu-hotplug.txt documentation: remove references to cpu_*_map. 2012-03-29 15:38:31 +10:30
cpu-load.txt
cputopology.txt
crc32.txt crc32: move long comment about crc32 fundamentals to Documentation/ 2012-03-23 16:58:37 -07:00
dcdbas.txt
debugging-modules.txt
debugging-via-ohci1394.txt
dell_rbu.txt
devices.txt Merge branch 'delete-mca' of git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux 2012-05-23 17:12:06 -07:00
digsig.txt
dma-buf-sharing.txt dma-buf: add initial vmap documentation 2012-05-25 12:51:11 +05:30
dmaengine.txt Documentation: Fix multiple typo in Documentation 2012-03-07 16:08:24 +01:00
dontdiff Documentation: remove 'mach' from dontdiff file 2012-03-30 16:03:15 -07:00
dynamic-debug-howto.txt dynamic_debug: update Documentation/*, Kconfig.debug 2012-04-30 16:26:30 -04:00
edac.txt Documentation: Fix typo in multiple files in Documentation 2012-04-16 14:37:13 +02:00
eisa.txt MCA: delete all remaining traces of microchannel bus support. 2012-05-17 19:06:13 -04:00
email-clients.txt
feature-removal-schedule.txt MMC highlights for 3.5: 2012-05-25 08:23:32 -07:00
flexible-arrays.txt
futex-requeue-pi.txt
gcov.txt
gpio.txt gpio: add flags to export GPIOs when requesting 2012-04-05 21:24:06 -07:00
highuid.txt
hw_random.txt
hwspinlock.txt
init.txt
initrd.txt Documentation/initrd.txt: Change the location of util-linux 2012-05-25 16:18:34 +02:00
intel_txt.txt
io-mapping.txt
io_ordering.txt
iostats.txt
irqflags-tracing.txt
isapnp.txt
java.txt
kernel-doc-nano-HOWTO.txt
kernel-docs.txt
kernel-parameters.txt Merge branch 'doc' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2012-05-28 10:40:11 -07:00
kmemcheck.txt
kmemleak.txt kmemleak: Handle percpu memory allocation 2011-12-02 16:12:42 +00:00
kobject.txt driver-core: documentation: fix up Greg's email address 2012-02-15 14:48:01 -08:00
kprobes.txt
kref.txt
ldm.txt
local_ops.txt
lockdep-design.txt lockdep: Update documentation for lock-class leak detection 2011-12-11 10:31:23 -08:00
lockstat.txt
lockup-watchdogs.txt watchdog: Update documentation 2012-02-11 15:11:28 +01:00
logo.gif
logo.txt
magic-number.txt drivers/net: fix up stale paths from driver reorg 2012-01-30 12:54:40 -05:00
md.txt md: create externally visible flags for supporting hot-replace. 2011-12-23 10:17:51 +11:00
media-framework.txt [media] media: Add link_validate() op to check links to the sink pad 2012-05-14 08:44:11 -03:00
memory-barriers.txt
memory-hotplug.txt Documentation: Fix typo in multiple files in Documentation 2012-04-16 14:37:13 +02:00
memory.txt
mono.txt Documentation: remove references to /etc/modprobe.conf 2012-03-30 16:03:15 -07:00
mutex-design.txt
nommu-mmap.txt
numastat.txt Doc: Update numastat.txt 2012-02-28 16:05:06 +01:00
oops-tracing.txt
padata.txt
parport-lowlevel.txt
parport.txt Documentation: remove references to /etc/modprobe.conf 2012-03-30 16:03:15 -07:00
pi-futex.txt
pinctrl.txt pinctrl: implement devm_pinctrl_get()/put() 2012-04-18 13:53:13 +02:00
pnp.txt
preempt-locking.txt
printk-formats.txt
prio_tree.txt
ramoops.txt pstore/ram: Add ECC support 2012-05-17 08:51:59 -07:00
rbtree.txt
remoteproc.txt remoteproc: remove the single rpmsg vdev limitation 2012-03-06 19:14:12 +02:00
rfkill.txt
robust-futex-ABI.txt
robust-futexes.txt
rpmsg.txt rpmsg: add virtio-based remote processor messaging bus 2012-02-08 22:53:58 +02:00
rt-mutex-design.txt
rt-mutex.txt
rtc.txt
serial-console.txt
sgi-ioc4.txt
sgi-visws.txt
sparse.txt
spinlocks.txt
stable_api_nonsense.txt
stable_kernel_rules.txt stable: update documentation to ask for kernel version 2012-01-24 10:50:22 -08:00
static-keys.txt Documentation: Fix typo in multiple files in Documentation 2012-04-16 14:37:13 +02:00
svga.txt
sysfs-rules.txt
sysrq.txt Documentation: sysrq: Crutcher Dunnavant is unavailable 2012-03-30 16:03:15 -07:00
unaligned-memory-access.txt
unicode.txt
unshare.txt
vgaarbiter.txt misc latin1 to utf8 conversions 2012-01-02 13:04:55 +01:00
video-output.txt
vme_api.txt VME: Move API documentation to Documentation folder 2012-05-08 16:01:34 -07:00
volatile-considered-harmful.txt
workqueue.txt
xz.txt
zorro.txt