![Vladimir Davydov](/assets/img/avatar_default.png)
As noted by Minchan, a benefit of reading idle flag from /proc/kpageflags is that one can easily filter dirty and/or unevictable pages while estimating the size of unused memory. Note that idle flag read from /proc/kpageflags may be stale in case the page was accessed via a PTE, because it would be too costly to iterate over all page mappings on each /proc/kpageflags read to provide an up-to-date value. To make sure the flag is up-to-date one has to read /sys/kernel/mm/page_idle/bitmap first. Signed-off-by: Vladimir Davydov <vdavydov@parallels.com> Reviewed-by: Andres Lagar-Cavilla <andreslc@google.com> Cc: Minchan Kim <minchan@kernel.org> Cc: Raghavendra K T <raghavendra.kt@linux.vnet.ibm.com> Cc: Johannes Weiner <hannes@cmpxchg.org> Cc: Michal Hocko <mhocko@suse.cz> Cc: Greg Thelen <gthelen@google.com> Cc: Michel Lespinasse <walken@google.com> Cc: David Rientjes <rientjes@google.com> Cc: Pavel Emelyanov <xemul@parallels.com> Cc: Cyrill Gorcunov <gorcunov@openvz.org> Cc: Jonathan Corbet <corbet@lwn.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
40 lines
829 B
C
40 lines
829 B
C
#ifndef _UAPILINUX_KERNEL_PAGE_FLAGS_H
|
|
#define _UAPILINUX_KERNEL_PAGE_FLAGS_H
|
|
|
|
/*
|
|
* Stable page flag bits exported to user space
|
|
*/
|
|
|
|
#define KPF_LOCKED 0
|
|
#define KPF_ERROR 1
|
|
#define KPF_REFERENCED 2
|
|
#define KPF_UPTODATE 3
|
|
#define KPF_DIRTY 4
|
|
#define KPF_LRU 5
|
|
#define KPF_ACTIVE 6
|
|
#define KPF_SLAB 7
|
|
#define KPF_WRITEBACK 8
|
|
#define KPF_RECLAIM 9
|
|
#define KPF_BUDDY 10
|
|
|
|
/* 11-20: new additions in 2.6.31 */
|
|
#define KPF_MMAP 11
|
|
#define KPF_ANON 12
|
|
#define KPF_SWAPCACHE 13
|
|
#define KPF_SWAPBACKED 14
|
|
#define KPF_COMPOUND_HEAD 15
|
|
#define KPF_COMPOUND_TAIL 16
|
|
#define KPF_HUGE 17
|
|
#define KPF_UNEVICTABLE 18
|
|
#define KPF_HWPOISON 19
|
|
#define KPF_NOPAGE 20
|
|
|
|
#define KPF_KSM 21
|
|
#define KPF_THP 22
|
|
#define KPF_BALLOON 23
|
|
#define KPF_ZERO_PAGE 24
|
|
#define KPF_IDLE 25
|
|
|
|
|
|
#endif /* _UAPILINUX_KERNEL_PAGE_FLAGS_H */
|