library: refactored some header file items and origins

This commit is intended as a refinement of the patches
mentioned below, where origins/sources of newlib items
were added to the header files for user documentation.

However, if those additions are to be truly effective,
along with kernel documentation (where available), the
following prerequisites must also have been satisfied:
. our identifiers closely align with linux field names
. our derived items are documented or self-documenting

Satisfying those prerequisites prompted this patch and
for these changes, kernel sources were emphasized over
available documentation (shame on me, it should always
have been so). And, while some 'new' fields were found
to be conditional, they were included unconditionally.

These changes appear more extensive than they actually
need be since I have attempted to enforce some spacing
conventions. So, I've summarize the significant things
in the sections that follow. For a proper perspective,
use: 'git diff --ignore-space-change' (good as alias).

___________________________________________ <PIDS> api
This api is unique in that there exists many different
file/directory origins subordinate to /proc/<pid>. And
our item identifiers are sometimes coerced so as to be
able to group related or similar enumerators together.

So, users needed more help relating our identifiers to
an actual documented field. Thus, we will now also add
the field names as with 'stat: delayacct_blkio_ticks'.

Each item ending with a '_C' now consistently includes
both the parent's count/time plus waited for children.

That 'RTPRIO' guy was renamed/relocated as PRIORITY_RT
since its original name is an implementation artifact.

___________________________________________ <STAT> api
The only api change was to correct a typo ('dervied').

_________________________________________ <VMSTAT> api
Even ignoring white space, this interface received the
largest number of changes. Mostly, this was because of
deficiencies in the proc(5) documentation. Recall that
this documentation already sorely lacks any substance.
Usually, just kernel releases are noted, not contents.

When compared to kernel source, that proc(5) contained
many non-existent fields and also omitted many others.

________________________________________ <MEMINFO> api
Sadly, with this api many of the changes were simply a
correction of some earlier 'human error' where several
fields where hashed then tracked but never represented
with an item enumerator in this meminfo.h header file.

_______________________________________ <SLABINFO> api
The 'SLABS' (summary) & 'SLABNODE' items were reversed
since the former are derived from the separate caches.

More significantly, those 'SLABNODE' guys were renamed
to 'SLAB' since they concern individual caches and the
concept of 'nodes' is really an implementation detail.

Also, several enumerators were changed to more closely
agree with official slabinfo(5) documentation referred
to in what we're treating as a base document: proc(5).

Lastly, while those 'SLABS' items are solely a product
of our library and not represented in slabinfo(5), the
names attempt to parallel those found as 'SLAB' items.

______________________________________ <DISKSTATS> api
One enumeration identifier was changed so as to better
reflect its relationship to that actual documentation:
'Documentation/iostats.txt', as referenced in proc(5).

Reference(s):
. 12/2018, item origins added (and commit msg history)
commit 96d59cbf46b3ff687bd29fad4708074a0e1cea14
. 01/2019, <stat> origins tweaked
commit 201e816b26ddaccc923ec40977c92037cdd0c34e

Signed-off-by: Jim Warner <james.warner@comcast.net>
This commit is contained in:
Jim Warner 2019-03-12 00:00:00 -06:00 committed by Craig Small
parent 47af06b52b
commit 6671a3a8b7
11 changed files with 1393 additions and 1159 deletions

View File

