]> granicus.if.org Git - procps-ng/commitdiff
library: refactored some header file items and origins
authorJim Warner <james.warner@comcast.net>
Tue, 12 Mar 2019 06:00:00 +0000 (00:00 -0600)
committerCraig Small <csmall@enc.com.au>
Tue, 26 Mar 2019 08:55:30 +0000 (19:55 +1100)
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>
proc/diskstats.c
proc/diskstats.h
proc/meminfo.c
proc/meminfo.h
proc/pids.c
proc/pids.h
proc/slabinfo.c
proc/slabinfo.h
proc/stat.h
proc/vmstat.c
proc/vmstat.h

index 134f6e010b36bec703b9a4e11b3664d2e754efba..3ced1cd47172564696545160a5349f7f44b6194e 100644 (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
index 8b9b8d00771ef5a2f8cac4e700a20e038c249e86..50a6362320f63e62ee9a3e1c6a05ba42de9003f9 100644 (file)
@@ -32,34 +32,34 @@ enum diskstats_item {
     DISKSTATS_extra,                //        ( reset to zero )
                                     //  returns        origin, see proc(5)
                                     //  -------        -------------------
-    DISKSTATS_NAME,                 //     str         /proc/diskstats
-    DISKSTATS_TYPE,                 //   s_int          "
-    DISKSTATS_MAJOR,                //   s_int          "
-    DISKSTATS_MINOR,                //   s_int          "
-
-    DISKSTATS_READS,                //  ul_int          "
-    DISKSTATS_READS_MERGED,         //  ul_int          "
-    DISKSTATS_READ_SECTORS,         //  ul_int          "
-    DISKSTATS_READ_TIME,            //  ul_int          "
-    DISKSTATS_WRITES,               //  ul_int          "
-    DISKSTATS_WRITES_MERGED,        //  ul_int          "
-    DISKSTATS_WRITE_SECTORS,        //  ul_int          "
-    DISKSTATS_WRITE_TIME,           //  ul_int          "
-    DISKSTATS_IO_TIME,              //  ul_int          "
-    DISKSTATS_IO_WTIME,             //  ul_int          "
-
-    DISKSTATS_IO_INPROGRESS,        //   s_int          "
-
-    DISKSTATS_DELTA_READS,          //   s_int         dervied from above
-    DISKSTATS_DELTA_READS_MERGED,   //   s_int          "
-    DISKSTATS_DELTA_READ_SECTORS,   //   s_int          "
-    DISKSTATS_DELTA_READ_TIME,      //   s_int          "
-    DISKSTATS_DELTA_WRITES,         //   s_int          "
-    DISKSTATS_DELTA_WRITES_MERGED,  //   s_int          "
-    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_NAME,                 //      str        /proc/diskstats
+    DISKSTATS_TYPE,                 //    s_int         "
+    DISKSTATS_MAJOR,                //    s_int         "
+    DISKSTATS_MINOR,                //    s_int         "
+
+    DISKSTATS_READS,                //   ul_int         "
+    DISKSTATS_READS_MERGED,         //   ul_int         "
+    DISKSTATS_READ_SECTORS,         //   ul_int         "
+    DISKSTATS_READ_TIME,            //   ul_int         "
+    DISKSTATS_WRITES,               //   ul_int         "
+    DISKSTATS_WRITES_MERGED,        //   ul_int         "
+    DISKSTATS_WRITE_SECTORS,        //   ul_int         "
+    DISKSTATS_WRITE_TIME,           //   ul_int         "
+    DISKSTATS_IO_TIME,              //   ul_int         "
+    DISKSTATS_WEIGHTED_TIME,        //   ul_int         "
+
+    DISKSTATS_IO_INPROGRESS,        //    s_int         "
+
+    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         "
+    DISKSTATS_DELTA_WRITES,         //    s_int         "
+    DISKSTATS_DELTA_WRITES_MERGED,  //    s_int         "
+    DISKSTATS_DELTA_WRITE_SECTORS,  //    s_int         "
+    DISKSTATS_DELTA_WRITE_TIME,     //    s_int         "
+    DISKSTATS_DELTA_IO_TIME,        //    s_int         "
+    DISKSTATS_DELTA_WEIGHTED_TIME   //    s_int         "
 };
 
 enum diskstats_sort_order {
index 12baaa3d95cf69f73fc9bb1f02f2bf8a14199895..9e03c02744c79d338c91bc47c36ee9c2bc2176f7 100644 (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)
index 092301944232e3f024cbfc0cb4234184aba62677..e7fffd586a40cd879f54e386df0ca7a928f45420 100644 (file)
@@ -31,115 +31,135 @@ enum meminfo_item {
     */
                                    //  returns        origin, see proc(5)
                                    //  -------        -------------------
-    MEMINFO_MEM_ACTIVE,            //  ul_int         /proc/meminfo
-    MEMINFO_MEM_ACTIVE_ANON,       //  ul_int          "
-    MEMINFO_MEM_ACTIVE_FILE,       //  ul_int          "
-    MEMINFO_MEM_ANON,              //  ul_int          "
-    MEMINFO_MEM_AVAILABLE,         //  ul_int          "
-    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_COMMITTED_AS,      //  ul_int          "
-    MEMINFO_MEM_HARD_CORRUPTED,    //  ul_int          "
-    MEMINFO_MEM_DIRTY,             //  ul_int          "
-    MEMINFO_MEM_FREE,              //  ul_int          "
-    MEMINFO_MEM_HUGE_ANON,         //  ul_int          "
-    MEMINFO_MEM_HUGE_FREE,         //  ul_int          "
-    MEMINFO_MEM_HUGE_RSVD,         //  ul_int          "
-    MEMINFO_MEM_HUGE_SIZE,         //  ul_int          "
-    MEMINFO_MEM_HUGE_SURPLUS,      //  ul_int          "
-    MEMINFO_MEM_HUGE_TOTAL,        //  ul_int          "
-    MEMINFO_MEM_INACTIVE,          //  ul_int          "
-    MEMINFO_MEM_INACTIVE_ANON,     //  ul_int          "
-    MEMINFO_MEM_INACTIVE_FILE,     //  ul_int          "
-    MEMINFO_MEM_KERNEL_RECLAIM,    //  ul_int          "
-    MEMINFO_MEM_KERNEL_STACK,      //  ul_int          "
-    MEMINFO_MEM_LOCKED,            //  ul_int          "
-    MEMINFO_MEM_MAPPED,            //  ul_int          "
-    MEMINFO_MEM_MAP_COPY,          //  ul_int          "
-    MEMINFO_MEM_NFS_UNSTABLE,      //  ul_int          "
-    MEMINFO_MEM_PAGE_TABLES,       //  ul_int          "
-    MEMINFO_MEM_QUICKLISTS,        //  ul_int          "
-    MEMINFO_MEM_SHARED,            //  ul_int          "
-    MEMINFO_MEM_SHMEM_HUGE,        //  ul_int          "
-    MEMINFO_MEM_SHMEM_HUGE_MAP,    //  ul_int          "
-    MEMINFO_MEM_SLAB,              //  ul_int          "
-    MEMINFO_MEM_SLAB_RECLAIM,      //  ul_int          "
-    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_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_ANON,     //   s_int          "
-    MEMINFO_DELTA_ACTIVE_FILE,     //   s_int          "
-    MEMINFO_DELTA_ANON,            //   s_int          "
-    MEMINFO_DELTA_AVAILABLE,       //   s_int          "
-    MEMINFO_DELTA_BOUNCE,          //   s_int          "
-    MEMINFO_DELTA_BUFFERS,         //   s_int          "
-    MEMINFO_DELTA_CACHED,          //   s_int          "
-    MEMINFO_DELTA_CACHED_ALL,      //   s_int          "
-    MEMINFO_DELTA_COMMIT_LIMIT,    //   s_int          "
-    MEMINFO_DELTA_COMMITTED_AS,    //   s_int          "
-    MEMINFO_DELTA_HARD_CORRUPTED,  //   s_int          "
-    MEMINFO_DELTA_DIRTY,           //   s_int          "
-    MEMINFO_DELTA_FREE,            //   s_int          "
-    MEMINFO_DELTA_HUGE_ANON,       //   s_int          "
-    MEMINFO_DELTA_HUGE_FREE,       //   s_int          "
-    MEMINFO_DELTA_HUGE_RSVD,       //   s_int          "
-    MEMINFO_DELTA_HUGE_SIZE,       //   s_int          "
-    MEMINFO_DELTA_HUGE_SURPLUS,    //   s_int          "
-    MEMINFO_DELTA_HUGE_TOTAL,      //   s_int          "
-    MEMINFO_DELTA_INACTIVE,        //   s_int          "
-    MEMINFO_DELTA_INACTIVE_ANON,   //   s_int          "
-    MEMINFO_DELTA_INACTIVE_FILE,   //   s_int          "
-    MEMINFO_DELTA_KERNEL_RECLAIM,  //   s_int          "
-    MEMINFO_DELTA_KERNEL_STACK,    //   s_int          "
-    MEMINFO_DELTA_LOCKED,          //   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_QUICKLISTS,      //   s_int          "
-    MEMINFO_DELTA_SHARED,          //   s_int          "
-    MEMINFO_DELTA_SHMEM_HUGE,      //   s_int          "
-    MEMINFO_DELTA_SHMEM_HUGE_MAP,  //   s_int          "
-    MEMINFO_DELTA_SLAB,            //   s_int          "
-    MEMINFO_DELTA_SLAB_RECLAIM,    //   s_int          "
-    MEMINFO_DELTA_SLAB_UNRECLAIM,  //   s_int          "
-    MEMINFO_DELTA_TOTAL,           //   s_int          "
-    MEMINFO_DELTA_UNEVICTABLE,     //   s_int          "
-    MEMINFO_DELTA_USED,            //   s_int          "
-    MEMINFO_DELTA_VM_ALLOC_CHUNK,  //   s_int          "
-    MEMINFO_DELTA_VM_ALLOC_TOTAL,  //   s_int          "
-    MEMINFO_DELTA_VM_ALLOC_USED,   //   s_int          "
-    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_FREE,             //  ul_int          "
-    MEMINFO_SWAP_TOTAL,            //  ul_int          "
-    MEMINFO_SWAP_USED,             //  ul_int          "
-
-    MEMINFO_SWAP_DELTA_CACHED,     //   s_int         dervied from above
-    MEMINFO_SWAP_DELTA_FREE,       //   s_int          "
-    MEMINFO_SWAP_DELTA_TOTAL,      //   s_int          "
-    MEMINFO_SWAP_DELTA_USED        //   s_int          "
+    MEMINFO_MEM_ACTIVE,            //   ul_int        /proc/meminfo
+    MEMINFO_MEM_ACTIVE_ANON,       //   ul_int         "
+    MEMINFO_MEM_ACTIVE_FILE,       //   ul_int         "
+    MEMINFO_MEM_ANON,              //   ul_int         "
+    MEMINFO_MEM_AVAILABLE,         //   ul_int         "
+    MEMINFO_MEM_BOUNCE,            //   ul_int         "
+    MEMINFO_MEM_BUFFERS,           //   ul_int         "
+    MEMINFO_MEM_CACHED,            //   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_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         "
+    MEMINFO_MEM_HUGE_SIZE,         //   ul_int         "
+    MEMINFO_MEM_HUGE_SURPLUS,      //   ul_int         "
+    MEMINFO_MEM_HUGE_TOTAL,        //   ul_int         "
+    MEMINFO_MEM_INACTIVE,          //   ul_int         "
+    MEMINFO_MEM_INACTIVE_ANON,     //   ul_int         "
+    MEMINFO_MEM_INACTIVE_FILE,     //   ul_int         "
+    MEMINFO_MEM_KERNEL_RECLAIM,    //   ul_int         "
+    MEMINFO_MEM_KERNEL_STACK,      //   ul_int         "
+    MEMINFO_MEM_LOCKED,            //   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         "
+    MEMINFO_MEM_SHMEM_HUGE_MAP,    //   ul_int         "
+    MEMINFO_MEM_SLAB,              //   ul_int         "
+    MEMINFO_MEM_SLAB_RECLAIM,      //   ul_int         "
+    MEMINFO_MEM_SLAB_UNRECLAIM,    //   ul_int         "
+    MEMINFO_MEM_TOTAL,             //   ul_int         "
+    MEMINFO_MEM_UNEVICTABLE,       //   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        derived from above
+    MEMINFO_DELTA_ACTIVE_ANON,     //    s_int         "
+    MEMINFO_DELTA_ACTIVE_FILE,     //    s_int         "
+    MEMINFO_DELTA_ANON,            //    s_int         "
+    MEMINFO_DELTA_AVAILABLE,       //    s_int         "
+    MEMINFO_DELTA_BOUNCE,          //    s_int         "
+    MEMINFO_DELTA_BUFFERS,         //    s_int         "
+    MEMINFO_DELTA_CACHED,          //    s_int         "
+    MEMINFO_DELTA_CACHED_ALL,      //    s_int         "
+    MEMINFO_DELTA_CMA_FREE,        //    s_int         "
+    MEMINFO_DELTA_CMA_TOTAL,       //    s_int         "
+    MEMINFO_DELTA_COMMITTED_AS,    //    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         "
+    MEMINFO_DELTA_HUGE_SIZE,       //    s_int         "
+    MEMINFO_DELTA_HUGE_SURPLUS,    //    s_int         "
+    MEMINFO_DELTA_HUGE_TOTAL,      //    s_int         "
+    MEMINFO_DELTA_INACTIVE,        //    s_int         "
+    MEMINFO_DELTA_INACTIVE_ANON,   //    s_int         "
+    MEMINFO_DELTA_INACTIVE_FILE,   //    s_int         "
+    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         "
+    MEMINFO_DELTA_SHMEM_HUGE_MAP,  //    s_int         "
+    MEMINFO_DELTA_SLAB,            //    s_int         "
+    MEMINFO_DELTA_SLAB_RECLAIM,    //    s_int         "
+    MEMINFO_DELTA_SLAB_UNRECLAIM,  //    s_int         "
+    MEMINFO_DELTA_TOTAL,           //    s_int         "
+    MEMINFO_DELTA_UNEVICTABLE,     //    s_int         "
+    MEMINFO_DELTA_USED,            //    s_int         "
+    MEMINFO_DELTA_VM_ALLOC_CHUNK,  //    s_int         "
+    MEMINFO_DELTA_VM_ALLOC_TOTAL,  //    s_int         "
+    MEMINFO_DELTA_VM_ALLOC_USED,   //    s_int         "
+    MEMINFO_DELTA_WRITEBACK,       //    s_int         "
+    MEMINFO_DELTA_WRITEBACK_TMP,   //    s_int         "
+
+    MEMINFO_SWAP_CACHED,           //   ul_int        /proc/meminfo
+    MEMINFO_SWAP_FREE,             //   ul_int         "
+    MEMINFO_SWAP_TOTAL,            //   ul_int         "
+    MEMINFO_SWAP_USED,             //   ul_int        derived from SWAP_TOTAL - SWAP_FREE
+
+    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         "
 };
 
 
index fe643bf110d3ba1f588119ce846ca971a40443ab..ae439347f22426f9e834ff9224d94757089527f9 100644 (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)     },
index 72a80f5775eb26bfdceaf1fb73dc50c7618932b0..e8f7bcd78351bfed8a9bbd745e0998de3745285a 100644 (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
 };
 
index d1c4f98f8fc942ce70e39f76247e62381e1005b1..92a838878c7507a0eafe9bb61dc2c638f8a5111b 100644 (file)
    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,42 +148,42 @@ 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)
-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_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)
+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_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)
 
 #undef setDECL
 #undef REG_set
@@ -252,55 +252,55 @@ static struct {
     QSR_t sortfunc;              // sort cmp func for a specific type
     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(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_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) },
+/*  setsfunc                        sortfunc     type2str
+    ------------------------------  -----------  ---------- */
+  { RS(noop),                       QS(noop),    TS_noop    },
+  { RS(extra),                      QS(ul_int),  TS_noop    },
+
+  { 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_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)  },
 
  // dummy entry corresponding to SLABINFO_logical_end ...
-  { NULL,                         NULL,        NULL       }
+  { 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.
index 944887169d9878e39dc7ed46ebe14023609d395f..8344c570661cd7b279aecf5d12c32e4f8e56a94c 100644 (file)
@@ -28,46 +28,46 @@ extern "C "{
 #endif
 
 enum slabinfo_item {
-    SLABINFO_noop,            //       ( never altered )
-    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          "
-    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_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          "
+    SLABINFO_noop,              //        ( never altered )
+    SLABINFO_extra,             //        ( reset to zero )
+                                //  returns        origin, see proc(5)
+                                //  -------        -------------------
+    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_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         "
 };
 
 enum slabinfo_sort_order {
index f2cb895f36079276f0f6b098308837cd81417fee..9da05fe0d86eb19e94edc714e8c65ab9517b3a49 100644 (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         "
index f78f94fe00e5159da86e3f724c0033a746f2c341..6c3b02ff19182f206ea4422f3cf22ca63e59f7c9 100644 (file)
  *  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,243 +227,285 @@ struct vmstat_info {
 setDECL(noop)   { (void)R; (void)H; }
 setDECL(extra)  { (void)R; (void)H; }
 
-REG_set(ALLOCSTALL,                           allocstall)
-REG_set(BALLOON_DEFLATE,                      balloon_deflate)
-REG_set(BALLOON_INFLATE,                      balloon_inflate)
-REG_set(BALLOON_MIGRATE,                      balloon_migrate)
-REG_set(COMPACT_FAIL,                         compact_fail)
-REG_set(COMPACT_FREE_SCANNED,                 compact_free_scanned)
-REG_set(COMPACT_ISOLATED,                     compact_isolated)
-REG_set(COMPACT_MIGRATE_SCANNED,              compact_migrate_scanned)
-REG_set(COMPACT_STALL,                        compact_stall)
-REG_set(COMPACT_SUCCESS,                      compact_success)
-REG_set(DROP_PAGECACHE,                       drop_pagecache)
-REG_set(DROP_SLAB,                            drop_slab)
-REG_set(HTLB_BUDDY_ALLOC_FAIL,                htlb_buddy_alloc_fail)
-REG_set(HTLB_BUDDY_ALLOC_SUCCESS,             htlb_buddy_alloc_success)
-REG_set(KSWAPD_HIGH_WMARK_HIT_QUICKLY,        kswapd_high_wmark_hit_quickly)
-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)
-REG_set(NR_DIRTIED,                           nr_dirtied)
-REG_set(NR_DIRTY,                             nr_dirty)
-REG_set(NR_DIRTY_BACKGROUND_THRESHOLD,        nr_dirty_background_threshold)
-REG_set(NR_DIRTY_THRESHOLD,                   nr_dirty_threshold)
-REG_set(NR_FILE_PAGES,                        nr_file_pages)
-REG_set(NR_FREE_CMA,                          nr_free_cma)
-REG_set(NR_FREE_PAGES,                        nr_free_pages)
-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_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_SLAB_RECLAIMABLE,                  nr_slab_reclaimable)
-REG_set(NR_SLAB_UNRECLAIMABLE,                nr_slab_unreclaimable)
-REG_set(NR_UNEVICTABLE,                       nr_unevictable)
-REG_set(NR_UNSTABLE,                          nr_unstable)
-REG_set(NR_VMSCAN_IMMEDIATE_RECLAIM,          nr_vmscan_immediate_reclaim)
-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(NUMA_FOREIGN,                         numa_foreign)
-REG_set(NUMA_HINT_FAULTS,                     numa_hint_faults)
-REG_set(NUMA_HINT_FAULTS_LOCAL,               numa_hint_faults_local)
-REG_set(NUMA_HIT,                             numa_hit)
-REG_set(NUMA_HUGE_PTE_UPDATES,                numa_huge_pte_updates)
-REG_set(NUMA_INTERLEAVE,                      numa_interleave)
-REG_set(NUMA_LOCAL,                           numa_local)
-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(PAGEOUTRUN,                           pageoutrun)
-REG_set(PGACTIVATE,                           pgactivate)
-REG_set(PGALLOC_DMA,                          pgalloc_dma)
-REG_set(PGALLOC_DMA32,                        pgalloc_dma32)
-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(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(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_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(PSWPIN,                               pswpin)
-REG_set(PSWPOUT,                              pswpout)
-REG_set(SLABS_SCANNED,                        slabs_scanned)
-REG_set(THP_COLLAPSE_ALLOC,                   thp_collapse_alloc)
-REG_set(THP_COLLAPSE_ALLOC_FAILED,            thp_collapse_alloc_failed)
-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_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)
-REG_set(UNEVICTABLE_PGS_CULLED,               unevictable_pgs_culled)
-REG_set(UNEVICTABLE_PGS_MLOCKED,              unevictable_pgs_mlocked)
-REG_set(UNEVICTABLE_PGS_MUNLOCKED,            unevictable_pgs_munlocked)
-REG_set(UNEVICTABLE_PGS_RESCUED,              unevictable_pgs_rescued)
-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_REFAULT,                   workingset_refault)
-REG_set(ZONE_RECLAIM_FAILED,                  zone_reclaim_failed)
-
-HST_set(DELTA_ALLOCSTALL,                     allocstall)
-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_FAIL,                   compact_fail)
-HST_set(DELTA_COMPACT_FREE_SCANNED,           compact_free_scanned)
-HST_set(DELTA_COMPACT_ISOLATED,               compact_isolated)
-HST_set(DELTA_COMPACT_MIGRATE_SCANNED,        compact_migrate_scanned)
-HST_set(DELTA_COMPACT_STALL,                  compact_stall)
-HST_set(DELTA_COMPACT_SUCCESS,                compact_success)
-HST_set(DELTA_DROP_PAGECACHE,                 drop_pagecache)
-HST_set(DELTA_DROP_SLAB,                      drop_slab)
-HST_set(DELTA_HTLB_BUDDY_ALLOC_FAIL,          htlb_buddy_alloc_fail)
-HST_set(DELTA_HTLB_BUDDY_ALLOC_SUCCESS,       htlb_buddy_alloc_success)
-HST_set(DELTA_KSWAPD_HIGH_WMARK_HIT_QUICKLY,  kswapd_high_wmark_hit_quickly)
-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)
-HST_set(DELTA_NR_DIRTIED,                     nr_dirtied)
-HST_set(DELTA_NR_DIRTY,                       nr_dirty)
-HST_set(DELTA_NR_DIRTY_BACKGROUND_THRESHOLD,  nr_dirty_background_threshold)
-HST_set(DELTA_NR_DIRTY_THRESHOLD,             nr_dirty_threshold)
-HST_set(DELTA_NR_FILE_PAGES,                  nr_file_pages)
-HST_set(DELTA_NR_FREE_CMA,                    nr_free_cma)
-HST_set(DELTA_NR_FREE_PAGES,                  nr_free_pages)
-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_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_SLAB_RECLAIMABLE,            nr_slab_reclaimable)
-HST_set(DELTA_NR_SLAB_UNRECLAIMABLE,          nr_slab_unreclaimable)
-HST_set(DELTA_NR_UNEVICTABLE,                 nr_unevictable)
-HST_set(DELTA_NR_UNSTABLE,                    nr_unstable)
-HST_set(DELTA_NR_VMSCAN_IMMEDIATE_RECLAIM,    nr_vmscan_immediate_reclaim)
-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_NUMA_FOREIGN,                   numa_foreign)
-HST_set(DELTA_NUMA_HINT_FAULTS,               numa_hint_faults)
-HST_set(DELTA_NUMA_HINT_FAULTS_LOCAL,         numa_hint_faults_local)
-HST_set(DELTA_NUMA_HIT,                       numa_hit)
-HST_set(DELTA_NUMA_HUGE_PTE_UPDATES,          numa_huge_pte_updates)
-HST_set(DELTA_NUMA_INTERLEAVE,                numa_interleave)
-HST_set(DELTA_NUMA_LOCAL,                     numa_local)
-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_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_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_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_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_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_PSWPIN,                         pswpin)
-HST_set(DELTA_PSWPOUT,                        pswpout)
-HST_set(DELTA_SLABS_SCANNED,                  slabs_scanned)
-HST_set(DELTA_THP_COLLAPSE_ALLOC,             thp_collapse_alloc)
-HST_set(DELTA_THP_COLLAPSE_ALLOC_FAILED,      thp_collapse_alloc_failed)
-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_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)
-HST_set(DELTA_UNEVICTABLE_PGS_CULLED,         unevictable_pgs_culled)
-HST_set(DELTA_UNEVICTABLE_PGS_MLOCKED,        unevictable_pgs_mlocked)
-HST_set(DELTA_UNEVICTABLE_PGS_MUNLOCKED,      unevictable_pgs_munlocked)
-HST_set(DELTA_UNEVICTABLE_PGS_RESCUED,        unevictable_pgs_rescued)
-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_REFAULT,             workingset_refault)
-HST_set(DELTA_ZONE_RECLAIM_FAILED,            zone_reclaim_failed)
+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)
+REG_set(COMPACT_MIGRATE_SCANNED,               compact_migrate_scanned)
+REG_set(COMPACT_STALL,                         compact_stall)
+REG_set(COMPACT_SUCCESS,                       compact_success)
+REG_set(DROP_PAGECACHE,                        drop_pagecache)
+REG_set(DROP_SLAB,                             drop_slab)
+REG_set(HTLB_BUDDY_ALLOC_FAIL,                 htlb_buddy_alloc_fail)
+REG_set(HTLB_BUDDY_ALLOC_SUCCESS,              htlb_buddy_alloc_success)
+REG_set(KSWAPD_HIGH_WMARK_HIT_QUICKLY,         kswapd_high_wmark_hit_quickly)
+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_ANON_PAGES,                         nr_anon_pages)
+REG_set(NR_ANON_TRANSPARENT_HUGEPAGES,         nr_anon_transparent_hugepages)
+REG_set(NR_BOUNCE,                             nr_bounce)
+REG_set(NR_DIRTIED,                            nr_dirtied)
+REG_set(NR_DIRTY,                              nr_dirty)
+REG_set(NR_DIRTY_BACKGROUND_THRESHOLD,         nr_dirty_background_threshold)
+REG_set(NR_DIRTY_THRESHOLD,                    nr_dirty_threshold)
+REG_set(NR_FILE_PAGES,                         nr_file_pages)
+REG_set(NR_FREE_CMA,                           nr_free_cma)
+REG_set(NR_FREE_PAGES,                         nr_free_pages)
+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_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)
+REG_set(NR_UNSTABLE,                           nr_unstable)
+REG_set(NR_VMSCAN_IMMEDIATE_RECLAIM,           nr_vmscan_immediate_reclaim)
+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)
+REG_set(NUMA_HIT,                              numa_hit)
+REG_set(NUMA_HUGE_PTE_UPDATES,                 numa_huge_pte_updates)
+REG_set(NUMA_INTERLEAVE,                       numa_interleave)
+REG_set(NUMA_LOCAL,                            numa_local)
+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,                              pgrefill)
+REG_set(PGROTATED,                             pgrotated)
+REG_set(PGSCAN_DIRECT,                         pgscan_direct)
+REG_set(PGSCAN_DIRECT_THROTTLE,                pgscan_direct_throttle)
+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_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)
+REG_set(UNEVICTABLE_PGS_CULLED,                unevictable_pgs_culled)
+REG_set(UNEVICTABLE_PGS_MLOCKED,               unevictable_pgs_mlocked)
+REG_set(UNEVICTABLE_PGS_MUNLOCKED,             unevictable_pgs_munlocked)
+REG_set(UNEVICTABLE_PGS_RESCUED,               unevictable_pgs_rescued)
+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_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)
+HST_set(DELTA_COMPACT_MIGRATE_SCANNED,         compact_migrate_scanned)
+HST_set(DELTA_COMPACT_STALL,                   compact_stall)
+HST_set(DELTA_COMPACT_SUCCESS,                 compact_success)
+HST_set(DELTA_DROP_PAGECACHE,                  drop_pagecache)
+HST_set(DELTA_DROP_SLAB,                       drop_slab)
+HST_set(DELTA_HTLB_BUDDY_ALLOC_FAIL,           htlb_buddy_alloc_fail)
+HST_set(DELTA_HTLB_BUDDY_ALLOC_SUCCESS,        htlb_buddy_alloc_success)
+HST_set(DELTA_KSWAPD_HIGH_WMARK_HIT_QUICKLY,   kswapd_high_wmark_hit_quickly)
+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_ANON_PAGES,                   nr_anon_pages)
+HST_set(DELTA_NR_ANON_TRANSPARENT_HUGEPAGES,   nr_anon_transparent_hugepages)
+HST_set(DELTA_NR_BOUNCE,                       nr_bounce)
+HST_set(DELTA_NR_DIRTIED,                      nr_dirtied)
+HST_set(DELTA_NR_DIRTY,                        nr_dirty)
+HST_set(DELTA_NR_DIRTY_BACKGROUND_THRESHOLD,   nr_dirty_background_threshold)
+HST_set(DELTA_NR_DIRTY_THRESHOLD,              nr_dirty_threshold)
+HST_set(DELTA_NR_FILE_PAGES,                   nr_file_pages)
+HST_set(DELTA_NR_FREE_CMA,                     nr_free_cma)
+HST_set(DELTA_NR_FREE_PAGES,                   nr_free_pages)
+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_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)
+HST_set(DELTA_NR_UNSTABLE,                     nr_unstable)
+HST_set(DELTA_NR_VMSCAN_IMMEDIATE_RECLAIM,     nr_vmscan_immediate_reclaim)
+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)
+HST_set(DELTA_NUMA_HIT,                        numa_hit)
+HST_set(DELTA_NUMA_HUGE_PTE_UPDATES,           numa_huge_pte_updates)
+HST_set(DELTA_NUMA_INTERLEAVE,                 numa_interleave)
+HST_set(DELTA_NUMA_LOCAL,                      numa_local)
+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,                        pgrefill)
+HST_set(DELTA_PGROTATED,                       pgrotated)
+HST_set(DELTA_PGSCAN_DIRECT,                   pgscan_direct)
+HST_set(DELTA_PGSCAN_DIRECT_THROTTLE,          pgscan_direct_throttle)
+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_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)
+HST_set(DELTA_UNEVICTABLE_PGS_CULLED,          unevictable_pgs_culled)
+HST_set(DELTA_UNEVICTABLE_PGS_MLOCKED,         unevictable_pgs_mlocked)
+HST_set(DELTA_UNEVICTABLE_PGS_MUNLOCKED,       unevictable_pgs_munlocked)
+HST_set(DELTA_UNEVICTABLE_PGS_RESCUED,         unevictable_pgs_rescued)
+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
 #undef REG_set