@ -138,7 +138,7 @@ REG_set(DISKSTATS_WRITES_MERGED, ul_int, writes_merged)
REG_set(DISKSTATS_WRITE_SECTORS, ul_int, write_sectors)
REG_set(DISKSTATS_WRITE_TIME, ul_int, write_time)
REG_set(DISKSTATS_IO_TIME, ul_int, io_time)
REG_set(DISKSTATS_IO_WTIME, ul_int, io_wtime)
REG_set(DISKSTATS_WEIGHTED_TIME, ul_int, io_wtime)
REG_set(DISKSTATS_IO_INPROGRESS, s_int, io_inprogress)
@ -151,7 +151,7 @@ HST_set(DISKSTATS_DELTA_WRITES_MERGED, s_int, writes_merged)
HST_set(DISKSTATS_DELTA_WRITE_SECTORS, s_int, write_sectors)
HST_set(DISKSTATS_DELTA_WRITE_TIME, s_int, write_time)
HST_set(DISKSTATS_DELTA_IO_TIME, s_int, io_time)
HST_set(DISKSTATS_DELTA_IO_WTIME, s_int, io_wtime)
HST_set(DISKSTATS_DELTA_WEIGHTED_TIME, s_int, io_wtime)
#undef setDECL
#undef DEV_set
@ -237,7 +237,7 @@ static struct {
{ RS(DISKSTATS_WRITE_SECTORS), QS(ul_int), TS(ul_int) },
{ RS(DISKSTATS_WRITE_TIME), QS(ul_int), TS(ul_int) },
{ RS(DISKSTATS_IO_TIME), QS(ul_int), TS(ul_int) },
{ RS(DISKSTATS_IO_WTIME), QS(ul_int), TS(ul_int) },
{ RS(DISKSTATS_WEIGHTED_TIME), QS(ul_int), TS(ul_int) },
{ RS(DISKSTATS_IO_INPROGRESS), QS(s_int), TS(s_int) },
@ -250,7 +250,7 @@ static struct {
{ RS(DISKSTATS_DELTA_WRITE_SECTORS), QS(s_int), TS(s_int) },
{ RS(DISKSTATS_DELTA_WRITE_TIME), QS(s_int), TS(s_int) },
{ RS(DISKSTATS_DELTA_IO_TIME), QS(s_int), TS(s_int) },
{ RS(DISKSTATS_DELTA_IO_WTIME), QS(s_int), TS(s_int) },
{ RS(DISKSTATS_DELTA_WEIGHTED_TIME), QS(s_int), TS(s_int) },
// dummy entry corresponding to DISKSTATS_logical_end ...
{ NULL, NULL, NULL }
@ -258,7 +258,7 @@ static struct {
/* please note,
* this enum MUST be 1 greater than the highest value of any enum */
enum diskstats_item DISKSTATS_logical_end = DISKSTATS_DELTA_IO_WTIME + 1;
enum diskstats_item DISKSTATS_logical_end = DISKSTATS_DELTA_WEIGHTED_TIME + 1;
#undef setNAME
#undef srtNAME

View File

@ -46,11 +46,11 @@ enum diskstats_item {
DISKSTATS_WRITE_SECTORS, // ul_int "
DISKSTATS_WRITE_TIME, // ul_int "
DISKSTATS_IO_TIME, // ul_int "
DISKSTATS_IO_WTIME, // ul_int "
DISKSTATS_WEIGHTED_TIME, // ul_int "
DISKSTATS_IO_INPROGRESS, // s_int "
DISKSTATS_DELTA_READS, // s_int dervied from above
DISKSTATS_DELTA_READS, // s_int derived from above
DISKSTATS_DELTA_READS_MERGED, // s_int "
DISKSTATS_DELTA_READ_SECTORS, // s_int "
DISKSTATS_DELTA_READ_TIME, // s_int "
@ -59,7 +59,7 @@ enum diskstats_item {
DISKSTATS_DELTA_WRITE_SECTORS, // s_int "
DISKSTATS_DELTA_WRITE_TIME, // s_int "
DISKSTATS_DELTA_IO_TIME, // s_int "
DISKSTATS_DELTA_IO_WTIME // s_int "
DISKSTATS_DELTA_WEIGHTED_TIME // s_int "
};
enum diskstats_sort_order {

View File

@ -48,9 +48,10 @@ struct meminfo_data {
unsigned long CmaTotal;
unsigned long CommitLimit;
unsigned long Committed_AS;
unsigned long DirectMap1G; // man 5 proc: 'to be documented'
unsigned long DirectMap2M; // man 5 proc: 'to be documented'
unsigned long DirectMap4k; // man 5 proc: 'to be documented'
unsigned long DirectMap1G;
unsigned long DirectMap2M;
unsigned long DirectMap4M;
unsigned long DirectMap4k;
unsigned long Dirty;
unsigned long HardwareCorrupted; // man 5 proc: 'to be documented'
unsigned long HighFree;
@ -60,6 +61,7 @@ struct meminfo_data {
unsigned long HugePages_Surp;
unsigned long HugePages_Total;
unsigned long Hugepagesize;
unsigned long Hugetlb;
unsigned long Inactive;
unsigned long Inactive_anon; // as: Inactive(anon): man 5 proc: 'to be documented'
unsigned long Inactive_file; // as: Inactive(file): man 5 proc: 'to be documented'
@ -75,6 +77,7 @@ struct meminfo_data {
unsigned long MmapCopy; // man 5 proc: 'to be documented'
unsigned long NFS_Unstable;
unsigned long PageTables;
unsigned long Percpu;
unsigned long Quicklists; // man 5 proc: 'to be documented'
unsigned long SReclaimable;
unsigned long SUnreclaim;
@ -146,11 +149,21 @@ MEM_set(MEM_BOUNCE, ul_int, Bounce)
MEM_set(MEM_BUFFERS, ul_int, Buffers)
MEM_set(MEM_CACHED, ul_int, Cached)
MEM_set(MEM_CACHED_ALL, ul_int, derived_mem_cached)
MEM_set(MEM_COMMIT_LIMIT, ul_int, CommitLimit)
MEM_set(MEM_CMA_FREE, ul_int, CmaFree)
MEM_set(MEM_CMA_TOTAL, ul_int, CmaTotal)
MEM_set(MEM_COMMITTED_AS, ul_int, Committed_AS)
MEM_set(MEM_HARD_CORRUPTED, ul_int, HardwareCorrupted)
MEM_set(MEM_COMMIT_LIMIT, ul_int, CommitLimit)
MEM_set(MEM_DIRECTMAP_1G, ul_int, DirectMap1G)
MEM_set(MEM_DIRECTMAP_2M, ul_int, DirectMap2M)
MEM_set(MEM_DIRECTMAP_4K, ul_int, DirectMap4k)
MEM_set(MEM_DIRECTMAP_4M, ul_int, DirectMap4M)
MEM_set(MEM_DIRTY, ul_int, Dirty)
MEM_set(MEM_FREE, ul_int, MemFree)
MEM_set(MEM_HARD_CORRUPTED, ul_int, HardwareCorrupted)
MEM_set(MEM_HIGH_FREE, ul_int, HighFree)
MEM_set(MEM_HIGH_TOTAL, ul_int, HighTotal)
MEM_set(MEM_HIGH_USED, ul_int, derived_mem_hi_used)
MEM_set(MEM_HUGETBL, ul_int, Hugetlb)
MEM_set(MEM_HUGE_ANON, ul_int, AnonHugePages)
MEM_set(MEM_HUGE_FREE, ul_int, HugePages_Free)
MEM_set(MEM_HUGE_RSVD, ul_int, HugePages_Rsvd)
@ -163,10 +176,14 @@ MEM_set(MEM_INACTIVE_FILE, ul_int, Inactive_file)
MEM_set(MEM_KERNEL_RECLAIM, ul_int, KReclaimable)
MEM_set(MEM_KERNEL_STACK, ul_int, KernelStack)
MEM_set(MEM_LOCKED, ul_int, Mlocked)
MEM_set(MEM_LOW_FREE, ul_int, LowFree)
MEM_set(MEM_LOW_TOTAL, ul_int, LowTotal)
MEM_set(MEM_LOW_USED, ul_int, derived_mem_lo_used)
MEM_set(MEM_MAPPED, ul_int, Mapped)
MEM_set(MEM_MAP_COPY, ul_int, MmapCopy)
MEM_set(MEM_NFS_UNSTABLE, ul_int, NFS_Unstable)
MEM_set(MEM_PAGE_TABLES, ul_int, PageTables)
MEM_set(MEM_PER_CPU, ul_int, Percpu)
MEM_set(MEM_QUICKLISTS, ul_int, Quicklists)
MEM_set(MEM_SHARED, ul_int, Shmem)
MEM_set(MEM_SHMEM_HUGE, ul_int, ShmemHugePages)
@ -192,11 +209,21 @@ HST_set(DELTA_BOUNCE, s_int, Bounce)
HST_set(DELTA_BUFFERS, s_int, Buffers)
HST_set(DELTA_CACHED, s_int, Cached)
HST_set(DELTA_CACHED_ALL, s_int, derived_mem_cached)
HST_set(DELTA_COMMIT_LIMIT, s_int, CommitLimit)
HST_set(DELTA_CMA_FREE, s_int, CmaFree)
HST_set(DELTA_CMA_TOTAL, s_int, CmaTotal)
HST_set(DELTA_COMMITTED_AS, s_int, Committed_AS)
HST_set(DELTA_HARD_CORRUPTED, s_int, HardwareCorrupted)
HST_set(DELTA_COMMIT_LIMIT, s_int, CommitLimit)
HST_set(DELTA_DIRECTMAP_1G, s_int, DirectMap1G)
HST_set(DELTA_DIRECTMAP_2M, s_int, DirectMap2M)
HST_set(DELTA_DIRECTMAP_4K, s_int, DirectMap4k)
HST_set(DELTA_DIRECTMAP_4M, s_int, DirectMap4M)
HST_set(DELTA_DIRTY, s_int, Dirty)
HST_set(DELTA_FREE, s_int, MemFree)
HST_set(DELTA_HARD_CORRUPTED, s_int, HardwareCorrupted)
HST_set(DELTA_HIGH_FREE, s_int, HighFree)
HST_set(DELTA_HIGH_TOTAL, s_int, HighTotal)
HST_set(DELTA_HIGH_USED, s_int, derived_mem_hi_used)
HST_set(DELTA_HUGETBL, s_int, Hugetlb)
HST_set(DELTA_HUGE_ANON, s_int, AnonHugePages)
HST_set(DELTA_HUGE_FREE, s_int, HugePages_Free)
HST_set(DELTA_HUGE_RSVD, s_int, HugePages_Rsvd)
@ -209,10 +236,14 @@ HST_set(DELTA_INACTIVE_FILE, s_int, Inactive_file)
HST_set(DELTA_KERNEL_RECLAIM, s_int, KReclaimable)
HST_set(DELTA_KERNEL_STACK, s_int, KernelStack)
HST_set(DELTA_LOCKED, s_int, Mlocked)
HST_set(DELTA_LOW_FREE, s_int, LowFree)
HST_set(DELTA_LOW_TOTAL, s_int, LowTotal)
HST_set(DELTA_LOW_USED, s_int, derived_mem_lo_used)
HST_set(DELTA_MAPPED, s_int, Mapped)
HST_set(DELTA_MAP_COPY, s_int, MmapCopy)
HST_set(DELTA_NFS_UNSTABLE, s_int, NFS_Unstable)
HST_set(DELTA_PAGE_TABLES, s_int, PageTables)
HST_set(DELTA_PER_CPU, s_int, Percpu)
HST_set(DELTA_QUICKLISTS, s_int, Quicklists)
HST_set(DELTA_SHARED, s_int, Shmem)
HST_set(DELTA_SHMEM_HUGE, s_int, ShmemHugePages)
@ -229,14 +260,6 @@ HST_set(DELTA_VM_ALLOC_USED, s_int, VmallocUsed)
HST_set(DELTA_WRITEBACK, s_int, Writeback)
HST_set(DELTA_WRITEBACK_TMP, s_int, WritebackTmp)
MEM_set(MEMHI_FREE, ul_int, HighFree)
MEM_set(MEMHI_TOTAL, ul_int, HighTotal)
MEM_set(MEMHI_USED, ul_int, derived_mem_hi_used)
MEM_set(MEMLO_FREE, ul_int, LowFree)
MEM_set(MEMLO_TOTAL, ul_int, LowTotal)
MEM_set(MEMLO_USED, ul_int, derived_mem_lo_used)
MEM_set(SWAP_CACHED, ul_int, SwapCached)
MEM_set(SWAP_FREE, ul_int, SwapFree)
MEM_set(SWAP_TOTAL, ul_int, SwapTotal)
@ -282,11 +305,21 @@ static struct {
{ RS(MEM_BUFFERS), TS(ul_int) },
{ RS(MEM_CACHED), TS(ul_int) },
{ RS(MEM_CACHED_ALL), TS(ul_int) },
{ RS(MEM_COMMIT_LIMIT), TS(ul_int) },
{ RS(MEM_CMA_FREE), TS(ul_int) },
{ RS(MEM_CMA_TOTAL), TS(ul_int) },
{ RS(MEM_COMMITTED_AS), TS(ul_int) },
{ RS(MEM_HARD_CORRUPTED), TS(ul_int) },
{ RS(MEM_COMMIT_LIMIT), TS(ul_int) },
{ RS(MEM_DIRECTMAP_1G), TS(ul_int) },
{ RS(MEM_DIRECTMAP_2M), TS(ul_int) },
{ RS(MEM_DIRECTMAP_4K), TS(ul_int) },
{ RS(MEM_DIRECTMAP_4M), TS(ul_int) },
{ RS(MEM_DIRTY), TS(ul_int) },
{ RS(MEM_FREE), TS(ul_int) },
{ RS(MEM_HARD_CORRUPTED), TS(ul_int) },
{ RS(MEM_HIGH_FREE), TS(ul_int) },
{ RS(MEM_HIGH_TOTAL), TS(ul_int) },
{ RS(MEM_HIGH_USED), TS(ul_int) },
{ RS(MEM_HUGETBL), TS(ul_int) },
{ RS(MEM_HUGE_ANON), TS(ul_int) },
{ RS(MEM_HUGE_FREE), TS(ul_int) },
{ RS(MEM_HUGE_RSVD), TS(ul_int) },
@ -299,10 +332,14 @@ static struct {
{ RS(MEM_KERNEL_RECLAIM), TS(ul_int) },
{ RS(MEM_KERNEL_STACK), TS(ul_int) },
{ RS(MEM_LOCKED), TS(ul_int) },
{ RS(MEM_LOW_FREE), TS(ul_int) },
{ RS(MEM_LOW_TOTAL), TS(ul_int) },
{ RS(MEM_LOW_USED), TS(ul_int) },
{ RS(MEM_MAPPED), TS(ul_int) },
{ RS(MEM_MAP_COPY), TS(ul_int) },
{ RS(MEM_NFS_UNSTABLE), TS(ul_int) },
{ RS(MEM_PAGE_TABLES), TS(ul_int) },
{ RS(MEM_PER_CPU), TS(ul_int) },
{ RS(MEM_QUICKLISTS), TS(ul_int) },
{ RS(MEM_SHARED), TS(ul_int) },
{ RS(MEM_SHMEM_HUGE), TS(ul_int) },
@ -328,11 +365,21 @@ static struct {
{ RS(DELTA_BUFFERS), TS(s_int) },
{ RS(DELTA_CACHED), TS(s_int) },
{ RS(DELTA_CACHED_ALL), TS(s_int) },
{ RS(DELTA_COMMIT_LIMIT), TS(s_int) },
{ RS(DELTA_CMA_FREE), TS(s_int) },
{ RS(DELTA_CMA_TOTAL), TS(s_int) },
{ RS(DELTA_COMMITTED_AS), TS(s_int) },
{ RS(DELTA_HARD_CORRUPTED), TS(s_int) },
{ RS(DELTA_COMMIT_LIMIT), TS(s_int) },
{ RS(DELTA_DIRECTMAP_1G), TS(s_int) },
{ RS(DELTA_DIRECTMAP_2M), TS(s_int) },
{ RS(DELTA_DIRECTMAP_4K), TS(s_int) },
{ RS(DELTA_DIRECTMAP_4M), TS(s_int) },
{ RS(DELTA_DIRTY), TS(s_int) },
{ RS(DELTA_FREE), TS(s_int) },
{ RS(DELTA_HARD_CORRUPTED), TS(s_int) },
{ RS(DELTA_HIGH_FREE), TS(s_int) },
{ RS(DELTA_HIGH_TOTAL), TS(s_int) },
{ RS(DELTA_HIGH_USED), TS(s_int) },
{ RS(DELTA_HUGETBL), TS(s_int) },
{ RS(DELTA_HUGE_ANON), TS(s_int) },
{ RS(DELTA_HUGE_FREE), TS(s_int) },
{ RS(DELTA_HUGE_RSVD), TS(s_int) },
@ -345,10 +392,14 @@ static struct {
{ RS(DELTA_KERNEL_RECLAIM), TS(s_int) },
{ RS(DELTA_KERNEL_STACK), TS(s_int) },
{ RS(DELTA_LOCKED), TS(s_int) },
{ RS(DELTA_LOW_FREE), TS(s_int) },
{ RS(DELTA_LOW_TOTAL), TS(s_int) },
{ RS(DELTA_LOW_USED), TS(s_int) },
{ RS(DELTA_MAPPED), TS(s_int) },
{ RS(DELTA_MAP_COPY), TS(s_int) },
{ RS(DELTA_NFS_UNSTABLE), TS(s_int) },
{ RS(DELTA_PAGE_TABLES), TS(s_int) },
{ RS(DELTA_PER_CPU), TS(s_int) },
{ RS(DELTA_QUICKLISTS), TS(s_int) },
{ RS(DELTA_SHARED), TS(s_int) },
{ RS(DELTA_SHMEM_HUGE), TS(s_int) },
@ -365,14 +416,6 @@ static struct {
{ RS(DELTA_WRITEBACK), TS(s_int) },
{ RS(DELTA_WRITEBACK_TMP), TS(s_int) },
{ RS(MEMHI_FREE), TS(ul_int) },
{ RS(MEMHI_TOTAL), TS(ul_int) },
{ RS(MEMHI_USED), TS(ul_int) },
{ RS(MEMLO_FREE), TS(ul_int) },
{ RS(MEMLO_TOTAL), TS(ul_int) },
{ RS(MEMLO_USED), TS(ul_int) },
{ RS(SWAP_CACHED), TS(ul_int) },
{ RS(SWAP_FREE), TS(ul_int) },
{ RS(SWAP_TOTAL), TS(ul_int) },
@ -530,6 +573,7 @@ static int meminfo_make_hash_failed (
htVAL(Committed_AS)
htVAL(DirectMap1G)
htVAL(DirectMap2M)
htVAL(DirectMap4M)
htVAL(DirectMap4k)
htVAL(Dirty)
htVAL(HardwareCorrupted)
@ -540,6 +584,7 @@ static int meminfo_make_hash_failed (
htVAL(HugePages_Surp)
htVAL(HugePages_Total)
htVAL(Hugepagesize)
htVAL(Hugetlb)
htVAL(Inactive)
htXTRA(Inactive(anon), Inactive_anon)
htXTRA(Inactive(file), Inactive_file)
@ -548,13 +593,14 @@ static int meminfo_make_hash_failed (
htVAL(LowFree)
htVAL(LowTotal)
htVAL(Mapped)
htVAL(MmapCopy)
htVAL(MemAvailable)
htVAL(MemFree)
htVAL(MemTotal)
htVAL(Mlocked)
htVAL(MmapCopy)
htVAL(NFS_Unstable)
htVAL(PageTables)
htVAL(Percpu)
htVAL(Quicklists)
htVAL(SReclaimable)
htVAL(SUnreclaim)

View File

@ -39,12 +39,22 @@ enum meminfo_item {
MEMINFO_MEM_BOUNCE, // ul_int "
MEMINFO_MEM_BUFFERS, // ul_int "
MEMINFO_MEM_CACHED, // ul_int "
MEMINFO_MEM_CACHED_ALL, // ul_int "
MEMINFO_MEM_COMMIT_LIMIT, // ul_int "
MEMINFO_MEM_CACHED_ALL, // ul_int derived from MEM_CACHED + MEM_SLAB_RECLAIM
MEMINFO_MEM_CMA_FREE, // ul_int /proc/meminfo
MEMINFO_MEM_CMA_TOTAL, // ul_int "
MEMINFO_MEM_COMMITTED_AS, // ul_int "
MEMINFO_MEM_HARD_CORRUPTED, // ul_int "
MEMINFO_MEM_COMMIT_LIMIT, // ul_int "
MEMINFO_MEM_DIRECTMAP_1G, // ul_int "
MEMINFO_MEM_DIRECTMAP_2M, // ul_int "
MEMINFO_MEM_DIRECTMAP_4K, // ul_int "
MEMINFO_MEM_DIRECTMAP_4M, // ul_int "
MEMINFO_MEM_DIRTY, // ul_int "
MEMINFO_MEM_FREE, // ul_int "
MEMINFO_MEM_HARD_CORRUPTED, // ul_int "
MEMINFO_MEM_HIGH_FREE, // ul_int "
MEMINFO_MEM_HIGH_TOTAL, // ul_int "
MEMINFO_MEM_HIGH_USED, // ul_int derived from MEM_HIGH_TOTAL - MEM_HIGH_FREE
MEMINFO_MEM_HUGETBL, // ul_int /proc/meminfo
MEMINFO_MEM_HUGE_ANON, // ul_int "
MEMINFO_MEM_HUGE_FREE, // ul_int "
MEMINFO_MEM_HUGE_RSVD, // ul_int "
@ -57,10 +67,14 @@ enum meminfo_item {
MEMINFO_MEM_KERNEL_RECLAIM, // ul_int "
MEMINFO_MEM_KERNEL_STACK, // ul_int "
MEMINFO_MEM_LOCKED, // ul_int "
MEMINFO_MEM_MAPPED, // ul_int "
MEMINFO_MEM_LOW_FREE, // ul_int "
MEMINFO_MEM_LOW_TOTAL, // ul_int "
MEMINFO_MEM_LOW_USED, // ul_int derived from MEM_LOW_TOTAL - MEM_LOW_FREE
MEMINFO_MEM_MAPPED, // ul_int /proc/meminfo
MEMINFO_MEM_MAP_COPY, // ul_int "
MEMINFO_MEM_NFS_UNSTABLE, // ul_int "
MEMINFO_MEM_PAGE_TABLES, // ul_int "
MEMINFO_MEM_PER_CPU, // ul_int "
MEMINFO_MEM_QUICKLISTS, // ul_int "
MEMINFO_MEM_SHARED, // ul_int "
MEMINFO_MEM_SHMEM_HUGE, // ul_int "
@ -70,14 +84,14 @@ enum meminfo_item {
MEMINFO_MEM_SLAB_UNRECLAIM, // ul_int "
MEMINFO_MEM_TOTAL, // ul_int "
MEMINFO_MEM_UNEVICTABLE, // ul_int "
MEMINFO_MEM_USED, // ul_int "
MEMINFO_MEM_VM_ALLOC_CHUNK, // ul_int "
MEMINFO_MEM_USED, // ul_int derived from MEM_TOTAL - MEM_BUFFERS - MEM_CACHED_ALL - MEM_FREE
MEMINFO_MEM_VM_ALLOC_CHUNK, // ul_int /proc/meminfo
MEMINFO_MEM_VM_ALLOC_TOTAL, // ul_int "
MEMINFO_MEM_VM_ALLOC_USED, // ul_int "
MEMINFO_MEM_WRITEBACK, // ul_int "
MEMINFO_MEM_WRITEBACK_TMP, // ul_int "
MEMINFO_DELTA_ACTIVE, // s_int dervied from above
MEMINFO_DELTA_ACTIVE, // s_int derived from above
MEMINFO_DELTA_ACTIVE_ANON, // s_int "
MEMINFO_DELTA_ACTIVE_FILE, // s_int "
MEMINFO_DELTA_ANON, // s_int "
@ -86,11 +100,21 @@ enum meminfo_item {
MEMINFO_DELTA_BUFFERS, // s_int "
MEMINFO_DELTA_CACHED, // s_int "
MEMINFO_DELTA_CACHED_ALL, // s_int "
MEMINFO_DELTA_COMMIT_LIMIT, // s_int "
MEMINFO_DELTA_CMA_FREE, // s_int "
MEMINFO_DELTA_CMA_TOTAL, // s_int "
MEMINFO_DELTA_COMMITTED_AS, // s_int "
MEMINFO_DELTA_HARD_CORRUPTED, // s_int "
MEMINFO_DELTA_COMMIT_LIMIT, // s_int "
MEMINFO_DELTA_DIRECTMAP_1G, // s_int "
MEMINFO_DELTA_DIRECTMAP_2M, // s_int "
MEMINFO_DELTA_DIRECTMAP_4K, // s_int "
MEMINFO_DELTA_DIRECTMAP_4M, // s_int "
MEMINFO_DELTA_DIRTY, // s_int "
MEMINFO_DELTA_FREE, // s_int "
MEMINFO_DELTA_HARD_CORRUPTED, // s_int "
MEMINFO_DELTA_HIGH_FREE, // s_int "
MEMINFO_DELTA_HIGH_TOTAL, // s_int "
MEMINFO_DELTA_HIGH_USED, // s_int "
MEMINFO_DELTA_HUGETBL, // s_int "
MEMINFO_DELTA_HUGE_ANON, // s_int "
MEMINFO_DELTA_HUGE_FREE, // s_int "
MEMINFO_DELTA_HUGE_RSVD, // s_int "
@ -103,10 +127,14 @@ enum meminfo_item {
MEMINFO_DELTA_KERNEL_RECLAIM, // s_int "
MEMINFO_DELTA_KERNEL_STACK, // s_int "
MEMINFO_DELTA_LOCKED, // s_int "
MEMINFO_DELTA_LOW_FREE, // s_int "
MEMINFO_DELTA_LOW_TOTAL, // s_int "
MEMINFO_DELTA_LOW_USED, // s_int "
MEMINFO_DELTA_MAPPED, // s_int "
MEMINFO_DELTA_MAP_COPY, // s_int "
MEMINFO_DELTA_NFS_UNSTABLE, // s_int "
MEMINFO_DELTA_PAGE_TABLES, // s_int "
MEMINFO_DELTA_PER_CPU, // s_int "
MEMINFO_DELTA_QUICKLISTS, // s_int "
MEMINFO_DELTA_SHARED, // s_int "
MEMINFO_DELTA_SHMEM_HUGE, // s_int "
@ -123,20 +151,12 @@ enum meminfo_item {
MEMINFO_DELTA_WRITEBACK, // s_int "
MEMINFO_DELTA_WRITEBACK_TMP, // s_int "
MEMINFO_MEMHI_FREE, // ul_int /proc/meminfo
MEMINFO_MEMHI_TOTAL, // ul_int "
MEMINFO_MEMHI_USED, // ul_int "
MEMINFO_MEMLO_FREE, // ul_int "
MEMINFO_MEMLO_TOTAL, // ul_int "
MEMINFO_MEMLO_USED, // ul_int "
MEMINFO_SWAP_CACHED, // ul_int "
MEMINFO_SWAP_CACHED, // ul_int /proc/meminfo
MEMINFO_SWAP_FREE, // ul_int "
MEMINFO_SWAP_TOTAL, // ul_int "
MEMINFO_SWAP_USED, // ul_int "
MEMINFO_SWAP_USED, // ul_int derived from SWAP_TOTAL - SWAP_FREE
MEMINFO_SWAP_DELTA_CACHED, // s_int dervied from above
MEMINFO_SWAP_DELTA_CACHED, // s_int derived from above
MEMINFO_SWAP_DELTA_FREE, // s_int "
MEMINFO_SWAP_DELTA_TOTAL, // s_int "
MEMINFO_SWAP_DELTA_USED // s_int "

View File

@ -159,10 +159,10 @@ STR_set(EXE, exe)
REG_set(EXIT_SIGNAL, s_int, exit_signal)
REG_set(FLAGS, ul_int, flags)
REG_set(FLT_MAJ, ul_int, maj_flt)
REG_set(FLT_MAJ_C, ul_int, cmaj_flt)
setDECL(FLT_MAJ_C) { (void)I; R->result.ul_int = P->maj_flt + P->cmaj_flt; }
REG_set(FLT_MAJ_DELTA, s_int, maj_delta)
REG_set(FLT_MIN, ul_int, min_flt)
REG_set(FLT_MIN_C, ul_int, cmin_flt)
setDECL(FLT_MIN_C) { (void)I; R->result.ul_int = P->min_flt + P->cmin_flt; }
REG_set(FLT_MIN_DELTA, s_int, min_delta)
REG_set(ID_EGID, u_int, egid)
REG_set(ID_EGROUP, str, egroup)
@ -210,11 +210,11 @@ REG_set(NS_UTS, ul_int, ns.ns[5])
REG_set(OOM_ADJ, s_int, oom_adj)
REG_set(OOM_SCORE, s_int, oom_score)
REG_set(PRIORITY, s_int, priority)
REG_set(PRIORITY_RT, s_int, rtprio)
REG_set(PROCESSOR, u_int, processor)
setDECL(PROCESSOR_NODE) { (void)I; R->result.s_int = numa_node_of_cpu(P->processor); }
REG_set(RSS, ul_int, rss)
REG_set(RSS_RLIM, ul_int, rss_rlim)
REG_set(RTPRIO, s_int, rtprio)
REG_set(SCHED_CLASS, s_int, sched)
STR_set(SD_MACH, sd_mach)
STR_set(SD_OUID, sd_ouid)
@ -464,11 +464,11 @@ static struct {
{ RS(OOM_ADJ), f_oom, NULL, QS(s_int), 0, TS(s_int) },
{ RS(OOM_SCORE), f_oom, NULL, QS(s_int), 0, TS(s_int) },
{ RS(PRIORITY), f_stat, NULL, QS(s_int), 0, TS(s_int) },
{ RS(PRIORITY_RT), f_stat, NULL, QS(s_int), 0, TS(s_int) },
{ RS(PROCESSOR), f_stat, NULL, QS(u_int), 0, TS(u_int) },
{ RS(PROCESSOR_NODE), f_stat, NULL, QS(s_int), 0, TS(s_int) },
{ RS(RSS), f_stat, NULL, QS(ul_int), 0, TS(ul_int) },
{ RS(RSS_RLIM), f_stat, NULL, QS(ul_int), 0, TS(ul_int) },
{ RS(RTPRIO), f_stat, NULL, QS(s_int), 0, TS(s_int) },
{ RS(SCHED_CLASS), f_stat, NULL, QS(s_int), 0, TS(s_int) },
{ RS(SD_MACH), f_systemd, FF(str), QS(str), 0, TS(str) },
{ RS(SD_OUID), f_systemd, FF(str), QS(str), 0, TS(str) },

View File

@ -32,124 +32,124 @@ enum pids_item {
PIDS_extra, // ( reset to zero )
// returns origin, see proc(5)
// ------- -------------------
PIDS_ADDR_END_CODE, // ul_int stat
PIDS_ADDR_KSTK_EIP, // ul_int stat
PIDS_ADDR_KSTK_ESP, // ul_int stat
PIDS_ADDR_START_CODE, // ul_int stat
PIDS_ADDR_START_STACK, // ul_int stat
PIDS_CGNAME, // str cgroup
PIDS_ADDR_END_CODE, // ul_int stat: endcode
PIDS_ADDR_KSTK_EIP, // ul_int stat: kstkeip
PIDS_ADDR_KSTK_ESP, // ul_int stat: kstkesp
PIDS_ADDR_START_CODE, // ul_int stat: startcode
PIDS_ADDR_START_STACK, // ul_int stat: statstack
PIDS_CGNAME, // str [ derived from CGROUP ':name=' ]
PIDS_CGROUP, // str cgroup
PIDS_CGROUP_V, // strv cgroup
PIDS_CMD, // str stat or status
PIDS_CGROUP_V, // strv cgroup, as *str[]
PIDS_CMD, // str stat: comm or status: Name
PIDS_CMDLINE, // str cmdline
PIDS_CMDLINE_V, // strv cmdline
PIDS_CMDLINE_V, // strv cmdline, as *str[]
PIDS_ENVIRON, // str environ
PIDS_ENVIRON_V, // strv environ
PIDS_ENVIRON_V, // strv environ, as *str[]
PIDS_EXE, // str exe
PIDS_EXIT_SIGNAL, // s_int stat
PIDS_FLAGS, // ul_int stat
PIDS_FLT_MAJ, // ul_int stat
PIDS_FLT_MAJ_C, // ul_int stat
PIDS_FLT_MAJ_DELTA, // s_int stat
PIDS_FLT_MIN, // ul_int stat
PIDS_FLT_MIN_C, // ul_int stat
PIDS_FLT_MIN_DELTA, // s_int stat
PIDS_ID_EGID, // u_int status
PIDS_ID_EGROUP, // str [ EGID based, see: getgrgid(3) ]
PIDS_ID_EUID, // u_int status
PIDS_ID_EUSER, // str [ EUID based, see: getpwuid(3) ]
PIDS_ID_FGID, // u_int status
PIDS_ID_FGROUP, // str [ FGID based, see: getgrgid(3) ]
PIDS_ID_FUID, // u_int status
PIDS_ID_FUSER, // str [ FUID based, see: getpwuid(3) ]
PIDS_EXIT_SIGNAL, // s_int stat: exit_signal
PIDS_FLAGS, // ul_int stat: flags
PIDS_FLT_MAJ, // ul_int stat: majflt
PIDS_FLT_MAJ_C, // ul_int stat: majflt + cmajflt
PIDS_FLT_MAJ_DELTA, // s_int [ derived from FLT_MAJ ]
PIDS_FLT_MIN, // ul_int stat: minflt
PIDS_FLT_MIN_C, // ul_int stat: minflt + cminflt
PIDS_FLT_MIN_DELTA, // s_int [ derived from FLT_MIN ]
PIDS_ID_EGID, // u_int status: Uid
PIDS_ID_EGROUP, // str [ derived from EGID, see getgrgid(3) ]
PIDS_ID_EUID, // u_int status: Uid
PIDS_ID_EUSER, // str [ derived from EUID, see getpwuid(3) ]
PIDS_ID_FGID, // u_int status: Uid
PIDS_ID_FGROUP, // str [ derived from FGID, see getgrgid(3) ]
PIDS_ID_FUID, // u_int status: Uid
PIDS_ID_FUSER, // str [ derived from FUID, see getpwuid(3) ]
PIDS_ID_LOGIN, // s_int loginuid
PIDS_ID_PGRP, // s_int stat
PIDS_ID_PID, // s_int as: /proc/<pid>
PIDS_ID_PPID, // s_int stat or status
PIDS_ID_RGID, // u_int status
PIDS_ID_RGROUP, // str [ RGID based, see: getgrgid(3) ]
PIDS_ID_RUID, // u_int status
PIDS_ID_RUSER, // str [ RUID based, see: getpwuid(3) ]
PIDS_ID_SESSION, // s_int stat
PIDS_ID_SGID, // u_int status
PIDS_ID_SGROUP, // str [ SGID based, see: getgrgid(3) ]
PIDS_ID_SUID, // u_int status
PIDS_ID_SUSER, // str [ SUID based, see: getpwuid(3) ]
PIDS_ID_TGID, // s_int status
PIDS_ID_TID, // s_int as: /proc/<pid>/task/<tid>
PIDS_ID_TPGID, // s_int stat
PIDS_LXCNAME, // str cgroup
PIDS_MEM_CODE, // ul_int statm
PIDS_MEM_CODE_PGS, // ul_int statm
PIDS_MEM_DATA, // ul_int statm
PIDS_MEM_DATA_PGS, // ul_int statm
PIDS_MEM_RES, // ul_int statm
PIDS_MEM_RES_PGS, // ul_int statm
PIDS_MEM_SHR, // ul_int statm
PIDS_MEM_SHR_PGS, // ul_int statm
PIDS_MEM_VIRT, // ul_int statm
PIDS_MEM_VIRT_PGS, // ul_int statm
PIDS_NICE, // s_int stat
PIDS_NLWP, // s_int stat or status
PIDS_ID_PGRP, // s_int stat: pgrp
PIDS_ID_PID, // s_int from /proc/<pid>
PIDS_ID_PPID, // s_int stat: ppid or status: PPid
PIDS_ID_RGID, // u_int status: Gid
PIDS_ID_RGROUP, // str [ derived from RGID, see getgrgid(3) ]
PIDS_ID_RUID, // u_int status: Gid
PIDS_ID_RUSER, // str [ derived from RUID, see getpwuid(3) ]
PIDS_ID_SESSION, // s_int stat: session
PIDS_ID_SGID, // u_int status: Gid
PIDS_ID_SGROUP, // str [ derived from SGID, see getgrgid(3) ]
PIDS_ID_SUID, // u_int status: Gid
PIDS_ID_SUSER, // str [ derived from SUID, see getpwuid(3) ]
PIDS_ID_TGID, // s_int status: Tgid
PIDS_ID_TID, // s_int from /proc/<pid>/task/<tid>
PIDS_ID_TPGID, // s_int stat: tpgid
PIDS_LXCNAME, // str [ derived from CGROUP 'lxc.payload/' ]
PIDS_MEM_CODE, // ul_int [ derived from MEM_CODE_PGS, as KiB ]
PIDS_MEM_CODE_PGS, // ul_int statm: text
PIDS_MEM_DATA, // ul_int [ derived from MEM_DATA_PGS, as KiB ]
PIDS_MEM_DATA_PGS, // ul_int statm: data
PIDS_MEM_RES, // ul_int [ derived from MEM_RES_PGS, as KiB ]
PIDS_MEM_RES_PGS, // ul_int statm: resident
PIDS_MEM_SHR, // ul_int [ derived from MEM_SHR_PGS, as KiB ]
PIDS_MEM_SHR_PGS, // ul_int statm: shared
PIDS_MEM_VIRT, // ul_int [ derived from MEM_VIRT_PGS, as KiB ]
PIDS_MEM_VIRT_PGS, // ul_int statm: size
PIDS_NICE, // s_int stat: nice
PIDS_NLWP, // s_int stat: num_threads or status: Threads
PIDS_NS_IPC, // ul_int ns/
PIDS_NS_MNT, // ul_int ns/
PIDS_NS_NET, // ul_int ns/
PIDS_NS_PID, // ul_int ns/
PIDS_NS_USER, // ul_int ns/
PIDS_NS_UTS, // ul_int ns/
PIDS_NS_MNT, // ul_int "
PIDS_NS_NET, // ul_int "
PIDS_NS_PID, // ul_int "
PIDS_NS_USER, // ul_int "
PIDS_NS_UTS, // ul_int "
PIDS_OOM_ADJ, // s_int oom_score_adj
PIDS_OOM_SCORE, // s_int oom_score
PIDS_PRIORITY, // s_int stat
PIDS_PROCESSOR, // u_int stat
PIDS_PROCESSOR_NODE, // s_int stat
PIDS_RSS, // ul_int stat
PIDS_RSS_RLIM, // ul_int stat
PIDS_RTPRIO, // s_int stat
PIDS_SCHED_CLASS, // s_int stat
PIDS_SD_MACH, // str [ PID/TID based, see: sd-login(3) ]
PIDS_PRIORITY, // s_int stat: priority
PIDS_PRIORITY_RT, // s_int stat: rt_priority
PIDS_PROCESSOR, // u_int stat: processor
PIDS_PROCESSOR_NODE, // s_int [ derived from PROCESSOR, see numa(3) ]
PIDS_RSS, // ul_int stat: rss
PIDS_RSS_RLIM, // ul_int stat: rsslim
PIDS_SCHED_CLASS, // s_int stat: policy
PIDS_SD_MACH, // str [ derived from PID/TID, see sd-login(3) ]
PIDS_SD_OUID, // str "
PIDS_SD_SEAT, // str "
PIDS_SD_SESS, // str "
PIDS_SD_SLICE, // str "
PIDS_SD_UNIT, // str "
PIDS_SD_UUNIT, // str "
PIDS_SIGBLOCKED, // str status
PIDS_SIGCATCH, // str status
PIDS_SIGIGNORE, // str status
PIDS_SIGNALS, // str status
PIDS_SIGPENDING, // str status
PIDS_STATE, // s_ch stat or status
PIDS_SUPGIDS, // str status
PIDS_SUPGROUPS, // str [ SUPGIDS based, see: getgrgid(3) ]
PIDS_TICS_ALL, // ull_int stat
PIDS_TICS_ALL_C, // ull_int stat
PIDS_TICS_ALL_DELTA, // s_int stat
PIDS_TICS_BLKIO, // ull_int stat
PIDS_TICS_GUEST, // ull_int stat
PIDS_TICS_GUEST_C, // ull_int stat
PIDS_TICS_SYSTEM, // ull_int stat
PIDS_TICS_SYSTEM_C, // ull_int stat
PIDS_TICS_USER, // ull_int stat
PIDS_TICS_USER_C, // ull_int stat
PIDS_TIME_ALL, // ull_int stat
PIDS_TIME_ELAPSED, // ull_int stat
PIDS_TIME_START, // ull_int stat
PIDS_TTY, // s_int stat
PIDS_TTY_NAME, // str stat
PIDS_TTY_NUMBER, // str stat
PIDS_VM_DATA, // ul_int status
PIDS_VM_EXE, // ul_int status
PIDS_VM_LIB, // ul_int status
PIDS_VM_RSS, // ul_int status
PIDS_VM_RSS_ANON, // ul_int status
PIDS_VM_RSS_FILE, // ul_int status
PIDS_VM_RSS_LOCKED, // ul_int status
PIDS_VM_RSS_SHARED, // ul_int status
PIDS_VM_SIZE, // ul_int status
PIDS_VM_STACK, // ul_int status
PIDS_VM_SWAP, // ul_int status
PIDS_VM_USED, // ul_int status
PIDS_VSIZE_PGS, // ul_int stat
PIDS_SIGBLOCKED, // str status: SigBlk
PIDS_SIGCATCH, // str status: SigCgt
PIDS_SIGIGNORE, // str status: SigIgn
PIDS_SIGNALS, // str status: ShdPnd
PIDS_SIGPENDING, // str status: SigPnd
PIDS_STATE, // s_ch stat: state or status: State
PIDS_SUPGIDS, // str status: Groups
PIDS_SUPGROUPS, // str [ derived from SUPGIDS, see getgrgid(3) ]
PIDS_TICS_ALL, // ull_int stat: stime + utime
PIDS_TICS_ALL_C, // ull_int stat: stime + utime + cstime + cutime
PIDS_TICS_ALL_DELTA, // s_int [ derived from TICS_ALL ]
PIDS_TICS_BLKIO, // ull_int stat: delayacct_blkio_ticks
PIDS_TICS_GUEST, // ull_int stat: guest_time
PIDS_TICS_GUEST_C, // ull_int stat: guest_time + cguest_time
PIDS_TICS_SYSTEM, // ull_int stat: stime
PIDS_TICS_SYSTEM_C, // ull_int stat: stime + cstime
PIDS_TICS_USER, // ull_int stat: utime
PIDS_TICS_USER_C, // ull_int stat: utime + cutime
PIDS_TIME_ALL, // ull_int [ derived from (utime + stime) / hertz ]
PIDS_TIME_ELAPSED, // ull_int [ derived from /proc/uptime - (starttime / hertz) }
PIDS_TIME_START, // ull_int stat: starttime
PIDS_TTY, // s_int stat: tty_nr
PIDS_TTY_NAME, // str [ derived from TTY ]
PIDS_TTY_NUMBER, // str [ derived from TTY as str ]
PIDS_VM_DATA, // ul_int status: VmData
PIDS_VM_EXE, // ul_int status: VmExe
PIDS_VM_LIB, // ul_int status: VmLib
PIDS_VM_RSS, // ul_int status: VmRSS
PIDS_VM_RSS_ANON, // ul_int status: RssAnon
PIDS_VM_RSS_FILE, // ul_int status: RssFile
PIDS_VM_RSS_LOCKED, // ul_int status: VmLck
PIDS_VM_RSS_SHARED, // ul_int status: RssShmem
PIDS_VM_SIZE, // ul_int status: VmSize
PIDS_VM_STACK, // ul_int status: VmStk
PIDS_VM_SWAP, // ul_int status: VmSwap
PIDS_VM_USED, // ul_int status: VmRSS + VmSwap
PIDS_VSIZE_PGS, // ul_int stat: vsize
PIDS_WCHAN_NAME // str wchan
};

View File

@ -52,11 +52,11 @@
would be forced to duplicate global slabs stuff in every node results stack, |
the following #define can be used to enforce strictly logical return values. |
select: allow only SLABINFO & SLABS items
reap: allow only SLABINFO & SLABNODE items
reap: allow only SLABINFO & SLAB items
Without the #define, these functions always return something even if just 0. |
get: return only SLABS results, else 0
select: return only SLABINFO & SLABS results, else zero
reap: return any requested, even when duplicated in each node's stack */
reap: return any requested, even when duplicated in each cache's stack */
//#define ENFORCE_LOGICAL // ensure only logical items accepted by select/reap
@ -148,43 +148,43 @@ struct slabinfo_info {
setDECL(noop) { (void)R; (void)S; (void)N; }
setDECL(extra) { (void)R; (void)S; (void)N; }
REG_set(SLABS_OBJS, u_int, nr_objs)
REG_set(SLABS_AOBJS, u_int, nr_active_objs)
REG_set(SLABS_PAGES, u_int, nr_pages)
REG_set(SLABS_SLABS, u_int, nr_slabs)
REG_set(SLABS_ASLABS, u_int, nr_active_slabs)
REG_set(SLABS_CACHES, u_int, nr_caches)
REG_set(SLABS_ACACHES, u_int, nr_active_caches)
REG_set(SLABS_SIZE_AVG, u_int, avg_obj_size)
REG_set(SLABS_SIZE_MIN, u_int, min_obj_size)
REG_set(SLABS_SIZE_MAX, u_int, max_obj_size)
NOD_set(SLAB_NAME, str, name)
NOD_set(SLAB_NUM_OBJS, u_int, nr_objs)
NOD_set(SLAB_ACTIVE_OBJS, u_int, nr_active_objs)
NOD_set(SLAB_OBJ_SIZE, u_int, obj_size)
NOD_set(SLAB_OBJ_PER_SLAB, u_int, objs_per_slab)
NOD_set(SLAB_NUMS_SLABS, u_int, nr_slabs)
NOD_set(SLAB_ACTIVE_SLABS, u_int, nr_active_slabs)
NOD_set(SLAB_PAGES_PER_SLAB, u_int, pages_per_slab)
NOD_set(SLAB_PERCENT_USED, u_int, use)
NOD_set(SLAB_SIZE_TOTAL, ul_int, cache_size)
REG_set(SLABS_CACHES_TOTAL, u_int, nr_caches)
REG_set(SLABS_CACHES_ACTIVE, u_int, nr_active_caches)
REG_set(SLABS_NUM_OBJS, u_int, nr_objs)
REG_set(SLABS_ACTIVE_OBJS, u_int, nr_active_objs)
REG_set(SLABS_OBJ_SIZE_AVG, u_int, avg_obj_size)
REG_set(SLABS_OBJ_SIZE_MIN, u_int, min_obj_size)
REG_set(SLABS_OBJ_SIZE_MAX, u_int, max_obj_size)
REG_set(SLABS_NUMS_SLABS, u_int, nr_slabs)
REG_set(SLABS_ACTIVE_SLABS, u_int, nr_active_slabs)
REG_set(SLABS_PAGES_TOTAL, u_int, nr_pages)
REG_set(SLABS_SIZE_ACTIVE, ul_int, active_size)
REG_set(SLABS_SIZE_TOTAL, ul_int, total_size)
HST_set(SLABS_DELTA_OBJS, s_int, nr_objs)
HST_set(SLABS_DELTA_AOBJS, s_int, nr_active_objs)
HST_set(SLABS_DELTA_PAGES, s_int, nr_pages)
HST_set(SLABS_DELTA_SLABS, s_int, nr_slabs)
HST_set(SLABS_DELTA_ASLABS, s_int, nr_active_slabs)
HST_set(SLABS_DELTA_CACHES, s_int, nr_caches)
HST_set(SLABS_DELTA_ACACHES, s_int, nr_active_caches)
HST_set(SLABS_DELTA_SIZE_AVG, s_int, avg_obj_size)
HST_set(SLABS_DELTA_SIZE_MIN, s_int, min_obj_size)
HST_set(SLABS_DELTA_SIZE_MAX, s_int, max_obj_size)
HST_set(SLABS_DELTA_CACHES_TOTAL, s_int, nr_caches)
HST_set(SLABS_DELTA_CACHES_ACTIVE, s_int, nr_active_caches)
HST_set(SLABS_DELTA_NUM_OBJS, s_int, nr_objs)
HST_set(SLABS_DELTA_ACTIVE_OBJS, s_int, nr_active_objs)
HST_set(SLABS_DELTA_OBJ_SIZE_AVG, s_int, avg_obj_size)
HST_set(SLABS_DELTA_OBJ_SIZE_MIN, s_int, min_obj_size)
HST_set(SLABS_DELTA_OBJ_SIZE_MAX, s_int, max_obj_size)
HST_set(SLABS_DELTA_NUMS_SLABS, s_int, nr_slabs)
HST_set(SLABS_DELTA_ACTIVE_SLABS, s_int, nr_active_slabs)
HST_set(SLABS_DELTA_PAGES_TOTAL, s_int, nr_pages)
HST_set(SLABS_DELTA_SIZE_ACTIVE, s_int, active_size)
HST_set(SLABS_DELTA_SIZE_TOTAL, s_int, total_size)
NOD_set(SLABNODE_NAME, str, name)
NOD_set(SLABNODE_OBJS, u_int, nr_objs)
NOD_set(SLABNODE_AOBJS, u_int, nr_active_objs)
NOD_set(SLABNODE_OBJ_SIZE, u_int, obj_size)
NOD_set(SLABNODE_OBJS_PER_SLAB, u_int, objs_per_slab)
NOD_set(SLABNODE_PAGES_PER_SLAB, u_int, pages_per_slab)
NOD_set(SLABNODE_SLABS, u_int, nr_slabs)
NOD_set(SLABNODE_ASLABS, u_int, nr_active_slabs)
NOD_set(SLABNODE_USE, u_int, use)
NOD_set(SLABNODE_SIZE, ul_int, cache_size)
#undef setDECL
#undef REG_set
#undef NOD_set
@ -253,54 +253,54 @@ static struct {
char *type2str; // the result type as a string value
} Item_table[] = {
/* setsfunc sortfunc type2str
---------------------------- ----------- ---------- */
------------------------------ ----------- ---------- */
{ RS(noop), QS(noop), TS_noop },
{ RS(extra), QS(ul_int), TS_noop },
{ RS(SLABS_OBJS), QS(noop), TS(u_int) },
{ RS(SLABS_AOBJS), QS(noop), TS(u_int) },
{ RS(SLABS_PAGES), QS(noop), TS(u_int) },
{ RS(SLABS_SLABS), QS(noop), TS(u_int) },
{ RS(SLABS_ASLABS), QS(noop), TS(u_int) },
{ RS(SLABS_CACHES), QS(noop), TS(u_int) },
{ RS(SLABS_ACACHES), QS(noop), TS(u_int) },
{ RS(SLABS_SIZE_AVG), QS(noop), TS(u_int) },
{ RS(SLABS_SIZE_MIN), QS(noop), TS(u_int) },
{ RS(SLABS_SIZE_MAX), QS(noop), TS(u_int) },
{ RS(SLAB_NAME), QS(str), TS(str) },
{ RS(SLAB_NUM_OBJS), QS(u_int), TS(u_int) },
{ RS(SLAB_ACTIVE_OBJS), QS(u_int), TS(u_int) },
{ RS(SLAB_OBJ_SIZE), QS(u_int), TS(u_int) },
{ RS(SLAB_OBJ_PER_SLAB), QS(u_int), TS(u_int) },
{ RS(SLAB_NUMS_SLABS), QS(u_int), TS(u_int) },
{ RS(SLAB_ACTIVE_SLABS), QS(u_int), TS(u_int) },
{ RS(SLAB_PAGES_PER_SLAB), QS(u_int), TS(u_int) },
{ RS(SLAB_PERCENT_USED), QS(u_int), TS(u_int) },
{ RS(SLAB_SIZE_TOTAL), QS(ul_int), TS(ul_int) },
{ RS(SLABS_CACHES_TOTAL), QS(noop), TS(u_int) },
{ RS(SLABS_CACHES_ACTIVE), QS(noop), TS(u_int) },
{ RS(SLABS_NUM_OBJS), QS(noop), TS(u_int) },
{ RS(SLABS_ACTIVE_OBJS), QS(noop), TS(u_int) },
{ RS(SLABS_OBJ_SIZE_AVG), QS(noop), TS(u_int) },
{ RS(SLABS_OBJ_SIZE_MIN), QS(noop), TS(u_int) },
{ RS(SLABS_OBJ_SIZE_MAX), QS(noop), TS(u_int) },
{ RS(SLABS_NUMS_SLABS), QS(noop), TS(u_int) },
{ RS(SLABS_ACTIVE_SLABS), QS(noop), TS(u_int) },
{ RS(SLABS_PAGES_TOTAL), QS(noop), TS(u_int) },
{ RS(SLABS_SIZE_ACTIVE), QS(noop), TS(ul_int) },
{ RS(SLABS_SIZE_TOTAL), QS(noop), TS(ul_int) },
{ RS(SLABS_DELTA_OBJS), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_AOBJS), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_PAGES), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_SLABS), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_ASLABS), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_CACHES), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_ACACHES), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_SIZE_AVG), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_SIZE_MIN), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_SIZE_MAX), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_CACHES_TOTAL), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_CACHES_ACTIVE), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_NUM_OBJS), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_ACTIVE_OBJS), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_OBJ_SIZE_AVG), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_OBJ_SIZE_MIN), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_OBJ_SIZE_MAX), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_NUMS_SLABS), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_ACTIVE_SLABS), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_PAGES_TOTAL), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_SIZE_ACTIVE), QS(noop), TS(s_int) },
{ RS(SLABS_DELTA_SIZE_TOTAL), QS(noop), TS(s_int) },
{ RS(SLABNODE_NAME), QS(str), TS(str) },
{ RS(SLABNODE_OBJS), QS(u_int), TS(u_int) },
{ RS(SLABNODE_AOBJS), QS(u_int), TS(u_int) },
{ RS(SLABNODE_OBJ_SIZE), QS(u_int), TS(u_int) },
{ RS(SLABNODE_OBJS_PER_SLAB), QS(u_int), TS(u_int) },
{ RS(SLABNODE_PAGES_PER_SLAB), QS(u_int), TS(u_int) },
{ RS(SLABNODE_SLABS), QS(u_int), TS(u_int) },
{ RS(SLABNODE_ASLABS), QS(u_int), TS(u_int) },
{ RS(SLABNODE_USE), QS(u_int), TS(u_int) },
{ RS(SLABNODE_SIZE), QS(ul_int), TS(ul_int) },
// dummy entry corresponding to SLABINFO_logical_end ...
{ NULL, NULL, NULL }
};
/* please note,
* this enum MUST be 1 greater than the highest value of any enum */
enum slabinfo_item SLABINFO_logical_end = SLABNODE_SIZE + 1;
enum slabinfo_item SLABINFO_logical_end = SLABS_DELTA_SIZE_TOTAL + 1;
#undef setNAME
#undef srtNAME
@ -786,10 +786,10 @@ PROCPS_EXPORT int procps_slabinfo_new (
return -ENOMEM;
#ifdef ENFORCE_LOGICAL
p->select_ext.lowest = SLABS_OBJS;
p->select_ext.lowest = SLABS_CACHES_TOTAL;
p->select_ext.highest = SLABS_DELTA_SIZE_TOTAL;
p->fetch_ext.lowest = SLABNODE_NAME;
p->fetch_ext.highest = SLABNODE_SIZE;
p->fetch_ext.lowest = SLAB_NAME;
p->fetch_ext.highest = SLAB_SIZE_TOTAL;
#endif
p->refcount = 1;
@ -897,7 +897,7 @@ PROCPS_EXPORT struct slabinfo_result *procps_slabinfo_get (
/* procps_slabinfo_reap():
*
* Harvest all the requested SLABNODE (individual nodes) information
* Harvest all the requested SLAB (individual nodes) information
* providing the result stacks along with the total number of nodes.
*
* Returns: pointer to a slabinfo_reap struct on success, NULL on error.

View File

@ -32,42 +32,42 @@ enum slabinfo_item {
SLABINFO_extra, // ( reset to zero )
// returns origin, see proc(5)
// ------- -------------------
SLABS_OBJS, // u_int /proc/slabinfo
SLABS_AOBJS, // u_int "
SLABS_PAGES, // u_int "
SLABS_SLABS, // u_int "
SLABS_ASLABS, // u_int "
SLABS_CACHES, // u_int "
SLABS_ACACHES, // u_int "
SLABS_SIZE_AVG, // u_int "
SLABS_SIZE_MIN, // u_int "
SLABS_SIZE_MAX, // u_int "
SLAB_NAME, // str /proc/slabinfo
SLAB_NUM_OBJS, // u_int "
SLAB_ACTIVE_OBJS, // u_int "
SLAB_OBJ_SIZE, // u_int "
SLAB_OBJ_PER_SLAB, // u_int "
SLAB_NUMS_SLABS, // u_int "
SLAB_ACTIVE_SLABS, // u_int "
SLAB_PAGES_PER_SLAB, // u_int "
SLAB_PERCENT_USED, // u_int derived from ACTIVE_OBJS / NUM_OBJS
SLAB_SIZE_TOTAL, // ul_int derived from page size * NUM_OBJS * PAGES_PER_SLAB
SLABS_CACHES_TOTAL, // u_int derived from all caches
SLABS_CACHES_ACTIVE, // u_int "
SLABS_NUM_OBJS, // u_int "
SLABS_ACTIVE_OBJS, // u_int "
SLABS_OBJ_SIZE_AVG, // u_int "
SLABS_OBJ_SIZE_MIN, // u_int "
SLABS_OBJ_SIZE_MAX, // u_int "
SLABS_NUMS_SLABS, // u_int "
SLABS_ACTIVE_SLABS, // u_int "
SLABS_PAGES_TOTAL, // u_int "
SLABS_SIZE_ACTIVE, // ul_int "
SLABS_SIZE_TOTAL, // ul_int "
SLABS_DELTA_OBJS, // s_int dervied from above
SLABS_DELTA_AOBJS, // s_int "
SLABS_DELTA_PAGES, // s_int "
SLABS_DELTA_SLABS, // s_int "
SLABS_DELTA_ASLABS, // s_int "
SLABS_DELTA_CACHES, // s_int "
SLABS_DELTA_ACACHES, // s_int "
SLABS_DELTA_SIZE_AVG, // s_int "
SLABS_DELTA_SIZE_MIN, // s_int "
SLABS_DELTA_SIZE_MAX, // s_int "
SLABS_DELTA_CACHES_TOTAL, // s_int derived from above
SLABS_DELTA_CACHES_ACTIVE, // s_int "
SLABS_DELTA_NUM_OBJS, // s_int "
SLABS_DELTA_ACTIVE_OBJS, // s_int "
SLABS_DELTA_OBJ_SIZE_AVG, // s_int "
SLABS_DELTA_OBJ_SIZE_MIN, // s_int "
SLABS_DELTA_OBJ_SIZE_MAX, // s_int "
SLABS_DELTA_NUMS_SLABS, // s_int "
SLABS_DELTA_ACTIVE_SLABS, // s_int "
SLABS_DELTA_PAGES_TOTAL, // s_int "
SLABS_DELTA_SIZE_ACTIVE, // s_int "
SLABS_DELTA_SIZE_TOTAL, // s_int "
SLABNODE_NAME, // str /proc/slabinfo
SLABNODE_OBJS, // u_int "
SLABNODE_AOBJS, // u_int "
SLABNODE_OBJ_SIZE, // u_int "
SLABNODE_OBJS_PER_SLAB, // u_int "
SLABNODE_PAGES_PER_SLAB, // u_int "
SLABNODE_SLABS, // u_int "
SLABNODE_ASLABS, // u_int "
SLABNODE_USE, // u_int "
SLABNODE_SIZE // ul_int "
SLABS_DELTA_SIZE_TOTAL // s_int "
};
enum slabinfo_sort_order {

View File

@ -43,7 +43,7 @@ enum stat_item {
STAT_TIC_GUEST, // ull_int "
STAT_TIC_GUEST_NICE, // ull_int "
STAT_TIC_DELTA_USER, // sl_int dervied from above
STAT_TIC_DELTA_USER, // sl_int derived from above
STAT_TIC_DELTA_NICE, // sl_int "
STAT_TIC_DELTA_SYSTEM, // sl_int "
STAT_TIC_DELTA_IDLE, // sl_int "
@ -60,7 +60,7 @@ enum stat_item {
STAT_TIC_SUM_BUSY, // ull_int derived from SUM_TOTAL - SUM_IDLE tics
STAT_TIC_SUM_SYSTEM, // ull_int derived from SUM_BUSY - SUM_USER tics
STAT_TIC_SUM_DELTA_TOTAL, // sl_int dervied from above
STAT_TIC_SUM_DELTA_TOTAL, // sl_int derived from above
STAT_TIC_SUM_DELTA_IDLE, // sl_int "
STAT_TIC_SUM_DELTA_USER, // sl_int "
STAT_TIC_SUM_DELTA_BUSY, // sl_int "
@ -73,7 +73,7 @@ enum stat_item {
STAT_SYS_PROC_RUNNING, // ul_int "
STAT_SYS_TIME_OF_BOOT, // ul_int "
STAT_SYS_DELTA_CTX_SWITCHES, // s_int dervied from above
STAT_SYS_DELTA_CTX_SWITCHES, // s_int derived from above
STAT_SYS_DELTA_INTERRUPTS, // s_int "
STAT_SYS_DELTA_PROC_BLOCKED, // s_int "
STAT_SYS_DELTA_PROC_CREATED, // s_int "

View File

@ -48,10 +48,17 @@
* http://www.spinics.net/lists/linux-man/msg09096.html
*/
struct vmstat_data {
unsigned long allocstall;
unsigned long allocstall_dma;
unsigned long allocstall_dma32;
unsigned long allocstall_high;
unsigned long allocstall_movable;
unsigned long allocstall_normal;
unsigned long balloon_deflate;
unsigned long balloon_inflate;
unsigned long balloon_migrate;
unsigned long compact_daemon_free_scanned;
unsigned long compact_daemon_migrate_scanned;
unsigned long compact_daemon_wake;
unsigned long compact_fail;
unsigned long compact_free_scanned;
unsigned long compact_isolated;
@ -67,7 +74,6 @@ struct vmstat_data {
unsigned long kswapd_low_wmark_hit_quickly;
unsigned long nr_active_anon;
unsigned long nr_active_file;
unsigned long nr_alloc_batch;
unsigned long nr_anon_pages;
unsigned long nr_anon_transparent_hugepages;
unsigned long nr_bounce;
@ -82,12 +88,14 @@ struct vmstat_data {
unsigned long nr_inactive_file;
unsigned long nr_isolated_anon;
unsigned long nr_isolated_file;
unsigned long nr_kernel_misc_reclaimable;
unsigned long nr_kernel_stack;
unsigned long nr_mapped;
unsigned long nr_mlock;
unsigned long nr_pages_scanned; // note: alphabetic WHEN capitalized (as w/ enum)
unsigned long nr_page_table_pages; // note: alphabetic WHEN capitalized (as w/ enum)
unsigned long nr_page_table_pages;
unsigned long nr_shmem;
unsigned long nr_shmem_hugepages;
unsigned long nr_shmem_pmdmapped;
unsigned long nr_slab_reclaimable;
unsigned long nr_slab_unreclaimable;
unsigned long nr_unevictable;
@ -97,6 +105,13 @@ struct vmstat_data {
unsigned long nr_writeback;
unsigned long nr_writeback_temp;
unsigned long nr_written;
unsigned long nr_zone_active_anon;
unsigned long nr_zone_active_file;
unsigned long nr_zone_inactive_anon;
unsigned long nr_zone_inactive_file;
unsigned long nr_zone_unevictable;
unsigned long nr_zone_write_pending;
unsigned long nr_zspages;
unsigned long numa_foreign;
unsigned long numa_hint_faults;
unsigned long numa_hint_faults_local;
@ -108,51 +123,55 @@ struct vmstat_data {
unsigned long numa_other;
unsigned long numa_pages_migrated;
unsigned long numa_pte_updates;
unsigned long oom_kill;
unsigned long pageoutrun;
unsigned long pgactivate;
unsigned long pgalloc_dma;
unsigned long pgalloc_dma32;
unsigned long pgalloc_high;
unsigned long pgalloc_movable;
unsigned long pgalloc_normal;
unsigned long pgdeactivate;
unsigned long pgfault;
unsigned long pgfree;
unsigned long pginodesteal;
unsigned long pglazyfree;
unsigned long pglazyfreed;
unsigned long pgmajfault;
unsigned long pgmigrate_fail;
unsigned long pgmigrate_success;
unsigned long pgpgin;
unsigned long pgpgout;
unsigned long pgrefill_dma;
unsigned long pgrefill_dma32;
unsigned long pgrefill_movable;
unsigned long pgrefill_normal;
unsigned long pgrefill;
unsigned long pgrotated;
unsigned long pgscan_direct_dma;
unsigned long pgscan_direct_dma32;
unsigned long pgscan_direct_movable;
unsigned long pgscan_direct_normal;
unsigned long pgscan_direct;
unsigned long pgscan_direct_throttle;
unsigned long pgscan_kswapd_dma;
unsigned long pgscan_kswapd_dma32;
unsigned long pgscan_kswapd_movable;
unsigned long pgscan_kswapd_normal;
unsigned long pgsteal_direct_dma;
unsigned long pgsteal_direct_dma32;
unsigned long pgsteal_direct_movable;
unsigned long pgsteal_direct_normal;
unsigned long pgsteal_kswapd_dma;
unsigned long pgsteal_kswapd_dma32;
unsigned long pgsteal_kswapd_movable;
unsigned long pgsteal_kswapd_normal;
unsigned long pgscan_kswapd;
unsigned long pgskip_dma;
unsigned long pgskip_dma32;
unsigned long pgskip_high;
unsigned long pgskip_movable;
unsigned long pgskip_normal;
unsigned long pgsteal_direct;
unsigned long pgsteal_kswapd;
unsigned long pswpin;
unsigned long pswpout;
unsigned long slabs_scanned;
unsigned long swap_ra;
unsigned long swap_ra_hit;
unsigned long thp_collapse_alloc;
unsigned long thp_collapse_alloc_failed;
unsigned long thp_deferred_split_page;
unsigned long thp_fault_alloc;
unsigned long thp_fault_fallback;
unsigned long thp_split;
unsigned long thp_file_alloc;
unsigned long thp_file_mapped;
unsigned long thp_split_page;
unsigned long thp_split_page_failed;
unsigned long thp_split_pmd;
unsigned long thp_split_pud;
unsigned long thp_swpout;
unsigned long thp_swpout_fallback;
unsigned long thp_zero_page_alloc;
unsigned long thp_zero_page_alloc_failed;
unsigned long unevictable_pgs_cleared;
@ -164,7 +183,9 @@ struct vmstat_data {
unsigned long unevictable_pgs_stranded;
unsigned long workingset_activate;
unsigned long workingset_nodereclaim;
unsigned long workingset_nodes;
unsigned long workingset_refault;
unsigned long workingset_restore;
unsigned long zone_reclaim_failed;
};
@ -206,10 +227,17 @@ struct vmstat_info {
setDECL(noop) { (void)R; (void)H; }
setDECL(extra) { (void)R; (void)H; }
REG_set(ALLOCSTALL, allocstall)
REG_set(ALLOCSTALL_DMA, allocstall_dma)
REG_set(ALLOCSTALL_DMA32, allocstall_dma32)
REG_set(ALLOCSTALL_HIGH, allocstall_high)
REG_set(ALLOCSTALL_MOVABLE, allocstall_movable)
REG_set(ALLOCSTALL_NORMAL, allocstall_normal)
REG_set(BALLOON_DEFLATE, balloon_deflate)
REG_set(BALLOON_INFLATE, balloon_inflate)
REG_set(BALLOON_MIGRATE, balloon_migrate)
REG_set(COMPACT_DAEMON_FREE_SCANNED, compact_daemon_free_scanned)
REG_set(COMPACT_DAEMON_MIGRATE_SCANNED, compact_daemon_migrate_scanned)
REG_set(COMPACT_DAEMON_WAKE, compact_daemon_wake)
REG_set(COMPACT_FAIL, compact_fail)
REG_set(COMPACT_FREE_SCANNED, compact_free_scanned)
REG_set(COMPACT_ISOLATED, compact_isolated)
@ -225,7 +253,6 @@ REG_set(KSWAPD_INODESTEAL, kswapd_inodesteal)
REG_set(KSWAPD_LOW_WMARK_HIT_QUICKLY, kswapd_low_wmark_hit_quickly)
REG_set(NR_ACTIVE_ANON, nr_active_anon)
REG_set(NR_ACTIVE_FILE, nr_active_file)
REG_set(NR_ALLOC_BATCH, nr_alloc_batch)
REG_set(NR_ANON_PAGES, nr_anon_pages)
REG_set(NR_ANON_TRANSPARENT_HUGEPAGES, nr_anon_transparent_hugepages)
REG_set(NR_BOUNCE, nr_bounce)
@ -240,12 +267,14 @@ REG_set(NR_INACTIVE_ANON, nr_inactive_anon)
REG_set(NR_INACTIVE_FILE, nr_inactive_file)
REG_set(NR_ISOLATED_ANON, nr_isolated_anon)
REG_set(NR_ISOLATED_FILE, nr_isolated_file)
REG_set(NR_KERNEL_MISC_RECLAIMABLE, nr_kernel_misc_reclaimable)
REG_set(NR_KERNEL_STACK, nr_kernel_stack)
REG_set(NR_MAPPED, nr_mapped)
REG_set(NR_MLOCK, nr_mlock)
REG_set(NR_PAGES_SCANNED, nr_pages_scanned)
REG_set(NR_PAGE_TABLE_PAGES, nr_page_table_pages)
REG_set(NR_SHMEM, nr_shmem)
REG_set(NR_SHMEM_HUGEPAGES, nr_shmem_hugepages)
REG_set(NR_SHMEM_PMDMAPPED, nr_shmem_pmdmapped)
REG_set(NR_SLAB_RECLAIMABLE, nr_slab_reclaimable)
REG_set(NR_SLAB_UNRECLAIMABLE, nr_slab_unreclaimable)
REG_set(NR_UNEVICTABLE, nr_unevictable)
@ -255,6 +284,13 @@ REG_set(NR_VMSCAN_WRITE, nr_vmscan_write)
REG_set(NR_WRITEBACK, nr_writeback)
REG_set(NR_WRITEBACK_TEMP, nr_writeback_temp)
REG_set(NR_WRITTEN, nr_written)
REG_set(NR_ZONE_ACTIVE_ANON, nr_zone_active_anon)
REG_set(NR_ZONE_ACTIVE_FILE, nr_zone_active_file)
REG_set(NR_ZONE_INACTIVE_ANON, nr_zone_inactive_anon)
REG_set(NR_ZONE_INACTIVE_FILE, nr_zone_inactive_file)
REG_set(NR_ZONE_UNEVICTABLE, nr_zone_unevictable)
REG_set(NR_ZONE_WRITE_PENDING, nr_zone_write_pending)
REG_set(NR_ZSPAGES, nr_zspages)
REG_set(NUMA_FOREIGN, numa_foreign)
REG_set(NUMA_HINT_FAULTS, numa_hint_faults)
REG_set(NUMA_HINT_FAULTS_LOCAL, numa_hint_faults_local)
@ -266,51 +302,55 @@ REG_set(NUMA_MISS, numa_miss)
REG_set(NUMA_OTHER, numa_other)
REG_set(NUMA_PAGES_MIGRATED, numa_pages_migrated)
REG_set(NUMA_PTE_UPDATES, numa_pte_updates)
REG_set(OOM_KILL, oom_kill)
REG_set(PAGEOUTRUN, pageoutrun)
REG_set(PGACTIVATE, pgactivate)
REG_set(PGALLOC_DMA, pgalloc_dma)
REG_set(PGALLOC_DMA32, pgalloc_dma32)
REG_set(PGALLOC_HIGH, pgalloc_high)
REG_set(PGALLOC_MOVABLE, pgalloc_movable)
REG_set(PGALLOC_NORMAL, pgalloc_normal)
REG_set(PGDEACTIVATE, pgdeactivate)
REG_set(PGFAULT, pgfault)
REG_set(PGFREE, pgfree)
REG_set(PGINODESTEAL, pginodesteal)
REG_set(PGLAZYFREE, pglazyfree)
REG_set(PGLAZYFREED, pglazyfreed)
REG_set(PGMAJFAULT, pgmajfault)
REG_set(PGMIGRATE_FAIL, pgmigrate_fail)
REG_set(PGMIGRATE_SUCCESS, pgmigrate_success)
REG_set(PGPGIN, pgpgin)
REG_set(PGPGOUT, pgpgout)
REG_set(PGREFILL_DMA, pgrefill_dma)
REG_set(PGREFILL_DMA32, pgrefill_dma32)
REG_set(PGREFILL_MOVABLE, pgrefill_movable)
REG_set(PGREFILL_NORMAL, pgrefill_normal)
REG_set(PGREFILL, pgrefill)
REG_set(PGROTATED, pgrotated)
REG_set(PGSCAN_DIRECT_DMA, pgscan_direct_dma)
REG_set(PGSCAN_DIRECT_DMA32, pgscan_direct_dma32)
REG_set(PGSCAN_DIRECT_MOVABLE, pgscan_direct_movable)
REG_set(PGSCAN_DIRECT_NORMAL, pgscan_direct_normal)
REG_set(PGSCAN_DIRECT, pgscan_direct)
REG_set(PGSCAN_DIRECT_THROTTLE, pgscan_direct_throttle)
REG_set(PGSCAN_KSWAPD_DMA, pgscan_kswapd_dma)
REG_set(PGSCAN_KSWAPD_DMA32, pgscan_kswapd_dma32)
REG_set(PGSCAN_KSWAPD_MOVEABLE, pgscan_kswapd_movable)
REG_set(PGSCAN_KSWAPD_NORMAL, pgscan_kswapd_normal)
REG_set(PGSTEAL_DIRECT_DMA, pgsteal_direct_dma)
REG_set(PGSTEAL_DIRECT_DMA32, pgsteal_direct_dma32)
REG_set(PGSTEAL_DIRECT_MOVABLE, pgsteal_direct_movable)
REG_set(PGSTEAL_DIRECT_NORMAL, pgsteal_direct_normal)
REG_set(PGSTEAL_KSWAPD_DMA, pgsteal_kswapd_dma)
REG_set(PGSTEAL_KSWAPD_DMA32, pgsteal_kswapd_dma32)
REG_set(PGSTEAL_KSWAPD_MOVABLE, pgsteal_kswapd_movable)
REG_set(PGSTEAL_KSWAPD_NORMAL, pgsteal_kswapd_normal)
REG_set(PGSCAN_KSWAPD, pgscan_kswapd)
REG_set(PGSKIP_DMA, pgskip_dma)
REG_set(PGSKIP_DMA32, pgskip_dma32)
REG_set(PGSKIP_HIGH, pgskip_high)
REG_set(PGSKIP_MOVABLE, pgskip_movable)
REG_set(PGSKIP_NORMAL, pgskip_normal)
REG_set(PGSTEAL_DIRECT, pgsteal_direct)
REG_set(PGSTEAL_KSWAPD, pgsteal_kswapd)
REG_set(PSWPIN, pswpin)
REG_set(PSWPOUT, pswpout)
REG_set(SLABS_SCANNED, slabs_scanned)
REG_set(SWAP_RA, swap_ra)
REG_set(SWAP_RA_HIT, swap_ra_hit)
REG_set(THP_COLLAPSE_ALLOC, thp_collapse_alloc)
REG_set(THP_COLLAPSE_ALLOC_FAILED, thp_collapse_alloc_failed)
REG_set(THP_DEFERRED_SPLIT_PAGE, thp_deferred_split_page)
REG_set(THP_FAULT_ALLOC, thp_fault_alloc)
REG_set(THP_FAULT_FALLBACK, thp_fault_fallback)
REG_set(THP_SPLIT, thp_split)
REG_set(THP_FILE_ALLOC, thp_file_alloc)
REG_set(THP_FILE_MAPPED, thp_file_mapped)
REG_set(THP_SPLIT_PAGE, thp_split_page)
REG_set(THP_SPLIT_PAGE_FAILED, thp_split_page_failed)
REG_set(THP_SPLIT_PMD, thp_split_pmd)
REG_set(THP_SPLIT_PUD, thp_split_pud)
REG_set(THP_SWPOUT, thp_swpout)
REG_set(THP_SWPOUT_FALLBACK, thp_swpout_fallback)
REG_set(THP_ZERO_PAGE_ALLOC, thp_zero_page_alloc)
REG_set(THP_ZERO_PAGE_ALLOC_FAILED, thp_zero_page_alloc_failed)
REG_set(UNEVICTABLE_PGS_CLEARED, unevictable_pgs_cleared)
@ -322,13 +362,22 @@ REG_set(UNEVICTABLE_PGS_SCANNED, unevictable_pgs_scanned)
REG_set(UNEVICTABLE_PGS_STRANDED, unevictable_pgs_stranded)
REG_set(WORKINGSET_ACTIVATE, workingset_activate)
REG_set(WORKINGSET_NODERECLAIM, workingset_nodereclaim)
REG_set(WORKINGSET_NODES, workingset_nodes)
REG_set(WORKINGSET_REFAULT, workingset_refault)
REG_set(WORKINGSET_RESTORE, workingset_restore)
REG_set(ZONE_RECLAIM_FAILED, zone_reclaim_failed)
HST_set(DELTA_ALLOCSTALL, allocstall)
HST_set(DELTA_ALLOCSTALL_DMA, allocstall_dma)
HST_set(DELTA_ALLOCSTALL_DMA32, allocstall_dma32)
HST_set(DELTA_ALLOCSTALL_HIGH, allocstall_high)
HST_set(DELTA_ALLOCSTALL_MOVABLE, allocstall_movable)
HST_set(DELTA_ALLOCSTALL_NORMAL, allocstall_normal)
HST_set(DELTA_BALLOON_DEFLATE, balloon_deflate)
HST_set(DELTA_BALLOON_INFLATE, balloon_inflate)
HST_set(DELTA_BALLOON_MIGRATE, balloon_migrate)
HST_set(DELTA_COMPACT_DAEMON_FREE_SCANNED, compact_daemon_free_scanned)
HST_set(DELTA_COMPACT_DAEMON_MIGRATE_SCANNED, compact_daemon_migrate_scanned)
HST_set(DELTA_COMPACT_DAEMON_WAKE, compact_daemon_wake)
HST_set(DELTA_COMPACT_FAIL, compact_fail)
HST_set(DELTA_COMPACT_FREE_SCANNED, compact_free_scanned)
HST_set(DELTA_COMPACT_ISOLATED, compact_isolated)
@ -344,7 +393,6 @@ HST_set(DELTA_KSWAPD_INODESTEAL, kswapd_inodesteal)
HST_set(DELTA_KSWAPD_LOW_WMARK_HIT_QUICKLY, kswapd_low_wmark_hit_quickly)
HST_set(DELTA_NR_ACTIVE_ANON, nr_active_anon)
HST_set(DELTA_NR_ACTIVE_FILE, nr_active_file)
HST_set(DELTA_NR_ALLOC_BATCH, nr_alloc_batch)
HST_set(DELTA_NR_ANON_PAGES, nr_anon_pages)
HST_set(DELTA_NR_ANON_TRANSPARENT_HUGEPAGES, nr_anon_transparent_hugepages)
HST_set(DELTA_NR_BOUNCE, nr_bounce)
@ -359,12 +407,14 @@ HST_set(DELTA_NR_INACTIVE_ANON, nr_inactive_anon)
HST_set(DELTA_NR_INACTIVE_FILE, nr_inactive_file)
HST_set(DELTA_NR_ISOLATED_ANON, nr_isolated_anon)
HST_set(DELTA_NR_ISOLATED_FILE, nr_isolated_file)
HST_set(DELTA_NR_KERNEL_MISC_RECLAIMABLE, nr_kernel_misc_reclaimable)
HST_set(DELTA_NR_KERNEL_STACK, nr_kernel_stack)
HST_set(DELTA_NR_MAPPED, nr_mapped)
HST_set(DELTA_NR_MLOCK, nr_mlock)
HST_set(DELTA_NR_PAGES_SCANNED, nr_pages_scanned)
HST_set(DELTA_NR_PAGE_TABLE_PAGES, nr_page_table_pages)
HST_set(DELTA_NR_SHMEM, nr_shmem)
HST_set(DELTA_NR_SHMEM_HUGEPAGES, nr_shmem_hugepages)
HST_set(DELTA_NR_SHMEM_PMDMAPPED, nr_shmem_pmdmapped)
HST_set(DELTA_NR_SLAB_RECLAIMABLE, nr_slab_reclaimable)
HST_set(DELTA_NR_SLAB_UNRECLAIMABLE, nr_slab_unreclaimable)
HST_set(DELTA_NR_UNEVICTABLE, nr_unevictable)
@ -374,6 +424,13 @@ HST_set(DELTA_NR_VMSCAN_WRITE, nr_vmscan_write)
HST_set(DELTA_NR_WRITEBACK, nr_writeback)
HST_set(DELTA_NR_WRITEBACK_TEMP, nr_writeback_temp)
HST_set(DELTA_NR_WRITTEN, nr_written)
HST_set(DELTA_NR_ZONE_ACTIVE_ANON, nr_zone_active_anon)
HST_set(DELTA_NR_ZONE_ACTIVE_FILE, nr_zone_active_file)
HST_set(DELTA_NR_ZONE_INACTIVE_ANON, nr_zone_inactive_anon)
HST_set(DELTA_NR_ZONE_INACTIVE_FILE, nr_zone_inactive_file)
HST_set(DELTA_NR_ZONE_UNEVICTABLE, nr_zone_unevictable)
HST_set(DELTA_NR_ZONE_WRITE_PENDING, nr_zone_write_pending)
HST_set(DELTA_NR_ZSPAGES, nr_zspages)
HST_set(DELTA_NUMA_FOREIGN, numa_foreign)
HST_set(DELTA_NUMA_HINT_FAULTS, numa_hint_faults)
HST_set(DELTA_NUMA_HINT_FAULTS_LOCAL, numa_hint_faults_local)
@ -385,51 +442,55 @@ HST_set(DELTA_NUMA_MISS, numa_miss)
HST_set(DELTA_NUMA_OTHER, numa_other)
HST_set(DELTA_NUMA_PAGES_MIGRATED, numa_pages_migrated)
HST_set(DELTA_NUMA_PTE_UPDATES, numa_pte_updates)
HST_set(DELTA_OOM_KILL, oom_kill)
HST_set(DELTA_PAGEOUTRUN, pageoutrun)
HST_set(DELTA_PGACTIVATE, pgactivate)
HST_set(DELTA_PGALLOC_DMA, pgalloc_dma)
HST_set(DELTA_PGALLOC_DMA32, pgalloc_dma32)
HST_set(DELTA_PGALLOC_HIGH, pgalloc_high)
HST_set(DELTA_PGALLOC_MOVABLE, pgalloc_movable)
HST_set(DELTA_PGALLOC_NORMAL, pgalloc_normal)
HST_set(DELTA_PGDEACTIVATE, pgdeactivate)
HST_set(DELTA_PGFAULT, pgfault)
HST_set(DELTA_PGFREE, pgfree)
HST_set(DELTA_PGINODESTEAL, pginodesteal)
HST_set(DELTA_PGLAZYFREE, pglazyfree)
HST_set(DELTA_PGLAZYFREED, pglazyfreed)
HST_set(DELTA_PGMAJFAULT, pgmajfault)
HST_set(DELTA_PGMIGRATE_FAIL, pgmigrate_fail)
HST_set(DELTA_PGMIGRATE_SUCCESS, pgmigrate_success)
HST_set(DELTA_PGPGIN, pgpgin)
HST_set(DELTA_PGPGOUT, pgpgout)
HST_set(DELTA_PGREFILL_DMA, pgrefill_dma)
HST_set(DELTA_PGREFILL_DMA32, pgrefill_dma32)
HST_set(DELTA_PGREFILL_MOVABLE, pgrefill_movable)
HST_set(DELTA_PGREFILL_NORMAL, pgrefill_normal)
HST_set(DELTA_PGREFILL, pgrefill)
HST_set(DELTA_PGROTATED, pgrotated)
HST_set(DELTA_PGSCAN_DIRECT_DMA, pgscan_direct_dma)
HST_set(DELTA_PGSCAN_DIRECT_DMA32, pgscan_direct_dma32)
HST_set(DELTA_PGSCAN_DIRECT_MOVABLE, pgscan_direct_movable)
HST_set(DELTA_PGSCAN_DIRECT_NORMAL, pgscan_direct_normal)
HST_set(DELTA_PGSCAN_DIRECT, pgscan_direct)
HST_set(DELTA_PGSCAN_DIRECT_THROTTLE, pgscan_direct_throttle)
HST_set(DELTA_PGSCAN_KSWAPD_DMA, pgscan_kswapd_dma)
HST_set(DELTA_PGSCAN_KSWAPD_DMA32, pgscan_kswapd_dma32)
HST_set(DELTA_PGSCAN_KSWAPD_MOVEABLE, pgscan_kswapd_movable)
HST_set(DELTA_PGSCAN_KSWAPD_NORMAL, pgscan_kswapd_normal)
HST_set(DELTA_PGSTEAL_DIRECT_DMA, pgsteal_direct_dma)
HST_set(DELTA_PGSTEAL_DIRECT_DMA32, pgsteal_direct_dma32)
HST_set(DELTA_PGSTEAL_DIRECT_MOVABLE, pgsteal_direct_movable)
HST_set(DELTA_PGSTEAL_DIRECT_NORMAL, pgsteal_direct_normal)
HST_set(DELTA_PGSTEAL_KSWAPD_DMA, pgsteal_kswapd_dma)
HST_set(DELTA_PGSTEAL_KSWAPD_DMA32, pgsteal_kswapd_dma32)
HST_set(DELTA_PGSTEAL_KSWAPD_MOVABLE, pgsteal_kswapd_movable)
HST_set(DELTA_PGSTEAL_KSWAPD_NORMAL, pgsteal_kswapd_normal)
HST_set(DELTA_PGSCAN_KSWAPD, pgscan_kswapd)
HST_set(DELTA_PGSKIP_DMA, pgskip_dma)
HST_set(DELTA_PGSKIP_DMA32, pgskip_dma32)
HST_set(DELTA_PGSKIP_HIGH, pgskip_high)
HST_set(DELTA_PGSKIP_MOVABLE, pgskip_movable)
HST_set(DELTA_PGSKIP_NORMAL, pgskip_normal)
HST_set(DELTA_PGSTEAL_DIRECT, pgsteal_direct)
HST_set(DELTA_PGSTEAL_KSWAPD, pgsteal_kswapd)
HST_set(DELTA_PSWPIN, pswpin)
HST_set(DELTA_PSWPOUT, pswpout)
HST_set(DELTA_SLABS_SCANNED, slabs_scanned)
HST_set(DELTA_SWAP_RA, swap_ra)
HST_set(DELTA_SWAP_RA_HIT, swap_ra_hit)
HST_set(DELTA_THP_COLLAPSE_ALLOC, thp_collapse_alloc)
HST_set(DELTA_THP_COLLAPSE_ALLOC_FAILED, thp_collapse_alloc_failed)
HST_set(DELTA_THP_DEFERRED_SPLIT_PAGE, thp_deferred_split_page)
HST_set(DELTA_THP_FAULT_ALLOC, thp_fault_alloc)
HST_set(DELTA_THP_FAULT_FALLBACK, thp_fault_fallback)
HST_set(DELTA_THP_SPLIT, thp_split)
HST_set(DELTA_THP_FILE_ALLOC, thp_file_alloc)
HST_set(DELTA_THP_FILE_MAPPED, thp_file_mapped)
HST_set(DELTA_THP_SPLIT_PAGE, thp_split_page)
HST_set(DELTA_THP_SPLIT_PAGE_FAILED, thp_split_page_failed)
HST_set(DELTA_THP_SPLIT_PMD, thp_split_pmd)
HST_set(DELTA_THP_SPLIT_PUD, thp_split_pud)
HST_set(DELTA_THP_SWPOUT, thp_swpout)
HST_set(DELTA_THP_SWPOUT_FALLBACK, thp_swpout_fallback)
HST_set(DELTA_THP_ZERO_PAGE_ALLOC, thp_zero_page_alloc)
HST_set(DELTA_THP_ZERO_PAGE_ALLOC_FAILED, thp_zero_page_alloc_failed)
HST_set(DELTA_UNEVICTABLE_PGS_CLEARED, unevictable_pgs_cleared)
@ -441,7 +502,9 @@ HST_set(DELTA_UNEVICTABLE_PGS_SCANNED, unevictable_pgs_scanned)
HST_set(DELTA_UNEVICTABLE_PGS_STRANDED, unevictable_pgs_stranded)
HST_set(DELTA_WORKINGSET_ACTIVATE, workingset_activate)
HST_set(DELTA_WORKINGSET_NODERECLAIM, workingset_nodereclaim)
HST_set(DELTA_WORKINGSET_NODES, workingset_nodes)
HST_set(DELTA_WORKINGSET_REFAULT, workingset_refault)
HST_set(DELTA_WORKINGSET_RESTORE, workingset_restore)
HST_set(DELTA_ZONE_RECLAIM_FAILED, zone_reclaim_failed)
#undef setDECL
@ -466,14 +529,21 @@ static struct {
char *type2str; // the result type as a string value
} Item_table[] = {
/* setsfunc type2str
---------------------------------------- ---------- */
----------------------------------------- ---------- */
{ RS(noop), TS_noop },
{ RS(extra), TS_noop },
{ RS(ALLOCSTALL), TS(ul_int) },
{ RS(ALLOCSTALL_DMA), TS(ul_int) },
{ RS(ALLOCSTALL_DMA32), TS(ul_int) },
{ RS(ALLOCSTALL_HIGH), TS(ul_int) },
{ RS(ALLOCSTALL_MOVABLE), TS(ul_int) },
{ RS(ALLOCSTALL_NORMAL), TS(ul_int) },
{ RS(BALLOON_DEFLATE), TS(ul_int) },
{ RS(BALLOON_INFLATE), TS(ul_int) },
{ RS(BALLOON_MIGRATE), TS(ul_int) },
{ RS(COMPACT_DAEMON_FREE_SCANNED), TS(ul_int) },
{ RS(COMPACT_DAEMON_MIGRATE_SCANNED), TS(ul_int) },
{ RS(COMPACT_DAEMON_WAKE), TS(ul_int) },
{ RS(COMPACT_FAIL), TS(ul_int) },
{ RS(COMPACT_FREE_SCANNED), TS(ul_int) },
{ RS(COMPACT_ISOLATED), TS(ul_int) },
@ -489,7 +559,6 @@ static struct {
{ RS(KSWAPD_LOW_WMARK_HIT_QUICKLY), TS(ul_int) },
{ RS(NR_ACTIVE_ANON), TS(ul_int) },
{ RS(NR_ACTIVE_FILE), TS(ul_int) },
{ RS(NR_ALLOC_BATCH), TS(ul_int) },
{ RS(NR_ANON_PAGES), TS(ul_int) },
{ RS(NR_ANON_TRANSPARENT_HUGEPAGES), TS(ul_int) },
{ RS(NR_BOUNCE), TS(ul_int) },
@ -504,12 +573,14 @@ static struct {
{ RS(NR_INACTIVE_FILE), TS(ul_int) },
{ RS(NR_ISOLATED_ANON), TS(ul_int) },
{ RS(NR_ISOLATED_FILE), TS(ul_int) },
{ RS(NR_KERNEL_MISC_RECLAIMABLE), TS(ul_int) },
{ RS(NR_KERNEL_STACK), TS(ul_int) },
{ RS(NR_MAPPED), TS(ul_int) },
{ RS(NR_MLOCK), TS(ul_int) },
{ RS(NR_PAGES_SCANNED), TS(ul_int) },
{ RS(NR_PAGE_TABLE_PAGES), TS(ul_int) },
{ RS(NR_SHMEM), TS(ul_int) },
{ RS(NR_SHMEM_HUGEPAGES), TS(ul_int) },
{ RS(NR_SHMEM_PMDMAPPED), TS(ul_int) },
{ RS(NR_SLAB_RECLAIMABLE), TS(ul_int) },
{ RS(NR_SLAB_UNRECLAIMABLE), TS(ul_int) },
{ RS(NR_UNEVICTABLE), TS(ul_int) },
@ -519,6 +590,13 @@ static struct {
{ RS(NR_WRITEBACK), TS(ul_int) },
{ RS(NR_WRITEBACK_TEMP), TS(ul_int) },
{ RS(NR_WRITTEN), TS(ul_int) },
{ RS(NR_ZONE_ACTIVE_ANON), TS(ul_int) },
{ RS(NR_ZONE_ACTIVE_FILE), TS(ul_int) },
{ RS(NR_ZONE_INACTIVE_ANON), TS(ul_int) },
{ RS(NR_ZONE_INACTIVE_FILE), TS(ul_int) },
{ RS(NR_ZONE_UNEVICTABLE), TS(ul_int) },
{ RS(NR_ZONE_WRITE_PENDING), TS(ul_int) },
{ RS(NR_ZSPAGES), TS(ul_int) },
{ RS(NUMA_FOREIGN), TS(ul_int) },
{ RS(NUMA_HINT_FAULTS), TS(ul_int) },
{ RS(NUMA_HINT_FAULTS_LOCAL), TS(ul_int) },
@ -530,51 +608,55 @@ static struct {
{ RS(NUMA_OTHER), TS(ul_int) },
{ RS(NUMA_PAGES_MIGRATED), TS(ul_int) },
{ RS(NUMA_PTE_UPDATES), TS(ul_int) },
{ RS(OOM_KILL), TS(ul_int) },
{ RS(PAGEOUTRUN), TS(ul_int) },
{ RS(PGACTIVATE), TS(ul_int) },
{ RS(PGALLOC_DMA), TS(ul_int) },
{ RS(PGALLOC_DMA32), TS(ul_int) },
{ RS(PGALLOC_HIGH), TS(ul_int) },
{ RS(PGALLOC_MOVABLE), TS(ul_int) },
{ RS(PGALLOC_NORMAL), TS(ul_int) },
{ RS(PGDEACTIVATE), TS(ul_int) },
{ RS(PGFAULT), TS(ul_int) },
{ RS(PGFREE), TS(ul_int) },
{ RS(PGINODESTEAL), TS(ul_int) },
{ RS(PGLAZYFREE), TS(ul_int) },
{ RS(PGLAZYFREED), TS(ul_int) },
{ RS(PGMAJFAULT), TS(ul_int) },
{ RS(PGMIGRATE_FAIL), TS(ul_int) },
{ RS(PGMIGRATE_SUCCESS), TS(ul_int) },
{ RS(PGPGIN), TS(ul_int) },
{ RS(PGPGOUT), TS(ul_int) },
{ RS(PGREFILL_DMA), TS(ul_int) },
{ RS(PGREFILL_DMA32), TS(ul_int) },
{ RS(PGREFILL_MOVABLE), TS(ul_int) },
{ RS(PGREFILL_NORMAL), TS(ul_int) },
{ RS(PGREFILL), TS(ul_int) },
{ RS(PGROTATED), TS(ul_int) },
{ RS(PGSCAN_DIRECT_DMA), TS(ul_int) },
{ RS(PGSCAN_DIRECT_DMA32), TS(ul_int) },
{ RS(PGSCAN_DIRECT_MOVABLE), TS(ul_int) },
{ RS(PGSCAN_DIRECT_NORMAL), TS(ul_int) },
{ RS(PGSCAN_DIRECT), TS(ul_int) },
{ RS(PGSCAN_DIRECT_THROTTLE), TS(ul_int) },
{ RS(PGSCAN_KSWAPD_DMA), TS(ul_int) },
{ RS(PGSCAN_KSWAPD_DMA32), TS(ul_int) },
{ RS(PGSCAN_KSWAPD_MOVEABLE), TS(ul_int) },
{ RS(PGSCAN_KSWAPD_NORMAL), TS(ul_int) },
{ RS(PGSTEAL_DIRECT_DMA), TS(ul_int) },
{ RS(PGSTEAL_DIRECT_DMA32), TS(ul_int) },
{ RS(PGSTEAL_DIRECT_MOVABLE), TS(ul_int) },
{ RS(PGSTEAL_DIRECT_NORMAL), TS(ul_int) },
{ RS(PGSTEAL_KSWAPD_DMA), TS(ul_int) },
{ RS(PGSTEAL_KSWAPD_DMA32), TS(ul_int) },
{ RS(PGSTEAL_KSWAPD_MOVABLE), TS(ul_int) },
{ RS(PGSTEAL_KSWAPD_NORMAL), TS(ul_int) },
{ RS(PGSCAN_KSWAPD), TS(ul_int) },
{ RS(PGSKIP_DMA), TS(ul_int) },
{ RS(PGSKIP_DMA32), TS(ul_int) },
{ RS(PGSKIP_HIGH), TS(ul_int) },
{ RS(PGSKIP_MOVABLE), TS(ul_int) },
{ RS(PGSKIP_NORMAL), TS(ul_int) },
{ RS(PGSTEAL_DIRECT), TS(ul_int) },
{ RS(PGSTEAL_KSWAPD), TS(ul_int) },
{ RS(PSWPIN), TS(ul_int) },
{ RS(PSWPOUT), TS(ul_int) },
{ RS(SLABS_SCANNED), TS(ul_int) },
{ RS(SWAP_RA), TS(ul_int) },
{ RS(SWAP_RA_HIT), TS(ul_int) },
{ RS(THP_COLLAPSE_ALLOC), TS(ul_int) },
{ RS(THP_COLLAPSE_ALLOC_FAILED), TS(ul_int) },
{ RS(THP_DEFERRED_SPLIT_PAGE), TS(ul_int) },
{ RS(THP_FAULT_ALLOC), TS(ul_int) },
{ RS(THP_FAULT_FALLBACK), TS(ul_int) },
{ RS(THP_SPLIT), TS(ul_int) },
{ RS(THP_FILE_ALLOC), TS(ul_int) },
{ RS(THP_FILE_MAPPED), TS(ul_int) },
{ RS(THP_SPLIT_PAGE), TS(ul_int) },
{ RS(THP_SPLIT_PAGE_FAILED), TS(ul_int) },
{ RS(THP_SPLIT_PMD), TS(ul_int) },
{ RS(THP_SPLIT_PUD), TS(ul_int) },
{ RS(THP_SWPOUT), TS(ul_int) },
{ RS(THP_SWPOUT_FALLBACK), TS(ul_int) },
{ RS(THP_ZERO_PAGE_ALLOC), TS(ul_int) },
{ RS(THP_ZERO_PAGE_ALLOC_FAILED), TS(ul_int) },
{ RS(UNEVICTABLE_PGS_CLEARED), TS(ul_int) },
@ -586,13 +668,22 @@ static struct {
{ RS(UNEVICTABLE_PGS_STRANDED), TS(ul_int) },
{ RS(WORKINGSET_ACTIVATE), TS(ul_int) },
{ RS(WORKINGSET_NODERECLAIM), TS(ul_int) },
{ RS(WORKINGSET_NODES), TS(ul_int) },
{ RS(WORKINGSET_REFAULT), TS(ul_int) },
{ RS(WORKINGSET_RESTORE), TS(ul_int) },
{ RS(ZONE_RECLAIM_FAILED), TS(ul_int) },
{ RS(DELTA_ALLOCSTALL), TS(sl_int) },
{ RS(DELTA_ALLOCSTALL_DMA), TS(sl_int) },
{ RS(DELTA_ALLOCSTALL_DMA32), TS(sl_int) },
{ RS(DELTA_ALLOCSTALL_HIGH), TS(sl_int) },
{ RS(DELTA_ALLOCSTALL_MOVABLE), TS(sl_int) },
{ RS(DELTA_ALLOCSTALL_NORMAL), TS(sl_int) },
{ RS(DELTA_BALLOON_DEFLATE), TS(sl_int) },
{ RS(DELTA_BALLOON_INFLATE), TS(sl_int) },
{ RS(DELTA_BALLOON_MIGRATE), TS(sl_int) },
{ RS(DELTA_COMPACT_DAEMON_FREE_SCANNED), TS(sl_int) },
{ RS(DELTA_COMPACT_DAEMON_MIGRATE_SCANNED), TS(sl_int) },
{ RS(DELTA_COMPACT_DAEMON_WAKE), TS(sl_int) },
{ RS(DELTA_COMPACT_FAIL), TS(sl_int) },
{ RS(DELTA_COMPACT_FREE_SCANNED), TS(sl_int) },
{ RS(DELTA_COMPACT_ISOLATED), TS(sl_int) },
@ -608,7 +699,6 @@ static struct {
{ RS(DELTA_KSWAPD_LOW_WMARK_HIT_QUICKLY), TS(sl_int) },
{ RS(DELTA_NR_ACTIVE_ANON), TS(sl_int) },
{ RS(DELTA_NR_ACTIVE_FILE), TS(sl_int) },
{ RS(DELTA_NR_ALLOC_BATCH), TS(sl_int) },
{ RS(DELTA_NR_ANON_PAGES), TS(sl_int) },
{ RS(DELTA_NR_ANON_TRANSPARENT_HUGEPAGES), TS(sl_int) },
{ RS(DELTA_NR_BOUNCE), TS(sl_int) },
@ -623,12 +713,14 @@ static struct {
{ RS(DELTA_NR_INACTIVE_FILE), TS(sl_int) },
{ RS(DELTA_NR_ISOLATED_ANON), TS(sl_int) },
{ RS(DELTA_NR_ISOLATED_FILE), TS(sl_int) },
{ RS(DELTA_NR_KERNEL_MISC_RECLAIMABLE), TS(sl_int) },
{ RS(DELTA_NR_KERNEL_STACK), TS(sl_int) },
{ RS(DELTA_NR_MAPPED), TS(sl_int) },
{ RS(DELTA_NR_MLOCK), TS(sl_int) },
{ RS(DELTA_NR_PAGES_SCANNED), TS(sl_int) },
{ RS(DELTA_NR_PAGE_TABLE_PAGES), TS(sl_int) },
{ RS(DELTA_NR_SHMEM), TS(sl_int) },
{ RS(DELTA_NR_SHMEM_HUGEPAGES), TS(sl_int) },
{ RS(DELTA_NR_SHMEM_PMDMAPPED), TS(sl_int) },
{ RS(DELTA_NR_SLAB_RECLAIMABLE), TS(sl_int) },
{ RS(DELTA_NR_SLAB_UNRECLAIMABLE), TS(sl_int) },
{ RS(DELTA_NR_UNEVICTABLE), TS(sl_int) },
@ -638,6 +730,13 @@ static struct {
{ RS(DELTA_NR_WRITEBACK), TS(sl_int) },
{ RS(DELTA_NR_WRITEBACK_TEMP), TS(sl_int) },
{ RS(DELTA_NR_WRITTEN), TS(sl_int) },
{ RS(DELTA_NR_ZONE_ACTIVE_ANON), TS(sl_int) },
{ RS(DELTA_NR_ZONE_ACTIVE_FILE), TS(sl_int) },
{ RS(DELTA_NR_ZONE_INACTIVE_ANON), TS(sl_int) },
{ RS(DELTA_NR_ZONE_INACTIVE_FILE), TS(sl_int) },
{ RS(DELTA_NR_ZONE_UNEVICTABLE), TS(sl_int) },
{ RS(DELTA_NR_ZONE_WRITE_PENDING), TS(sl_int) },
{ RS(DELTA_NR_ZSPAGES), TS(sl_int) },
{ RS(DELTA_NUMA_FOREIGN), TS(sl_int) },
{ RS(DELTA_NUMA_HINT_FAULTS), TS(sl_int) },
{ RS(DELTA_NUMA_HINT_FAULTS_LOCAL), TS(sl_int) },
@ -649,51 +748,55 @@ static struct {
{ RS(DELTA_NUMA_OTHER), TS(sl_int) },
{ RS(DELTA_NUMA_PAGES_MIGRATED), TS(sl_int) },
{ RS(DELTA_NUMA_PTE_UPDATES), TS(sl_int) },
{ RS(DELTA_OOM_KILL), TS(sl_int) },
{ RS(DELTA_PAGEOUTRUN), TS(sl_int) },
{ RS(DELTA_PGACTIVATE), TS(sl_int) },
{ RS(DELTA_PGALLOC_DMA), TS(sl_int) },
{ RS(DELTA_PGALLOC_DMA32), TS(sl_int) },
{ RS(DELTA_PGALLOC_HIGH), TS(sl_int) },
{ RS(DELTA_PGALLOC_MOVABLE), TS(sl_int) },
{ RS(DELTA_PGALLOC_NORMAL), TS(sl_int) },
{ RS(DELTA_PGDEACTIVATE), TS(sl_int) },
{ RS(DELTA_PGFAULT), TS(sl_int) },
{ RS(DELTA_PGFREE), TS(sl_int) },
{ RS(DELTA_PGINODESTEAL), TS(sl_int) },
{ RS(DELTA_PGLAZYFREE), TS(sl_int) },
{ RS(DELTA_PGLAZYFREED), TS(sl_int) },
{ RS(DELTA_PGMAJFAULT), TS(sl_int) },
{ RS(DELTA_PGMIGRATE_FAIL), TS(sl_int) },
{ RS(DELTA_PGMIGRATE_SUCCESS), TS(sl_int) },
{ RS(DELTA_PGPGIN), TS(sl_int) },
{ RS(DELTA_PGPGOUT), TS(sl_int) },
{ RS(DELTA_PGREFILL_DMA), TS(sl_int) },
{ RS(DELTA_PGREFILL_DMA32), TS(sl_int) },
{ RS(DELTA_PGREFILL_MOVABLE), TS(sl_int) },
{ RS(DELTA_PGREFILL_NORMAL), TS(sl_int) },
{ RS(DELTA_PGREFILL), TS(sl_int) },
{ RS(DELTA_PGROTATED), TS(sl_int) },
{ RS(DELTA_PGSCAN_DIRECT_DMA), TS(sl_int) },
{ RS(DELTA_PGSCAN_DIRECT_DMA32), TS(sl_int) },
{ RS(DELTA_PGSCAN_DIRECT_MOVABLE), TS(sl_int) },
{ RS(DELTA_PGSCAN_DIRECT_NORMAL), TS(sl_int) },
{ RS(DELTA_PGSCAN_DIRECT), TS(sl_int) },
{ RS(DELTA_PGSCAN_DIRECT_THROTTLE), TS(sl_int) },
{ RS(DELTA_PGSCAN_KSWAPD_DMA), TS(sl_int) },
{ RS(DELTA_PGSCAN_KSWAPD_DMA32), TS(sl_int) },
{ RS(DELTA_PGSCAN_KSWAPD_MOVEABLE), TS(sl_int) },
{ RS(DELTA_PGSCAN_KSWAPD_NORMAL), TS(sl_int) },
{ RS(DELTA_PGSTEAL_DIRECT_DMA), TS(sl_int) },
{ RS(DELTA_PGSTEAL_DIRECT_DMA32), TS(sl_int) },
{ RS(DELTA_PGSTEAL_DIRECT_MOVABLE), TS(sl_int) },
{ RS(DELTA_PGSTEAL_DIRECT_NORMAL), TS(sl_int) },
{ RS(DELTA_PGSTEAL_KSWAPD_DMA), TS(sl_int) },
{ RS(DELTA_PGSTEAL_KSWAPD_DMA32), TS(sl_int) },
{ RS(DELTA_PGSTEAL_KSWAPD_MOVABLE), TS(sl_int) },
{ RS(DELTA_PGSTEAL_KSWAPD_NORMAL), TS(sl_int) },
{ RS(DELTA_PGSCAN_KSWAPD), TS(sl_int) },
{ RS(DELTA_PGSKIP_DMA), TS(sl_int) },
{ RS(DELTA_PGSKIP_DMA32), TS(sl_int) },
{ RS(DELTA_PGSKIP_HIGH), TS(sl_int) },
{ RS(DELTA_PGSKIP_MOVABLE), TS(sl_int) },
{ RS(DELTA_PGSKIP_NORMAL), TS(sl_int) },
{ RS(DELTA_PGSTEAL_DIRECT), TS(sl_int) },
{ RS(DELTA_PGSTEAL_KSWAPD), TS(sl_int) },
{ RS(DELTA_PSWPIN), TS(sl_int) },
{ RS(DELTA_PSWPOUT), TS(sl_int) },
{ RS(DELTA_SLABS_SCANNED), TS(sl_int) },
{ RS(DELTA_SWAP_RA), TS(sl_int) },
{ RS(DELTA_SWAP_RA_HIT), TS(sl_int) },
{ RS(DELTA_THP_COLLAPSE_ALLOC), TS(sl_int) },
{ RS(DELTA_THP_COLLAPSE_ALLOC_FAILED), TS(sl_int) },
{ RS(DELTA_THP_DEFERRED_SPLIT_PAGE), TS(sl_int) },
{ RS(DELTA_THP_FAULT_ALLOC), TS(sl_int) },
{ RS(DELTA_THP_FAULT_FALLBACK), TS(sl_int) },
{ RS(DELTA_THP_SPLIT), TS(sl_int) },
{ RS(DELTA_THP_FILE_ALLOC), TS(sl_int) },
{ RS(DELTA_THP_FILE_MAPPED), TS(sl_int) },
{ RS(DELTA_THP_SPLIT_PAGE), TS(sl_int) },
{ RS(DELTA_THP_SPLIT_PAGE_FAILED), TS(sl_int) },
{ RS(DELTA_THP_SPLIT_PMD), TS(sl_int) },
{ RS(DELTA_THP_SPLIT_PUD), TS(sl_int) },
{ RS(DELTA_THP_SWPOUT), TS(sl_int) },
{ RS(DELTA_THP_SWPOUT_FALLBACK), TS(sl_int) },
{ RS(DELTA_THP_ZERO_PAGE_ALLOC), TS(sl_int) },
{ RS(DELTA_THP_ZERO_PAGE_ALLOC_FAILED), TS(sl_int) },
{ RS(DELTA_UNEVICTABLE_PGS_CLEARED), TS(sl_int) },
@ -705,7 +808,9 @@ static struct {
{ RS(DELTA_UNEVICTABLE_PGS_STRANDED), TS(sl_int) },
{ RS(DELTA_WORKINGSET_ACTIVATE), TS(sl_int) },
{ RS(DELTA_WORKINGSET_NODERECLAIM), TS(sl_int) },
{ RS(DELTA_WORKINGSET_NODES), TS(sl_int) },
{ RS(DELTA_WORKINGSET_REFAULT), TS(sl_int) },
{ RS(DELTA_WORKINGSET_RESTORE), TS(sl_int) },
{ RS(DELTA_ZONE_RECLAIM_FAILED), TS(sl_int) },
// dummy entry corresponding to VMSTAT_logical_end ...
@ -838,10 +943,17 @@ static int vmstat_make_hash_failed (
if (!hcreate_r(n + (n / 4), &info->hashtab))
return 1;
htVAL(allocstall)
htVAL(allocstall_dma)
htVAL(allocstall_dma32)
htVAL(allocstall_high)
htVAL(allocstall_movable)
htVAL(allocstall_normal)
htVAL(balloon_deflate)
htVAL(balloon_inflate)
htVAL(balloon_migrate)
htVAL(compact_daemon_free_scanned)
htVAL(compact_daemon_migrate_scanned)
htVAL(compact_daemon_wake)
htVAL(compact_fail)
htVAL(compact_free_scanned)
htVAL(compact_isolated)
@ -857,7 +969,6 @@ static int vmstat_make_hash_failed (
htVAL(kswapd_low_wmark_hit_quickly)
htVAL(nr_active_anon)
htVAL(nr_active_file)
htVAL(nr_alloc_batch)
htVAL(nr_anon_pages)
htVAL(nr_anon_transparent_hugepages)
htVAL(nr_bounce)
@ -872,12 +983,14 @@ static int vmstat_make_hash_failed (
htVAL(nr_inactive_file)
htVAL(nr_isolated_anon)
htVAL(nr_isolated_file)
htVAL(nr_kernel_misc_reclaimable)
htVAL(nr_kernel_stack)
htVAL(nr_mapped)
htVAL(nr_mlock)
htVAL(nr_pages_scanned)
htVAL(nr_page_table_pages)
htVAL(nr_shmem)
htVAL(nr_shmem_hugepages)
htVAL(nr_shmem_pmdmapped)
htVAL(nr_slab_reclaimable)
htVAL(nr_slab_unreclaimable)
htVAL(nr_unevictable)
@ -887,6 +1000,13 @@ static int vmstat_make_hash_failed (
htVAL(nr_writeback)
htVAL(nr_writeback_temp)
htVAL(nr_written)
htVAL(nr_zone_active_anon)
htVAL(nr_zone_active_file)
htVAL(nr_zone_inactive_anon)
htVAL(nr_zone_inactive_file)
htVAL(nr_zone_unevictable)
htVAL(nr_zone_write_pending)
htVAL(nr_zspages)
htVAL(numa_foreign)
htVAL(numa_hint_faults)
htVAL(numa_hint_faults_local)
@ -898,51 +1018,55 @@ static int vmstat_make_hash_failed (
htVAL(numa_other)
htVAL(numa_pages_migrated)
htVAL(numa_pte_updates)
htVAL(oom_kill)
htVAL(pageoutrun)
htVAL(pgactivate)
htVAL(pgalloc_dma)
htVAL(pgalloc_dma32)
htVAL(pgalloc_high)
htVAL(pgalloc_movable)
htVAL(pgalloc_normal)
htVAL(pgdeactivate)
htVAL(pgfault)
htVAL(pgfree)
htVAL(pginodesteal)
htVAL(pglazyfree)
htVAL(pglazyfreed)
htVAL(pgmajfault)
htVAL(pgmigrate_fail)
htVAL(pgmigrate_success)
htVAL(pgpgin)
htVAL(pgpgout)
htVAL(pgrefill_dma)
htVAL(pgrefill_dma32)
htVAL(pgrefill_movable)
htVAL(pgrefill_normal)
htVAL(pgrefill)
htVAL(pgrotated)
htVAL(pgscan_direct_dma)
htVAL(pgscan_direct_dma32)
htVAL(pgscan_direct_movable)
htVAL(pgscan_direct_normal)
htVAL(pgscan_direct)
htVAL(pgscan_direct_throttle)
htVAL(pgscan_kswapd_dma)
htVAL(pgscan_kswapd_dma32)
htVAL(pgscan_kswapd_movable)
htVAL(pgscan_kswapd_normal)
htVAL(pgsteal_direct_dma)
htVAL(pgsteal_direct_dma32)
htVAL(pgsteal_direct_movable)
htVAL(pgsteal_direct_normal)
htVAL(pgsteal_kswapd_dma)
htVAL(pgsteal_kswapd_dma32)
htVAL(pgsteal_kswapd_movable)
htVAL(pgsteal_kswapd_normal)
htVAL(pgscan_kswapd)
htVAL(pgskip_dma)
htVAL(pgskip_dma32)
htVAL(pgskip_high)
htVAL(pgskip_movable)
htVAL(pgskip_normal)
htVAL(pgsteal_direct)
htVAL(pgsteal_kswapd)
htVAL(pswpin)
htVAL(pswpout)
htVAL(slabs_scanned)
htVAL(swap_ra)
htVAL(swap_ra_hit)
htVAL(thp_collapse_alloc)
htVAL(thp_collapse_alloc_failed)
htVAL(thp_deferred_split_page)
htVAL(thp_fault_alloc)
htVAL(thp_fault_fallback)
htVAL(thp_split)
htVAL(thp_file_alloc)
htVAL(thp_file_mapped)
htVAL(thp_split_page)
htVAL(thp_split_page_failed)
htVAL(thp_split_pmd)
htVAL(thp_split_pud)
htVAL(thp_swpout)
htVAL(thp_swpout_fallback)
htVAL(thp_zero_page_alloc)
htVAL(thp_zero_page_alloc_failed)
htVAL(unevictable_pgs_cleared)
@ -954,7 +1078,9 @@ static int vmstat_make_hash_failed (
htVAL(unevictable_pgs_stranded)
htVAL(workingset_activate)
htVAL(workingset_nodereclaim)
htVAL(workingset_nodes)
htVAL(workingset_refault)
htVAL(workingset_restore)
htVAL(zone_reclaim_failed)
return 0;

View File

@ -33,10 +33,17 @@ enum vmstat_item {
VMSTAT_extra, // ( reset to zero )
// returns origin, see proc(5)
// ------- -------------------
VMSTAT_ALLOCSTALL, // ul_int /proc/vmstat
VMSTAT_ALLOCSTALL_DMA, // ul_int /proc/vmstat
VMSTAT_ALLOCSTALL_DMA32, // ul_int "
VMSTAT_ALLOCSTALL_HIGH, // ul_int "
VMSTAT_ALLOCSTALL_MOVABLE, // ul_int "
VMSTAT_ALLOCSTALL_NORMAL, // ul_int "
VMSTAT_BALLOON_DEFLATE, // ul_int "
VMSTAT_BALLOON_INFLATE, // ul_int "
VMSTAT_BALLOON_MIGRATE, // ul_int "
VMSTAT_COMPACT_DAEMON_FREE_SCANNED, // ul_int "
VMSTAT_COMPACT_DAEMON_MIGRATE_SCANNED, // ul_int "
VMSTAT_COMPACT_DAEMON_WAKE, // ul_int "
VMSTAT_COMPACT_FAIL, // ul_int "
VMSTAT_COMPACT_FREE_SCANNED, // ul_int "
VMSTAT_COMPACT_ISOLATED, // ul_int "
@ -52,7 +59,6 @@ enum vmstat_item {
VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY, // ul_int "
VMSTAT_NR_ACTIVE_ANON, // ul_int "
VMSTAT_NR_ACTIVE_FILE, // ul_int "
VMSTAT_NR_ALLOC_BATCH, // ul_int "
VMSTAT_NR_ANON_PAGES, // ul_int "
VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES, // ul_int "
VMSTAT_NR_BOUNCE, // ul_int "
@ -67,12 +73,14 @@ enum vmstat_item {
VMSTAT_NR_INACTIVE_FILE, // ul_int "
VMSTAT_NR_ISOLATED_ANON, // ul_int "
VMSTAT_NR_ISOLATED_FILE, // ul_int "
VMSTAT_NR_KERNEL_MISC_RECLAIMABLE, // ul_int "
VMSTAT_NR_KERNEL_STACK, // ul_int "
VMSTAT_NR_MAPPED, // ul_int "
VMSTAT_NR_MLOCK, // ul_int "
VMSTAT_NR_PAGES_SCANNED, // ul_int "
VMSTAT_NR_PAGE_TABLE_PAGES, // ul_int "
VMSTAT_NR_SHMEM, // ul_int "
VMSTAT_NR_SHMEM_HUGEPAGES, // ul_int "
VMSTAT_NR_SHMEM_PMDMAPPED, // ul_int "
VMSTAT_NR_SLAB_RECLAIMABLE, // ul_int "
VMSTAT_NR_SLAB_UNRECLAIMABLE, // ul_int "
VMSTAT_NR_UNEVICTABLE, // ul_int "
@ -82,6 +90,13 @@ enum vmstat_item {
VMSTAT_NR_WRITEBACK, // ul_int "
VMSTAT_NR_WRITEBACK_TEMP, // ul_int "
VMSTAT_NR_WRITTEN, // ul_int "
VMSTAT_NR_ZONE_ACTIVE_ANON, // ul_int "
VMSTAT_NR_ZONE_ACTIVE_FILE, // ul_int "
VMSTAT_NR_ZONE_INACTIVE_ANON, // ul_int "
VMSTAT_NR_ZONE_INACTIVE_FILE, // ul_int "
VMSTAT_NR_ZONE_UNEVICTABLE, // ul_int "
VMSTAT_NR_ZONE_WRITE_PENDING, // ul_int "
VMSTAT_NR_ZSPAGES, // ul_int "
VMSTAT_NUMA_FOREIGN, // ul_int "
VMSTAT_NUMA_HINT_FAULTS, // ul_int "
VMSTAT_NUMA_HINT_FAULTS_LOCAL, // ul_int "
@ -93,51 +108,55 @@ enum vmstat_item {
VMSTAT_NUMA_OTHER, // ul_int "
VMSTAT_NUMA_PAGES_MIGRATED, // ul_int "
VMSTAT_NUMA_PTE_UPDATES, // ul_int "
VMSTAT_OOM_KILL, // ul_int "
VMSTAT_PAGEOUTRUN, // ul_int "
VMSTAT_PGACTIVATE, // ul_int "
VMSTAT_PGALLOC_DMA, // ul_int "
VMSTAT_PGALLOC_DMA32, // ul_int "
VMSTAT_PGALLOC_HIGH, // ul_int "
VMSTAT_PGALLOC_MOVABLE, // ul_int "
VMSTAT_PGALLOC_NORMAL, // ul_int "
VMSTAT_PGDEACTIVATE, // ul_int "
VMSTAT_PGFAULT, // ul_int "
VMSTAT_PGFREE, // ul_int "
VMSTAT_PGINODESTEAL, // ul_int "
VMSTAT_PGLAZYFREE, // ul_int "
VMSTAT_PGLAZYFREED, // ul_int "
VMSTAT_PGMAJFAULT, // ul_int "
VMSTAT_PGMIGRATE_FAIL, // ul_int "
VMSTAT_PGMIGRATE_SUCCESS, // ul_int "
VMSTAT_PGPGIN, // ul_int "
VMSTAT_PGPGOUT, // ul_int "
VMSTAT_PGREFILL_DMA, // ul_int "
VMSTAT_PGREFILL_DMA32, // ul_int "
VMSTAT_PGREFILL_MOVABLE, // ul_int "
VMSTAT_PGREFILL_NORMAL, // ul_int "
VMSTAT_PGREFILL, // ul_int "
VMSTAT_PGROTATED, // ul_int "
VMSTAT_PGSCAN_DIRECT_DMA, // ul_int "
VMSTAT_PGSCAN_DIRECT_DMA32, // ul_int "
VMSTAT_PGSCAN_DIRECT_MOVABLE, // ul_int "
VMSTAT_PGSCAN_DIRECT_NORMAL, // ul_int "
VMSTAT_PGSCAN_DIRECT, // ul_int "
VMSTAT_PGSCAN_DIRECT_THROTTLE, // ul_int "
VMSTAT_PGSCAN_KSWAPD_DMA, // ul_int "
VMSTAT_PGSCAN_KSWAPD_DMA32, // ul_int "
VMSTAT_PGSCAN_KSWAPD_MOVEABLE, // ul_int "
VMSTAT_PGSCAN_KSWAPD_NORMAL, // ul_int "
VMSTAT_PGSTEAL_DIRECT_DMA, // ul_int "
VMSTAT_PGSTEAL_DIRECT_DMA32, // ul_int "
VMSTAT_PGSTEAL_DIRECT_MOVABLE, // ul_int "
VMSTAT_PGSTEAL_DIRECT_NORMAL, // ul_int "
VMSTAT_PGSTEAL_KSWAPD_DMA, // ul_int "
VMSTAT_PGSTEAL_KSWAPD_DMA32, // ul_int "
VMSTAT_PGSTEAL_KSWAPD_MOVABLE, // ul_int "
VMSTAT_PGSTEAL_KSWAPD_NORMAL, // ul_int "
VMSTAT_PGSCAN_KSWAPD, // ul_int "
VMSTAT_PGSKIP_DMA, // ul_int "
VMSTAT_PGSKIP_DMA32, // ul_int "
VMSTAT_PGSKIP_HIGH, // ul_int "
VMSTAT_PGSKIP_MOVABLE, // ul_int "
VMSTAT_PGSKIP_NORMAL, // ul_int "
VMSTAT_PGSTEAL_DIRECT, // ul_int "
VMSTAT_PGSTEAL_KSWAPD, // ul_int "
VMSTAT_PSWPIN, // ul_int "
VMSTAT_PSWPOUT, // ul_int "
VMSTAT_SLABS_SCANNED, // ul_int "
VMSTAT_SWAP_RA, // ul_int "
VMSTAT_SWAP_RA_HIT, // ul_int "
VMSTAT_THP_COLLAPSE_ALLOC, // ul_int "
VMSTAT_THP_COLLAPSE_ALLOC_FAILED, // ul_int "
VMSTAT_THP_DEFERRED_SPLIT_PAGE, // ul_int "
VMSTAT_THP_FAULT_ALLOC, // ul_int "
VMSTAT_THP_FAULT_FALLBACK, // ul_int "
VMSTAT_THP_SPLIT, // ul_int "
VMSTAT_THP_FILE_ALLOC, // ul_int "
VMSTAT_THP_FILE_MAPPED, // ul_int "
VMSTAT_THP_SPLIT_PAGE, // ul_int "
VMSTAT_THP_SPLIT_PAGE_FAILED, // ul_int "
VMSTAT_THP_SPLIT_PMD, // ul_int "
VMSTAT_THP_SPLIT_PUD, // ul_int "
VMSTAT_THP_SWPOUT, // ul_int "
VMSTAT_THP_SWPOUT_FALLBACK, // ul_int "
VMSTAT_THP_ZERO_PAGE_ALLOC, // ul_int "
VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED, // ul_int "
VMSTAT_UNEVICTABLE_PGS_CLEARED, // ul_int "
@ -149,13 +168,22 @@ enum vmstat_item {
VMSTAT_UNEVICTABLE_PGS_STRANDED, // ul_int "
VMSTAT_WORKINGSET_ACTIVATE, // ul_int "
VMSTAT_WORKINGSET_NODERECLAIM, // ul_int "
VMSTAT_WORKINGSET_NODES, // ul_int "
VMSTAT_WORKINGSET_REFAULT, // ul_int "
VMSTAT_WORKINGSET_RESTORE, // ul_int "
VMSTAT_ZONE_RECLAIM_FAILED, // ul_int "
VMSTAT_DELTA_ALLOCSTALL, // sl_int dervied from above
VMSTAT_DELTA_ALLOCSTALL_DMA, // sl_int derived from above
VMSTAT_DELTA_ALLOCSTALL_DMA32, // sl_int "
VMSTAT_DELTA_ALLOCSTALL_HIGH, // sl_int "
VMSTAT_DELTA_ALLOCSTALL_MOVABLE, // sl_int "
VMSTAT_DELTA_ALLOCSTALL_NORMAL, // sl_int "
VMSTAT_DELTA_BALLOON_DEFLATE, // sl_int "
VMSTAT_DELTA_BALLOON_INFLATE, // sl_int "
VMSTAT_DELTA_BALLOON_MIGRATE, // sl_int "
VMSTAT_DELTA_COMPACT_DAEMON_FREE_SCANNED, // sl_int "
VMSTAT_DELTA_COMPACT_DAEMON_MIGRATE_SCANNED, // sl_int "
VMSTAT_DELTA_COMPACT_DAEMON_WAKE, // sl_int "
VMSTAT_DELTA_COMPACT_FAIL, // sl_int "
VMSTAT_DELTA_COMPACT_FREE_SCANNED, // sl_int "
VMSTAT_DELTA_COMPACT_ISOLATED, // sl_int "
@ -171,7 +199,6 @@ enum vmstat_item {
VMSTAT_DELTA_KSWAPD_LOW_WMARK_HIT_QUICKLY, // sl_int "
VMSTAT_DELTA_NR_ACTIVE_ANON, // sl_int "
VMSTAT_DELTA_NR_ACTIVE_FILE, // sl_int "
VMSTAT_DELTA_NR_ALLOC_BATCH, // sl_int "
VMSTAT_DELTA_NR_ANON_PAGES, // sl_int "
VMSTAT_DELTA_NR_ANON_TRANSPARENT_HUGEPAGES, // sl_int "
VMSTAT_DELTA_NR_BOUNCE, // sl_int "
@ -186,12 +213,14 @@ enum vmstat_item {
VMSTAT_DELTA_NR_INACTIVE_FILE, // sl_int "
VMSTAT_DELTA_NR_ISOLATED_ANON, // sl_int "
VMSTAT_DELTA_NR_ISOLATED_FILE, // sl_int "
VMSTAT_DELTA_NR_KERNEL_MISC_RECLAIMABLE, // sl_int "
VMSTAT_DELTA_NR_KERNEL_STACK, // sl_int "
VMSTAT_DELTA_NR_MAPPED, // sl_int "
VMSTAT_DELTA_NR_MLOCK, // sl_int "
VMSTAT_DELTA_NR_PAGES_SCANNED, // sl_int "
VMSTAT_DELTA_NR_PAGE_TABLE_PAGES, // sl_int "
VMSTAT_DELTA_NR_SHMEM, // sl_int "
VMSTAT_DELTA_NR_SHMEM_HUGEPAGES, // sl_int "
VMSTAT_DELTA_NR_SHMEM_PMDMAPPED, // sl_int "
VMSTAT_DELTA_NR_SLAB_RECLAIMABLE, // sl_int "
VMSTAT_DELTA_NR_SLAB_UNRECLAIMABLE, // sl_int "
VMSTAT_DELTA_NR_UNEVICTABLE, // sl_int "
@ -201,6 +230,13 @@ enum vmstat_item {
VMSTAT_DELTA_NR_WRITEBACK, // sl_int "
VMSTAT_DELTA_NR_WRITEBACK_TEMP, // sl_int "
VMSTAT_DELTA_NR_WRITTEN, // sl_int "
VMSTAT_DELTA_NR_ZONE_ACTIVE_ANON, // sl_int "
VMSTAT_DELTA_NR_ZONE_ACTIVE_FILE, // sl_int "
VMSTAT_DELTA_NR_ZONE_INACTIVE_ANON, // sl_int "
VMSTAT_DELTA_NR_ZONE_INACTIVE_FILE, // sl_int "
VMSTAT_DELTA_NR_ZONE_UNEVICTABLE, // sl_int "
VMSTAT_DELTA_NR_ZONE_WRITE_PENDING, // sl_int "
VMSTAT_DELTA_NR_ZSPAGES, // sl_int "
VMSTAT_DELTA_NUMA_FOREIGN, // sl_int "
VMSTAT_DELTA_NUMA_HINT_FAULTS, // sl_int "
VMSTAT_DELTA_NUMA_HINT_FAULTS_LOCAL, // sl_int "
@ -212,51 +248,55 @@ enum vmstat_item {
VMSTAT_DELTA_NUMA_OTHER, // sl_int "
VMSTAT_DELTA_NUMA_PAGES_MIGRATED, // sl_int "
VMSTAT_DELTA_NUMA_PTE_UPDATES, // sl_int "
VMSTAT_DELTA_OOM_KILL, // sl_int "
VMSTAT_DELTA_PAGEOUTRUN, // sl_int "
VMSTAT_DELTA_PGACTIVATE, // sl_int "
VMSTAT_DELTA_PGALLOC_DMA, // sl_int "
VMSTAT_DELTA_PGALLOC_DMA32, // sl_int "
VMSTAT_DELTA_PGALLOC_HIGH, // sl_int "
VMSTAT_DELTA_PGALLOC_MOVABLE, // sl_int "
VMSTAT_DELTA_PGALLOC_NORMAL, // sl_int "
VMSTAT_DELTA_PGDEACTIVATE, // sl_int "
VMSTAT_DELTA_PGFAULT, // sl_int "
VMSTAT_DELTA_PGFREE, // sl_int "
VMSTAT_DELTA_PGINODESTEAL, // sl_int "
VMSTAT_DELTA_PGLAZYFREE, // sl_int "
VMSTAT_DELTA_PGLAZYFREED, // sl_int "
VMSTAT_DELTA_PGMAJFAULT, // sl_int "
VMSTAT_DELTA_PGMIGRATE_FAIL, // sl_int "
VMSTAT_DELTA_PGMIGRATE_SUCCESS, // sl_int "
VMSTAT_DELTA_PGPGIN, // sl_int "
VMSTAT_DELTA_PGPGOUT, // sl_int "
VMSTAT_DELTA_PGREFILL_DMA, // sl_int "
VMSTAT_DELTA_PGREFILL_DMA32, // sl_int "
VMSTAT_DELTA_PGREFILL_MOVABLE, // sl_int "
VMSTAT_DELTA_PGREFILL_NORMAL, // sl_int "
VMSTAT_DELTA_PGREFILL, // sl_int "
VMSTAT_DELTA_PGROTATED, // sl_int "
VMSTAT_DELTA_PGSCAN_DIRECT_DMA, // sl_int "
VMSTAT_DELTA_PGSCAN_DIRECT_DMA32, // sl_int "
VMSTAT_DELTA_PGSCAN_DIRECT_MOVABLE, // sl_int "
VMSTAT_DELTA_PGSCAN_DIRECT_NORMAL, // sl_int "
VMSTAT_DELTA_PGSCAN_DIRECT, // sl_int "
VMSTAT_DELTA_PGSCAN_DIRECT_THROTTLE, // sl_int "
VMSTAT_DELTA_PGSCAN_KSWAPD_DMA, // sl_int "
VMSTAT_DELTA_PGSCAN_KSWAPD_DMA32, // sl_int "
VMSTAT_DELTA_PGSCAN_KSWAPD_MOVEABLE, // sl_int "
VMSTAT_DELTA_PGSCAN_KSWAPD_NORMAL, // sl_int "
VMSTAT_DELTA_PGSTEAL_DIRECT_DMA, // sl_int "
VMSTAT_DELTA_PGSTEAL_DIRECT_DMA32, // sl_int "
VMSTAT_DELTA_PGSTEAL_DIRECT_MOVABLE, // sl_int "
VMSTAT_DELTA_PGSTEAL_DIRECT_NORMAL, // sl_int "
VMSTAT_DELTA_PGSTEAL_KSWAPD_DMA, // sl_int "
VMSTAT_DELTA_PGSTEAL_KSWAPD_DMA32, // sl_int "
VMSTAT_DELTA_PGSTEAL_KSWAPD_MOVABLE, // sl_int "
VMSTAT_DELTA_PGSTEAL_KSWAPD_NORMAL, // sl_int "
VMSTAT_DELTA_PGSCAN_KSWAPD, // sl_int "
VMSTAT_DELTA_PGSKIP_DMA, // sl_int "
VMSTAT_DELTA_PGSKIP_DMA32, // sl_int "
VMSTAT_DELTA_PGSKIP_HIGH, // sl_int "
VMSTAT_DELTA_PGSKIP_MOVABLE, // sl_int "
VMSTAT_DELTA_PGSKIP_NORMAL, // sl_int "
VMSTAT_DELTA_PGSTEAL_DIRECT, // sl_int "
VMSTAT_DELTA_PGSTEAL_KSWAPD, // sl_int "
VMSTAT_DELTA_PSWPIN, // sl_int "
VMSTAT_DELTA_PSWPOUT, // sl_int "
VMSTAT_DELTA_SLABS_SCANNED, // sl_int "
VMSTAT_DELTA_SWAP_RA, // sl_int "
VMSTAT_DELTA_SWAP_RA_HIT, // sl_int "
VMSTAT_DELTA_THP_COLLAPSE_ALLOC, // sl_int "
VMSTAT_DELTA_THP_COLLAPSE_ALLOC_FAILED, // sl_int "
VMSTAT_DELTA_THP_DEFERRED_SPLIT_PAGE, // sl_int "
VMSTAT_DELTA_THP_FAULT_ALLOC, // sl_int "
VMSTAT_DELTA_THP_FAULT_FALLBACK, // sl_int "
VMSTAT_DELTA_THP_SPLIT, // sl_int "
VMSTAT_DELTA_THP_FILE_ALLOC, // sl_int "
VMSTAT_DELTA_THP_FILE_MAPPED, // sl_int "
VMSTAT_DELTA_THP_SPLIT_PAGE, // sl_int "
VMSTAT_DELTA_THP_SPLIT_PAGE_FAILED, // sl_int "
VMSTAT_DELTA_THP_SPLIT_PMD, // sl_int "
VMSTAT_DELTA_THP_SPLIT_PUD, // sl_int "
VMSTAT_DELTA_THP_SWPOUT, // sl_int "
VMSTAT_DELTA_THP_SWPOUT_FALLBACK, // sl_int "
VMSTAT_DELTA_THP_ZERO_PAGE_ALLOC, // sl_int "
VMSTAT_DELTA_THP_ZERO_PAGE_ALLOC_FAILED, // sl_int "
VMSTAT_DELTA_UNEVICTABLE_PGS_CLEARED, // sl_int "
@ -268,7 +308,9 @@ enum vmstat_item {
VMSTAT_DELTA_UNEVICTABLE_PGS_STRANDED, // sl_int "
VMSTAT_DELTA_WORKINGSET_ACTIVATE, // sl_int "
VMSTAT_DELTA_WORKINGSET_NODERECLAIM, // sl_int "
VMSTAT_DELTA_WORKINGSET_NODES, // sl_int "
VMSTAT_DELTA_WORKINGSET_REFAULT, // sl_int "
VMSTAT_DELTA_WORKINGSET_RESTORE, // sl_int "
VMSTAT_DELTA_ZONE_RECLAIM_FAILED // sl_int "
};