@@ -465,251 +528,293 @@ static struct {
     SET_t setsfunc;              // the actual result setting routine
     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(BALLOON_DEFLATE),                      TS(ul_int) },
-  { RS(BALLOON_INFLATE),                      TS(ul_int) },
-  { RS(BALLOON_MIGRATE),                      TS(ul_int) },
-  { RS(COMPACT_FAIL),                         TS(ul_int) },
-  { RS(COMPACT_FREE_SCANNED),                 TS(ul_int) },
-  { RS(COMPACT_ISOLATED),                     TS(ul_int) },
-  { RS(COMPACT_MIGRATE_SCANNED),              TS(ul_int) },
-  { RS(COMPACT_STALL),                        TS(ul_int) },
-  { RS(COMPACT_SUCCESS),                      TS(ul_int) },
-  { RS(DROP_PAGECACHE),                       TS(ul_int) },
-  { RS(DROP_SLAB),                            TS(ul_int) },
-  { RS(HTLB_BUDDY_ALLOC_FAIL),                TS(ul_int) },
-  { RS(HTLB_BUDDY_ALLOC_SUCCESS),             TS(ul_int) },
-  { RS(KSWAPD_HIGH_WMARK_HIT_QUICKLY),        TS(ul_int) },
-  { RS(KSWAPD_INODESTEAL),                    TS(ul_int) },
-  { 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) },
-  { RS(NR_DIRTIED),                           TS(ul_int) },
-  { RS(NR_DIRTY),                             TS(ul_int) },
-  { RS(NR_DIRTY_BACKGROUND_THRESHOLD),        TS(ul_int) },
-  { RS(NR_DIRTY_THRESHOLD),                   TS(ul_int) },
-  { RS(NR_FILE_PAGES),                        TS(ul_int) },
-  { RS(NR_FREE_CMA),                          TS(ul_int) },
-  { RS(NR_FREE_PAGES),                        TS(ul_int) },
-  { RS(NR_INACTIVE_ANON),                     TS(ul_int) },
-  { RS(NR_INACTIVE_FILE),                     TS(ul_int) },
-  { RS(NR_ISOLATED_ANON),                     TS(ul_int) },
-  { RS(NR_ISOLATED_FILE),                     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_SLAB_RECLAIMABLE),                  TS(ul_int) },
-  { RS(NR_SLAB_UNRECLAIMABLE),                TS(ul_int) },
-  { RS(NR_UNEVICTABLE),                       TS(ul_int) },
-  { RS(NR_UNSTABLE),                          TS(ul_int) },
-  { RS(NR_VMSCAN_IMMEDIATE_RECLAIM),          TS(ul_int) },
-  { RS(NR_VMSCAN_WRITE),                      TS(ul_int) },
-  { RS(NR_WRITEBACK),                         TS(ul_int) },
-  { RS(NR_WRITEBACK_TEMP),                    TS(ul_int) },
-  { RS(NR_WRITTEN),                           TS(ul_int) },
-  { RS(NUMA_FOREIGN),                         TS(ul_int) },
-  { RS(NUMA_HINT_FAULTS),                     TS(ul_int) },
-  { RS(NUMA_HINT_FAULTS_LOCAL),               TS(ul_int) },
-  { RS(NUMA_HIT),                             TS(ul_int) },
-  { RS(NUMA_HUGE_PTE_UPDATES),                TS(ul_int) },
-  { RS(NUMA_INTERLEAVE),                      TS(ul_int) },
-  { RS(NUMA_LOCAL),                           TS(ul_int) },
-  { RS(NUMA_MISS),                            TS(ul_int) },
-  { RS(NUMA_OTHER),                           TS(ul_int) },
-  { RS(NUMA_PAGES_MIGRATED),                  TS(ul_int) },
-  { RS(NUMA_PTE_UPDATES),                     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_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(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(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_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(PSWPIN),                               TS(ul_int) },
-  { RS(PSWPOUT),                              TS(ul_int) },
-  { RS(SLABS_SCANNED),                        TS(ul_int) },
-  { RS(THP_COLLAPSE_ALLOC),                   TS(ul_int) },
-  { RS(THP_COLLAPSE_ALLOC_FAILED),            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_ZERO_PAGE_ALLOC),                  TS(ul_int) },
-  { RS(THP_ZERO_PAGE_ALLOC_FAILED),           TS(ul_int) },
-  { RS(UNEVICTABLE_PGS_CLEARED),              TS(ul_int) },
-  { RS(UNEVICTABLE_PGS_CULLED),               TS(ul_int) },
-  { RS(UNEVICTABLE_PGS_MLOCKED),              TS(ul_int) },
-  { RS(UNEVICTABLE_PGS_MUNLOCKED),            TS(ul_int) },
-  { RS(UNEVICTABLE_PGS_RESCUED),              TS(ul_int) },
-  { RS(UNEVICTABLE_PGS_SCANNED),              TS(ul_int) },
-  { RS(UNEVICTABLE_PGS_STRANDED),             TS(ul_int) },
-  { RS(WORKINGSET_ACTIVATE),                  TS(ul_int) },
-  { RS(WORKINGSET_NODERECLAIM),               TS(ul_int) },
-  { RS(WORKINGSET_REFAULT),                   TS(ul_int) },
-  { RS(ZONE_RECLAIM_FAILED),                  TS(ul_int) },
-
-  { RS(DELTA_ALLOCSTALL),                     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_FAIL),                   TS(sl_int) },
-  { RS(DELTA_COMPACT_FREE_SCANNED),           TS(sl_int) },
-  { RS(DELTA_COMPACT_ISOLATED),               TS(sl_int) },
-  { RS(DELTA_COMPACT_MIGRATE_SCANNED),        TS(sl_int) },
-  { RS(DELTA_COMPACT_STALL),                  TS(sl_int) },
-  { RS(DELTA_COMPACT_SUCCESS),                TS(sl_int) },
-  { RS(DELTA_DROP_PAGECACHE),                 TS(sl_int) },
-  { RS(DELTA_DROP_SLAB),                      TS(sl_int) },
-  { RS(DELTA_HTLB_BUDDY_ALLOC_FAIL),          TS(sl_int) },
-  { RS(DELTA_HTLB_BUDDY_ALLOC_SUCCESS),       TS(sl_int) },
-  { RS(DELTA_KSWAPD_HIGH_WMARK_HIT_QUICKLY),  TS(sl_int) },
-  { RS(DELTA_KSWAPD_INODESTEAL),              TS(sl_int) },
-  { 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) },
-  { RS(DELTA_NR_DIRTIED),                     TS(sl_int) },
-  { RS(DELTA_NR_DIRTY),                       TS(sl_int) },
-  { RS(DELTA_NR_DIRTY_BACKGROUND_THRESHOLD),  TS(sl_int) },
-  { RS(DELTA_NR_DIRTY_THRESHOLD),             TS(sl_int) },
-  { RS(DELTA_NR_FILE_PAGES),                  TS(sl_int) },
-  { RS(DELTA_NR_FREE_CMA),                    TS(sl_int) },
-  { RS(DELTA_NR_FREE_PAGES),                  TS(sl_int) },
-  { RS(DELTA_NR_INACTIVE_ANON),               TS(sl_int) },
-  { 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_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_SLAB_RECLAIMABLE),            TS(sl_int) },
-  { RS(DELTA_NR_SLAB_UNRECLAIMABLE),          TS(sl_int) },
-  { RS(DELTA_NR_UNEVICTABLE),                 TS(sl_int) },
-  { RS(DELTA_NR_UNSTABLE),                    TS(sl_int) },
-  { RS(DELTA_NR_VMSCAN_IMMEDIATE_RECLAIM),    TS(sl_int) },
-  { RS(DELTA_NR_VMSCAN_WRITE),                TS(sl_int) },
-  { RS(DELTA_NR_WRITEBACK),                   TS(sl_int) },
-  { RS(DELTA_NR_WRITEBACK_TEMP),              TS(sl_int) },
-  { RS(DELTA_NR_WRITTEN),                     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) },
-  { RS(DELTA_NUMA_HIT),                       TS(sl_int) },
-  { RS(DELTA_NUMA_HUGE_PTE_UPDATES),          TS(sl_int) },
-  { RS(DELTA_NUMA_INTERLEAVE),                TS(sl_int) },
-  { RS(DELTA_NUMA_LOCAL),                     TS(sl_int) },
-  { RS(DELTA_NUMA_MISS),                      TS(sl_int) },
-  { 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_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_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_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_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_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_PSWPIN),                         TS(sl_int) },
-  { RS(DELTA_PSWPOUT),                        TS(sl_int) },
-  { RS(DELTA_SLABS_SCANNED),                  TS(sl_int) },
-  { RS(DELTA_THP_COLLAPSE_ALLOC),             TS(sl_int) },
-  { RS(DELTA_THP_COLLAPSE_ALLOC_FAILED),      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_ZERO_PAGE_ALLOC),            TS(sl_int) },
-  { RS(DELTA_THP_ZERO_PAGE_ALLOC_FAILED),     TS(sl_int) },
-  { RS(DELTA_UNEVICTABLE_PGS_CLEARED),        TS(sl_int) },
-  { RS(DELTA_UNEVICTABLE_PGS_CULLED),         TS(sl_int) },
-  { RS(DELTA_UNEVICTABLE_PGS_MLOCKED),        TS(sl_int) },
-  { RS(DELTA_UNEVICTABLE_PGS_MUNLOCKED),      TS(sl_int) },
-  { RS(DELTA_UNEVICTABLE_PGS_RESCUED),        TS(sl_int) },
-  { RS(DELTA_UNEVICTABLE_PGS_SCANNED),        TS(sl_int) },
-  { 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_REFAULT),             TS(sl_int) },
-  { RS(DELTA_ZONE_RECLAIM_FAILED),            TS(sl_int) },
+/*  setsfunc                                   type2str
+    -----------------------------------------  ---------- */
+  { RS(noop),                                  TS_noop    },
+  { RS(extra),                                 TS_noop    },
+
+  { 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) },
+  { RS(COMPACT_MIGRATE_SCANNED),               TS(ul_int) },
+  { RS(COMPACT_STALL),                         TS(ul_int) },
+  { RS(COMPACT_SUCCESS),                       TS(ul_int) },
+  { RS(DROP_PAGECACHE),                        TS(ul_int) },
+  { RS(DROP_SLAB),                             TS(ul_int) },
+  { RS(HTLB_BUDDY_ALLOC_FAIL),                 TS(ul_int) },
+  { RS(HTLB_BUDDY_ALLOC_SUCCESS),              TS(ul_int) },
+  { RS(KSWAPD_HIGH_WMARK_HIT_QUICKLY),         TS(ul_int) },
+  { RS(KSWAPD_INODESTEAL),                     TS(ul_int) },
+  { 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_ANON_PAGES),                         TS(ul_int) },
+  { RS(NR_ANON_TRANSPARENT_HUGEPAGES),         TS(ul_int) },
+  { RS(NR_BOUNCE),                             TS(ul_int) },
+  { RS(NR_DIRTIED),                            TS(ul_int) },
+  { RS(NR_DIRTY),                              TS(ul_int) },
+  { RS(NR_DIRTY_BACKGROUND_THRESHOLD),         TS(ul_int) },
+  { RS(NR_DIRTY_THRESHOLD),                    TS(ul_int) },
+  { RS(NR_FILE_PAGES),                         TS(ul_int) },
+  { RS(NR_FREE_CMA),                           TS(ul_int) },
+  { RS(NR_FREE_PAGES),                         TS(ul_int) },
+  { RS(NR_INACTIVE_ANON),                      TS(ul_int) },
+  { 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_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) },
+  { RS(NR_UNSTABLE),                           TS(ul_int) },
+  { RS(NR_VMSCAN_IMMEDIATE_RECLAIM),           TS(ul_int) },
+  { RS(NR_VMSCAN_WRITE),                       TS(ul_int) },
+  { 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) },
+  { RS(NUMA_HIT),                              TS(ul_int) },
+  { RS(NUMA_HUGE_PTE_UPDATES),                 TS(ul_int) },
+  { RS(NUMA_INTERLEAVE),                       TS(ul_int) },
+  { RS(NUMA_LOCAL),                            TS(ul_int) },
+  { RS(NUMA_MISS),                             TS(ul_int) },
+  { 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),                              TS(ul_int) },
+  { RS(PGROTATED),                             TS(ul_int) },
+  { RS(PGSCAN_DIRECT),                         TS(ul_int) },
+  { RS(PGSCAN_DIRECT_THROTTLE),                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_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) },
+  { RS(UNEVICTABLE_PGS_CULLED),                TS(ul_int) },
+  { RS(UNEVICTABLE_PGS_MLOCKED),               TS(ul_int) },
+  { RS(UNEVICTABLE_PGS_MUNLOCKED),             TS(ul_int) },
+  { RS(UNEVICTABLE_PGS_RESCUED),               TS(ul_int) },
+  { RS(UNEVICTABLE_PGS_SCANNED),               TS(ul_int) },
+  { 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_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) },
+  { RS(DELTA_COMPACT_MIGRATE_SCANNED),         TS(sl_int) },
+  { RS(DELTA_COMPACT_STALL),                   TS(sl_int) },
+  { RS(DELTA_COMPACT_SUCCESS),                 TS(sl_int) },
+  { RS(DELTA_DROP_PAGECACHE),                  TS(sl_int) },
+  { RS(DELTA_DROP_SLAB),                       TS(sl_int) },
+  { RS(DELTA_HTLB_BUDDY_ALLOC_FAIL),           TS(sl_int) },
+  { RS(DELTA_HTLB_BUDDY_ALLOC_SUCCESS),        TS(sl_int) },
+  { RS(DELTA_KSWAPD_HIGH_WMARK_HIT_QUICKLY),   TS(sl_int) },
+  { RS(DELTA_KSWAPD_INODESTEAL),               TS(sl_int) },
+  { 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_ANON_PAGES),                   TS(sl_int) },
+  { RS(DELTA_NR_ANON_TRANSPARENT_HUGEPAGES),   TS(sl_int) },
+  { RS(DELTA_NR_BOUNCE),                       TS(sl_int) },
+  { RS(DELTA_NR_DIRTIED),                      TS(sl_int) },
+  { RS(DELTA_NR_DIRTY),                        TS(sl_int) },
+  { RS(DELTA_NR_DIRTY_BACKGROUND_THRESHOLD),   TS(sl_int) },
+  { RS(DELTA_NR_DIRTY_THRESHOLD),              TS(sl_int) },
+  { RS(DELTA_NR_FILE_PAGES),                   TS(sl_int) },
+  { RS(DELTA_NR_FREE_CMA),                     TS(sl_int) },
+  { RS(DELTA_NR_FREE_PAGES),                   TS(sl_int) },
+  { RS(DELTA_NR_INACTIVE_ANON),                TS(sl_int) },
+  { 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_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) },
+  { RS(DELTA_NR_UNSTABLE),                     TS(sl_int) },
+  { RS(DELTA_NR_VMSCAN_IMMEDIATE_RECLAIM),     TS(sl_int) },
+  { RS(DELTA_NR_VMSCAN_WRITE),                 TS(sl_int) },
+  { 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) },
+  { RS(DELTA_NUMA_HIT),                        TS(sl_int) },
+  { RS(DELTA_NUMA_HUGE_PTE_UPDATES),           TS(sl_int) },
+  { RS(DELTA_NUMA_INTERLEAVE),                 TS(sl_int) },
+  { RS(DELTA_NUMA_LOCAL),                      TS(sl_int) },
+  { RS(DELTA_NUMA_MISS),                       TS(sl_int) },
+  { 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),                        TS(sl_int) },
+  { RS(DELTA_PGROTATED),                       TS(sl_int) },
+  { RS(DELTA_PGSCAN_DIRECT),                   TS(sl_int) },
+  { RS(DELTA_PGSCAN_DIRECT_THROTTLE),          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_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) },
+  { RS(DELTA_UNEVICTABLE_PGS_CULLED),          TS(sl_int) },
+  { RS(DELTA_UNEVICTABLE_PGS_MLOCKED),         TS(sl_int) },
+  { RS(DELTA_UNEVICTABLE_PGS_MUNLOCKED),       TS(sl_int) },
+  { RS(DELTA_UNEVICTABLE_PGS_RESCUED),         TS(sl_int) },
+  { RS(DELTA_UNEVICTABLE_PGS_SCANNED),         TS(sl_int) },
+  { 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 ...
-  { NULL,                                     NULL       }
+  { NULL,                                      NULL       }
 };
 
     /* please note,
@@ -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;
index 7dbe8436f478eb142d7b155cd2a1e73a0f7347e8..f29db353746f1d740d927c5564f05e2814b12362 100644 (file)
@@ -29,247 +29,289 @@ extern "C" {
 #endif
 
 enum vmstat_item {
-    VMSTAT_noop,                                 //       ( never altered )
-    VMSTAT_extra,                                //       ( reset to zero )
-                                                 //  returns        origin, see proc(5)
-                                                 //  -------        -------------------
-    VMSTAT_ALLOCSTALL,                           //  ul_int         /proc/vmstat
-    VMSTAT_BALLOON_DEFLATE,                      //  ul_int          "
-    VMSTAT_BALLOON_INFLATE,                      //  ul_int          "
-    VMSTAT_BALLOON_MIGRATE,                      //  ul_int          "
-    VMSTAT_COMPACT_FAIL,                         //  ul_int          "
-    VMSTAT_COMPACT_FREE_SCANNED,                 //  ul_int          "
-    VMSTAT_COMPACT_ISOLATED,                     //  ul_int          "
-    VMSTAT_COMPACT_MIGRATE_SCANNED,              //  ul_int          "
-    VMSTAT_COMPACT_STALL,                        //  ul_int          "
-    VMSTAT_COMPACT_SUCCESS,                      //  ul_int          "
-    VMSTAT_DROP_PAGECACHE,                       //  ul_int          "
-    VMSTAT_DROP_SLAB,                            //  ul_int          "
-    VMSTAT_HTLB_BUDDY_ALLOC_FAIL,                //  ul_int          "
-    VMSTAT_HTLB_BUDDY_ALLOC_SUCCESS,             //  ul_int          "
-    VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY,        //  ul_int          "
-    VMSTAT_KSWAPD_INODESTEAL,                    //  ul_int          "
-    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          "
-    VMSTAT_NR_DIRTIED,                           //  ul_int          "
-    VMSTAT_NR_DIRTY,                             //  ul_int          "
-    VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD,        //  ul_int          "
-    VMSTAT_NR_DIRTY_THRESHOLD,                   //  ul_int          "
-    VMSTAT_NR_FILE_PAGES,                        //  ul_int          "
-    VMSTAT_NR_FREE_CMA,                          //  ul_int          "
-    VMSTAT_NR_FREE_PAGES,                        //  ul_int          "
-    VMSTAT_NR_INACTIVE_ANON,                     //  ul_int          "
-    VMSTAT_NR_INACTIVE_FILE,                     //  ul_int          "
-    VMSTAT_NR_ISOLATED_ANON,                     //  ul_int          "
-    VMSTAT_NR_ISOLATED_FILE,                     //  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_SLAB_RECLAIMABLE,                  //  ul_int          "
-    VMSTAT_NR_SLAB_UNRECLAIMABLE,                //  ul_int          "
-    VMSTAT_NR_UNEVICTABLE,                       //  ul_int          "
-    VMSTAT_NR_UNSTABLE,                          //  ul_int          "
-    VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM,          //  ul_int          "
-    VMSTAT_NR_VMSCAN_WRITE,                      //  ul_int          "
-    VMSTAT_NR_WRITEBACK,                         //  ul_int          "
-    VMSTAT_NR_WRITEBACK_TEMP,                    //  ul_int          "
-    VMSTAT_NR_WRITTEN,                           //  ul_int          "
-    VMSTAT_NUMA_FOREIGN,                         //  ul_int          "
-    VMSTAT_NUMA_HINT_FAULTS,                     //  ul_int          "
-    VMSTAT_NUMA_HINT_FAULTS_LOCAL,               //  ul_int          "
-    VMSTAT_NUMA_HIT,                             //  ul_int          "
-    VMSTAT_NUMA_HUGE_PTE_UPDATES,                //  ul_int          "
-    VMSTAT_NUMA_INTERLEAVE,                      //  ul_int          "
-    VMSTAT_NUMA_LOCAL,                           //  ul_int          "
-    VMSTAT_NUMA_MISS,                            //  ul_int          "
-    VMSTAT_NUMA_OTHER,                           //  ul_int          "
-    VMSTAT_NUMA_PAGES_MIGRATED,                  //  ul_int          "
-    VMSTAT_NUMA_PTE_UPDATES,                     //  ul_int          "
-    VMSTAT_PAGEOUTRUN,                           //  ul_int          "
-    VMSTAT_PGACTIVATE,                           //  ul_int          "
-    VMSTAT_PGALLOC_DMA,                          //  ul_int          "
-    VMSTAT_PGALLOC_DMA32,                        //  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_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_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_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_PSWPIN,                               //  ul_int          "
-    VMSTAT_PSWPOUT,                              //  ul_int          "
-    VMSTAT_SLABS_SCANNED,                        //  ul_int          "
-    VMSTAT_THP_COLLAPSE_ALLOC,                   //  ul_int          "
-    VMSTAT_THP_COLLAPSE_ALLOC_FAILED,            //  ul_int          "
-    VMSTAT_THP_FAULT_ALLOC,                      //  ul_int          "
-    VMSTAT_THP_FAULT_FALLBACK,                   //  ul_int          "
-    VMSTAT_THP_SPLIT,                            //  ul_int          "
-    VMSTAT_THP_ZERO_PAGE_ALLOC,                  //  ul_int          "
-    VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED,           //  ul_int          "
-    VMSTAT_UNEVICTABLE_PGS_CLEARED,              //  ul_int          "
-    VMSTAT_UNEVICTABLE_PGS_CULLED,               //  ul_int          "
-    VMSTAT_UNEVICTABLE_PGS_MLOCKED,              //  ul_int          "
-    VMSTAT_UNEVICTABLE_PGS_MUNLOCKED,            //  ul_int          "
-    VMSTAT_UNEVICTABLE_PGS_RESCUED,              //  ul_int          "
-    VMSTAT_UNEVICTABLE_PGS_SCANNED,              //  ul_int          "
-    VMSTAT_UNEVICTABLE_PGS_STRANDED,             //  ul_int          "
-    VMSTAT_WORKINGSET_ACTIVATE,                  //  ul_int          "
-    VMSTAT_WORKINGSET_NODERECLAIM,               //  ul_int          "
-    VMSTAT_WORKINGSET_REFAULT,                   //  ul_int          "
-    VMSTAT_ZONE_RECLAIM_FAILED,                  //  ul_int          "
+    VMSTAT_noop,                                  //        ( never altered )
+    VMSTAT_extra,                                 //        ( reset to zero )
+                                                  //  returns        origin, see proc(5)
+                                                  //  -------        -------------------
+    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         "
+    VMSTAT_COMPACT_MIGRATE_SCANNED,               //   ul_int         "
+    VMSTAT_COMPACT_STALL,                         //   ul_int         "
+    VMSTAT_COMPACT_SUCCESS,                       //   ul_int         "
+    VMSTAT_DROP_PAGECACHE,                        //   ul_int         "
+    VMSTAT_DROP_SLAB,                             //   ul_int         "
+    VMSTAT_HTLB_BUDDY_ALLOC_FAIL,                 //   ul_int         "
+    VMSTAT_HTLB_BUDDY_ALLOC_SUCCESS,              //   ul_int         "
+    VMSTAT_KSWAPD_HIGH_WMARK_HIT_QUICKLY,         //   ul_int         "
+    VMSTAT_KSWAPD_INODESTEAL,                     //   ul_int         "
+    VMSTAT_KSWAPD_LOW_WMARK_HIT_QUICKLY,          //   ul_int         "
+    VMSTAT_NR_ACTIVE_ANON,                        //   ul_int         "
+    VMSTAT_NR_ACTIVE_FILE,                        //   ul_int         "
+    VMSTAT_NR_ANON_PAGES,                         //   ul_int         "
+    VMSTAT_NR_ANON_TRANSPARENT_HUGEPAGES,         //   ul_int         "
+    VMSTAT_NR_BOUNCE,                             //   ul_int         "
+    VMSTAT_NR_DIRTIED,                            //   ul_int         "
+    VMSTAT_NR_DIRTY,                              //   ul_int         "
+    VMSTAT_NR_DIRTY_BACKGROUND_THRESHOLD,         //   ul_int         "
+    VMSTAT_NR_DIRTY_THRESHOLD,                    //   ul_int         "
+    VMSTAT_NR_FILE_PAGES,                         //   ul_int         "
+    VMSTAT_NR_FREE_CMA,                           //   ul_int         "
+    VMSTAT_NR_FREE_PAGES,                         //   ul_int         "
+    VMSTAT_NR_INACTIVE_ANON,                      //   ul_int         "
+    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_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         "
+    VMSTAT_NR_UNSTABLE,                           //   ul_int         "
+    VMSTAT_NR_VMSCAN_IMMEDIATE_RECLAIM,           //   ul_int         "
+    VMSTAT_NR_VMSCAN_WRITE,                       //   ul_int         "
+    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         "
+    VMSTAT_NUMA_HIT,                              //   ul_int         "
+    VMSTAT_NUMA_HUGE_PTE_UPDATES,                 //   ul_int         "
+    VMSTAT_NUMA_INTERLEAVE,                       //   ul_int         "
+    VMSTAT_NUMA_LOCAL,                            //   ul_int         "
+    VMSTAT_NUMA_MISS,                             //   ul_int         "
+    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,                              //   ul_int         "
+    VMSTAT_PGROTATED,                             //   ul_int         "
+    VMSTAT_PGSCAN_DIRECT,                         //   ul_int         "
+    VMSTAT_PGSCAN_DIRECT_THROTTLE,                //   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_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         "
+    VMSTAT_UNEVICTABLE_PGS_CULLED,                //   ul_int         "
+    VMSTAT_UNEVICTABLE_PGS_MLOCKED,               //   ul_int         "
+    VMSTAT_UNEVICTABLE_PGS_MUNLOCKED,             //   ul_int         "
+    VMSTAT_UNEVICTABLE_PGS_RESCUED,               //   ul_int         "
+    VMSTAT_UNEVICTABLE_PGS_SCANNED,               //   ul_int         "
+    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_BALLOON_DEFLATE,                //  sl_int          "
-    VMSTAT_DELTA_BALLOON_INFLATE,                //  sl_int          "
-    VMSTAT_DELTA_BALLOON_MIGRATE,                //  sl_int          "
-    VMSTAT_DELTA_COMPACT_FAIL,                   //  sl_int          "
-    VMSTAT_DELTA_COMPACT_FREE_SCANNED,           //  sl_int          "
-    VMSTAT_DELTA_COMPACT_ISOLATED,               //  sl_int          "
-    VMSTAT_DELTA_COMPACT_MIGRATE_SCANNED,        //  sl_int          "
-    VMSTAT_DELTA_COMPACT_STALL,                  //  sl_int          "
-    VMSTAT_DELTA_COMPACT_SUCCESS,                //  sl_int          "
-    VMSTAT_DELTA_DROP_PAGECACHE,                 //  sl_int          "
-    VMSTAT_DELTA_DROP_SLAB,                      //  sl_int          "
-    VMSTAT_DELTA_HTLB_BUDDY_ALLOC_FAIL,          //  sl_int          "
-    VMSTAT_DELTA_HTLB_BUDDY_ALLOC_SUCCESS,       //  sl_int          "
-    VMSTAT_DELTA_KSWAPD_HIGH_WMARK_HIT_QUICKLY,  //  sl_int          "
-    VMSTAT_DELTA_KSWAPD_INODESTEAL,              //  sl_int          "
-    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          "
-    VMSTAT_DELTA_NR_DIRTIED,                     //  sl_int          "
-    VMSTAT_DELTA_NR_DIRTY,                       //  sl_int          "
-    VMSTAT_DELTA_NR_DIRTY_BACKGROUND_THRESHOLD,  //  sl_int          "
-    VMSTAT_DELTA_NR_DIRTY_THRESHOLD,             //  sl_int          "
-    VMSTAT_DELTA_NR_FILE_PAGES,                  //  sl_int          "
-    VMSTAT_DELTA_NR_FREE_CMA,                    //  sl_int          "
-    VMSTAT_DELTA_NR_FREE_PAGES,                  //  sl_int          "
-    VMSTAT_DELTA_NR_INACTIVE_ANON,               //  sl_int          "
-    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_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_SLAB_RECLAIMABLE,            //  sl_int          "
-    VMSTAT_DELTA_NR_SLAB_UNRECLAIMABLE,          //  sl_int          "
-    VMSTAT_DELTA_NR_UNEVICTABLE,                 //  sl_int          "
-    VMSTAT_DELTA_NR_UNSTABLE,                    //  sl_int          "
-    VMSTAT_DELTA_NR_VMSCAN_IMMEDIATE_RECLAIM,    //  sl_int          "
-    VMSTAT_DELTA_NR_VMSCAN_WRITE,                //  sl_int          "
-    VMSTAT_DELTA_NR_WRITEBACK,                   //  sl_int          "
-    VMSTAT_DELTA_NR_WRITEBACK_TEMP,              //  sl_int          "
-    VMSTAT_DELTA_NR_WRITTEN,                     //  sl_int          "
-    VMSTAT_DELTA_NUMA_FOREIGN,                   //  sl_int          "
-    VMSTAT_DELTA_NUMA_HINT_FAULTS,               //  sl_int          "
-    VMSTAT_DELTA_NUMA_HINT_FAULTS_LOCAL,         //  sl_int          "
-    VMSTAT_DELTA_NUMA_HIT,                       //  sl_int          "
-    VMSTAT_DELTA_NUMA_HUGE_PTE_UPDATES,          //  sl_int          "
-    VMSTAT_DELTA_NUMA_INTERLEAVE,                //  sl_int          "
-    VMSTAT_DELTA_NUMA_LOCAL,                     //  sl_int          "
-    VMSTAT_DELTA_NUMA_MISS,                      //  sl_int          "
-    VMSTAT_DELTA_NUMA_OTHER,                     //  sl_int          "
-    VMSTAT_DELTA_NUMA_PAGES_MIGRATED,            //  sl_int          "
-    VMSTAT_DELTA_NUMA_PTE_UPDATES,               //  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_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_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_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_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_PSWPIN,                         //  sl_int          "
-    VMSTAT_DELTA_PSWPOUT,                        //  sl_int          "
-    VMSTAT_DELTA_SLABS_SCANNED,                  //  sl_int          "
-    VMSTAT_DELTA_THP_COLLAPSE_ALLOC,             //  sl_int          "
-    VMSTAT_DELTA_THP_COLLAPSE_ALLOC_FAILED,      //  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_ZERO_PAGE_ALLOC,            //  sl_int          "
-    VMSTAT_DELTA_THP_ZERO_PAGE_ALLOC_FAILED,     //  sl_int          "
-    VMSTAT_DELTA_UNEVICTABLE_PGS_CLEARED,        //  sl_int          "
-    VMSTAT_DELTA_UNEVICTABLE_PGS_CULLED,         //  sl_int          "
-    VMSTAT_DELTA_UNEVICTABLE_PGS_MLOCKED,        //  sl_int          "
-    VMSTAT_DELTA_UNEVICTABLE_PGS_MUNLOCKED,      //  sl_int          "
-    VMSTAT_DELTA_UNEVICTABLE_PGS_RESCUED,        //  sl_int          "
-    VMSTAT_DELTA_UNEVICTABLE_PGS_SCANNED,        //  sl_int          "
-    VMSTAT_DELTA_UNEVICTABLE_PGS_STRANDED,       //  sl_int          "
-    VMSTAT_DELTA_WORKINGSET_ACTIVATE,            //  sl_int          "
-    VMSTAT_DELTA_WORKINGSET_NODERECLAIM,         //  sl_int          "
-    VMSTAT_DELTA_WORKINGSET_REFAULT,             //  sl_int          "
-    VMSTAT_DELTA_ZONE_RECLAIM_FAILED             //  sl_int          "
+    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         "
+    VMSTAT_DELTA_COMPACT_MIGRATE_SCANNED,         //   sl_int         "
+    VMSTAT_DELTA_COMPACT_STALL,                   //   sl_int         "
+    VMSTAT_DELTA_COMPACT_SUCCESS,                 //   sl_int         "
+    VMSTAT_DELTA_DROP_PAGECACHE,                  //   sl_int         "
+    VMSTAT_DELTA_DROP_SLAB,                       //   sl_int         "
+    VMSTAT_DELTA_HTLB_BUDDY_ALLOC_FAIL,           //   sl_int         "
+    VMSTAT_DELTA_HTLB_BUDDY_ALLOC_SUCCESS,        //   sl_int         "
+    VMSTAT_DELTA_KSWAPD_HIGH_WMARK_HIT_QUICKLY,   //   sl_int         "
+    VMSTAT_DELTA_KSWAPD_INODESTEAL,               //   sl_int         "
+    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_ANON_PAGES,                   //   sl_int         "
+    VMSTAT_DELTA_NR_ANON_TRANSPARENT_HUGEPAGES,   //   sl_int         "
+    VMSTAT_DELTA_NR_BOUNCE,                       //   sl_int         "
+    VMSTAT_DELTA_NR_DIRTIED,                      //   sl_int         "
+    VMSTAT_DELTA_NR_DIRTY,                        //   sl_int         "
+    VMSTAT_DELTA_NR_DIRTY_BACKGROUND_THRESHOLD,   //   sl_int         "
+    VMSTAT_DELTA_NR_DIRTY_THRESHOLD,              //   sl_int         "
+    VMSTAT_DELTA_NR_FILE_PAGES,                   //   sl_int         "
+    VMSTAT_DELTA_NR_FREE_CMA,                     //   sl_int         "
+    VMSTAT_DELTA_NR_FREE_PAGES,                   //   sl_int         "
+    VMSTAT_DELTA_NR_INACTIVE_ANON,                //   sl_int         "
+    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_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         "
+    VMSTAT_DELTA_NR_UNSTABLE,                     //   sl_int         "
+    VMSTAT_DELTA_NR_VMSCAN_IMMEDIATE_RECLAIM,     //   sl_int         "
+    VMSTAT_DELTA_NR_VMSCAN_WRITE,                 //   sl_int         "
+    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         "
+    VMSTAT_DELTA_NUMA_HIT,                        //   sl_int         "
+    VMSTAT_DELTA_NUMA_HUGE_PTE_UPDATES,           //   sl_int         "
+    VMSTAT_DELTA_NUMA_INTERLEAVE,                 //   sl_int         "
+    VMSTAT_DELTA_NUMA_LOCAL,                      //   sl_int         "
+    VMSTAT_DELTA_NUMA_MISS,                       //   sl_int         "
+    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,                        //   sl_int         "
+    VMSTAT_DELTA_PGROTATED,                       //   sl_int         "
+    VMSTAT_DELTA_PGSCAN_DIRECT,                   //   sl_int         "
+    VMSTAT_DELTA_PGSCAN_DIRECT_THROTTLE,          //   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_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         "
+    VMSTAT_DELTA_UNEVICTABLE_PGS_CULLED,          //   sl_int         "
+    VMSTAT_DELTA_UNEVICTABLE_PGS_MLOCKED,         //   sl_int         "
+    VMSTAT_DELTA_UNEVICTABLE_PGS_MUNLOCKED,       //   sl_int         "
+    VMSTAT_DELTA_UNEVICTABLE_PGS_RESCUED,         //   sl_int         "
+    VMSTAT_DELTA_UNEVICTABLE_PGS_SCANNED,         //   sl_int         "
+    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         "
 };