Merge "Add support for new v8 data source" into main
diff --git a/include/perfetto/ext/traced/sys_stats_counters.h b/include/perfetto/ext/traced/sys_stats_counters.h
index fa846d6..94117f0 100644
--- a/include/perfetto/ext/traced/sys_stats_counters.h
+++ b/include/perfetto/ext/traced/sys_stats_counters.h
@@ -259,6 +259,101 @@
     {"swap_ra", protos::pbzero::VmstatCounters::VMSTAT_SWAP_RA},
     {"workingset_restore",
      protos::pbzero::VmstatCounters::VMSTAT_WORKINGSET_RESTORE},
+    {"allocstall_device",
+     protos::pbzero::VmstatCounters::VMSTAT_ALLOCSTALL_DEVICE},
+    {"allocstall_dma32",
+     protos::pbzero::VmstatCounters::VMSTAT_ALLOCSTALL_DMA32},
+    {"balloon_deflate", protos::pbzero::VmstatCounters::VMSTAT_BALLOON_DEFLATE},
+    {"balloon_inflate", protos::pbzero::VmstatCounters::VMSTAT_BALLOON_INFLATE},
+    {"balloon_migrate", protos::pbzero::VmstatCounters::VMSTAT_BALLOON_MIGRATE},
+    {"cma_alloc_fail", protos::pbzero::VmstatCounters::VMSTAT_CMA_ALLOC_FAIL},
+    {"cma_alloc_success",
+     protos::pbzero::VmstatCounters::VMSTAT_CMA_ALLOC_SUCCESS},
+    {"nr_file_hugepages",
+     protos::pbzero::VmstatCounters::VMSTAT_NR_FILE_HUGEPAGES},
+    {"nr_file_pmdmapped",
+     protos::pbzero::VmstatCounters::VMSTAT_NR_FILE_PMDMAPPED},
+    {"nr_foll_pin_acquired",
+     protos::pbzero::VmstatCounters::VMSTAT_NR_FOLL_PIN_ACQUIRED},
+    {"nr_foll_pin_released",
+     protos::pbzero::VmstatCounters::VMSTAT_NR_FOLL_PIN_RELEASED},
+    {"nr_sec_page_table_pages",
+     protos::pbzero::VmstatCounters::VMSTAT_NR_SEC_PAGE_TABLE_PAGES},
+    {"nr_shadow_call_stack",
+     protos::pbzero::VmstatCounters::VMSTAT_NR_SHADOW_CALL_STACK},
+    {"nr_swapcached", protos::pbzero::VmstatCounters::VMSTAT_NR_SWAPCACHED},
+    {"nr_throttled_written",
+     protos::pbzero::VmstatCounters::VMSTAT_NR_THROTTLED_WRITTEN},
+    {"pgalloc_device", protos::pbzero::VmstatCounters::VMSTAT_PGALLOC_DEVICE},
+    {"pgalloc_dma32", protos::pbzero::VmstatCounters::VMSTAT_PGALLOC_DMA32},
+    {"pgdemote_direct", protos::pbzero::VmstatCounters::VMSTAT_PGDEMOTE_DIRECT},
+    {"pgdemote_kswapd", protos::pbzero::VmstatCounters::VMSTAT_PGDEMOTE_KSWAPD},
+    {"pgreuse", protos::pbzero::VmstatCounters::VMSTAT_PGREUSE},
+    {"pgscan_anon", protos::pbzero::VmstatCounters::VMSTAT_PGSCAN_ANON},
+    {"pgscan_file", protos::pbzero::VmstatCounters::VMSTAT_PGSCAN_FILE},
+    {"pgskip_device", protos::pbzero::VmstatCounters::VMSTAT_PGSKIP_DEVICE},
+    {"pgskip_dma32", protos::pbzero::VmstatCounters::VMSTAT_PGSKIP_DMA32},
+    {"pgsteal_anon", protos::pbzero::VmstatCounters::VMSTAT_PGSTEAL_ANON},
+    {"pgsteal_file", protos::pbzero::VmstatCounters::VMSTAT_PGSTEAL_FILE},
+    {"thp_collapse_alloc",
+     protos::pbzero::VmstatCounters::VMSTAT_THP_COLLAPSE_ALLOC},
+    {"thp_collapse_alloc_failed",
+     protos::pbzero::VmstatCounters::VMSTAT_THP_COLLAPSE_ALLOC_FAILED},
+    {"thp_deferred_split_page",
+     protos::pbzero::VmstatCounters::VMSTAT_THP_DEFERRED_SPLIT_PAGE},
+    {"thp_fault_alloc", protos::pbzero::VmstatCounters::VMSTAT_THP_FAULT_ALLOC},
+    {"thp_fault_fallback",
+     protos::pbzero::VmstatCounters::VMSTAT_THP_FAULT_FALLBACK},
+    {"thp_fault_fallback_charge",
+     protos::pbzero::VmstatCounters::VMSTAT_THP_FAULT_FALLBACK_CHARGE},
+    {"thp_file_alloc", protos::pbzero::VmstatCounters::VMSTAT_THP_FILE_ALLOC},
+    {"thp_file_fallback",
+     protos::pbzero::VmstatCounters::VMSTAT_THP_FILE_FALLBACK},
+    {"thp_file_fallback_charge",
+     protos::pbzero::VmstatCounters::VMSTAT_THP_FILE_FALLBACK_CHARGE},
+    {"thp_file_mapped", protos::pbzero::VmstatCounters::VMSTAT_THP_FILE_MAPPED},
+    {"thp_migration_fail",
+     protos::pbzero::VmstatCounters::VMSTAT_THP_MIGRATION_FAIL},
+    {"thp_migration_split",
+     protos::pbzero::VmstatCounters::VMSTAT_THP_MIGRATION_SPLIT},
+    {"thp_migration_success",
+     protos::pbzero::VmstatCounters::VMSTAT_THP_MIGRATION_SUCCESS},
+    {"thp_scan_exceed_none_pte",
+     protos::pbzero::VmstatCounters::VMSTAT_THP_SCAN_EXCEED_NONE_PTE},
+    {"thp_scan_exceed_share_pte",
+     protos::pbzero::VmstatCounters::VMSTAT_THP_SCAN_EXCEED_SHARE_PTE},
+    {"thp_scan_exceed_swap_pte",
+     protos::pbzero::VmstatCounters::VMSTAT_THP_SCAN_EXCEED_SWAP_PTE},
+    {"thp_split_page", protos::pbzero::VmstatCounters::VMSTAT_THP_SPLIT_PAGE},
+    {"thp_split_page_failed",
+     protos::pbzero::VmstatCounters::VMSTAT_THP_SPLIT_PAGE_FAILED},
+    {"thp_split_pmd", protos::pbzero::VmstatCounters::VMSTAT_THP_SPLIT_PMD},
+    {"thp_swpout", protos::pbzero::VmstatCounters::VMSTAT_THP_SWPOUT},
+    {"thp_swpout_fallback",
+     protos::pbzero::VmstatCounters::VMSTAT_THP_SWPOUT_FALLBACK},
+    {"thp_zero_page_alloc",
+     protos::pbzero::VmstatCounters::VMSTAT_THP_ZERO_PAGE_ALLOC},
+    {"thp_zero_page_alloc_failed",
+     protos::pbzero::VmstatCounters::VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED},
+    {"vma_lock_abort", protos::pbzero::VmstatCounters::VMSTAT_VMA_LOCK_ABORT},
+    {"vma_lock_miss", protos::pbzero::VmstatCounters::VMSTAT_VMA_LOCK_MISS},
+    {"vma_lock_retry", protos::pbzero::VmstatCounters::VMSTAT_VMA_LOCK_RETRY},
+    {"vma_lock_success",
+     protos::pbzero::VmstatCounters::VMSTAT_VMA_LOCK_SUCCESS},
+    {"workingset_activate_anon",
+     protos::pbzero::VmstatCounters::VMSTAT_WORKINGSET_ACTIVATE_ANON},
+    {"workingset_activate_file",
+     protos::pbzero::VmstatCounters::VMSTAT_WORKINGSET_ACTIVATE_FILE},
+    {"workingset_nodes",
+     protos::pbzero::VmstatCounters::VMSTAT_WORKINGSET_NODES},
+    {"workingset_refault_anon",
+     protos::pbzero::VmstatCounters::VMSTAT_WORKINGSET_REFAULT_ANON},
+    {"workingset_refault_file",
+     protos::pbzero::VmstatCounters::VMSTAT_WORKINGSET_REFAULT_FILE},
+    {"workingset_restore_anon",
+     protos::pbzero::VmstatCounters::VMSTAT_WORKINGSET_RESTORE_ANON},
+    {"workingset_restore_file",
+     protos::pbzero::VmstatCounters::VMSTAT_WORKINGSET_RESTORE_FILE},
 };
 
 // Returns a lookup table of meminfo counter names addressable by counter id.
diff --git a/protos/perfetto/common/sys_stats_counters.proto b/protos/perfetto/common/sys_stats_counters.proto
index 1605a73..4b23cdd 100644
--- a/protos/perfetto/common/sys_stats_counters.proto
+++ b/protos/perfetto/common/sys_stats_counters.proto
@@ -190,4 +190,64 @@
   VMSTAT_SWAP_RA = 126;
   VMSTAT_SWAP_RA_HIT = 127;
   VMSTAT_WORKINGSET_RESTORE = 128;
-}
\ No newline at end of file
+  VMSTAT_ALLOCSTALL_DEVICE = 129;
+  VMSTAT_ALLOCSTALL_DMA32 = 130;
+  VMSTAT_BALLOON_DEFLATE = 131;
+  VMSTAT_BALLOON_INFLATE = 132;
+  VMSTAT_BALLOON_MIGRATE = 133;
+  VMSTAT_CMA_ALLOC_FAIL = 134;
+  VMSTAT_CMA_ALLOC_SUCCESS = 135;
+  VMSTAT_NR_FILE_HUGEPAGES = 136;
+  VMSTAT_NR_FILE_PMDMAPPED = 137;
+  VMSTAT_NR_FOLL_PIN_ACQUIRED = 138;
+  VMSTAT_NR_FOLL_PIN_RELEASED = 139;
+  VMSTAT_NR_SEC_PAGE_TABLE_PAGES = 140;
+  VMSTAT_NR_SHADOW_CALL_STACK = 141;
+  VMSTAT_NR_SWAPCACHED = 142;
+  VMSTAT_NR_THROTTLED_WRITTEN = 143;
+  VMSTAT_PGALLOC_DEVICE = 144;
+  VMSTAT_PGALLOC_DMA32 = 145;
+  VMSTAT_PGDEMOTE_DIRECT = 146;
+  VMSTAT_PGDEMOTE_KSWAPD = 147;
+  VMSTAT_PGREUSE = 148;
+  VMSTAT_PGSCAN_ANON = 149;
+  VMSTAT_PGSCAN_FILE = 150;
+  VMSTAT_PGSKIP_DEVICE = 151;
+  VMSTAT_PGSKIP_DMA32 = 152;
+  VMSTAT_PGSTEAL_ANON = 153;
+  VMSTAT_PGSTEAL_FILE = 154;
+  VMSTAT_THP_COLLAPSE_ALLOC = 155;
+  VMSTAT_THP_COLLAPSE_ALLOC_FAILED = 156;
+  VMSTAT_THP_DEFERRED_SPLIT_PAGE = 157;
+  VMSTAT_THP_FAULT_ALLOC = 158;
+  VMSTAT_THP_FAULT_FALLBACK = 159;
+  VMSTAT_THP_FAULT_FALLBACK_CHARGE = 160;
+  VMSTAT_THP_FILE_ALLOC = 161;
+  VMSTAT_THP_FILE_FALLBACK = 162;
+  VMSTAT_THP_FILE_FALLBACK_CHARGE = 163;
+  VMSTAT_THP_FILE_MAPPED = 164;
+  VMSTAT_THP_MIGRATION_FAIL = 165;
+  VMSTAT_THP_MIGRATION_SPLIT = 166;
+  VMSTAT_THP_MIGRATION_SUCCESS = 167;
+  VMSTAT_THP_SCAN_EXCEED_NONE_PTE = 168;
+  VMSTAT_THP_SCAN_EXCEED_SHARE_PTE = 169;
+  VMSTAT_THP_SCAN_EXCEED_SWAP_PTE = 170;
+  VMSTAT_THP_SPLIT_PAGE = 171;
+  VMSTAT_THP_SPLIT_PAGE_FAILED = 172;
+  VMSTAT_THP_SPLIT_PMD = 173;
+  VMSTAT_THP_SWPOUT = 174;
+  VMSTAT_THP_SWPOUT_FALLBACK = 175;
+  VMSTAT_THP_ZERO_PAGE_ALLOC = 176;
+  VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED = 177;
+  VMSTAT_VMA_LOCK_ABORT = 178;
+  VMSTAT_VMA_LOCK_MISS = 179;
+  VMSTAT_VMA_LOCK_RETRY = 180;
+  VMSTAT_VMA_LOCK_SUCCESS = 181;
+  VMSTAT_WORKINGSET_ACTIVATE_ANON = 182;
+  VMSTAT_WORKINGSET_ACTIVATE_FILE = 183;
+  VMSTAT_WORKINGSET_NODES = 184;
+  VMSTAT_WORKINGSET_REFAULT_ANON = 185;
+  VMSTAT_WORKINGSET_REFAULT_FILE = 186;
+  VMSTAT_WORKINGSET_RESTORE_ANON = 187;
+  VMSTAT_WORKINGSET_RESTORE_FILE = 188;
+}
diff --git a/protos/perfetto/config/perfetto_config.proto b/protos/perfetto/config/perfetto_config.proto
index de5bd99..ef0330e 100644
--- a/protos/perfetto/config/perfetto_config.proto
+++ b/protos/perfetto/config/perfetto_config.proto
@@ -2746,7 +2746,68 @@
   VMSTAT_SWAP_RA = 126;
   VMSTAT_SWAP_RA_HIT = 127;
   VMSTAT_WORKINGSET_RESTORE = 128;
+  VMSTAT_ALLOCSTALL_DEVICE = 129;
+  VMSTAT_ALLOCSTALL_DMA32 = 130;
+  VMSTAT_BALLOON_DEFLATE = 131;
+  VMSTAT_BALLOON_INFLATE = 132;
+  VMSTAT_BALLOON_MIGRATE = 133;
+  VMSTAT_CMA_ALLOC_FAIL = 134;
+  VMSTAT_CMA_ALLOC_SUCCESS = 135;
+  VMSTAT_NR_FILE_HUGEPAGES = 136;
+  VMSTAT_NR_FILE_PMDMAPPED = 137;
+  VMSTAT_NR_FOLL_PIN_ACQUIRED = 138;
+  VMSTAT_NR_FOLL_PIN_RELEASED = 139;
+  VMSTAT_NR_SEC_PAGE_TABLE_PAGES = 140;
+  VMSTAT_NR_SHADOW_CALL_STACK = 141;
+  VMSTAT_NR_SWAPCACHED = 142;
+  VMSTAT_NR_THROTTLED_WRITTEN = 143;
+  VMSTAT_PGALLOC_DEVICE = 144;
+  VMSTAT_PGALLOC_DMA32 = 145;
+  VMSTAT_PGDEMOTE_DIRECT = 146;
+  VMSTAT_PGDEMOTE_KSWAPD = 147;
+  VMSTAT_PGREUSE = 148;
+  VMSTAT_PGSCAN_ANON = 149;
+  VMSTAT_PGSCAN_FILE = 150;
+  VMSTAT_PGSKIP_DEVICE = 151;
+  VMSTAT_PGSKIP_DMA32 = 152;
+  VMSTAT_PGSTEAL_ANON = 153;
+  VMSTAT_PGSTEAL_FILE = 154;
+  VMSTAT_THP_COLLAPSE_ALLOC = 155;
+  VMSTAT_THP_COLLAPSE_ALLOC_FAILED = 156;
+  VMSTAT_THP_DEFERRED_SPLIT_PAGE = 157;
+  VMSTAT_THP_FAULT_ALLOC = 158;
+  VMSTAT_THP_FAULT_FALLBACK = 159;
+  VMSTAT_THP_FAULT_FALLBACK_CHARGE = 160;
+  VMSTAT_THP_FILE_ALLOC = 161;
+  VMSTAT_THP_FILE_FALLBACK = 162;
+  VMSTAT_THP_FILE_FALLBACK_CHARGE = 163;
+  VMSTAT_THP_FILE_MAPPED = 164;
+  VMSTAT_THP_MIGRATION_FAIL = 165;
+  VMSTAT_THP_MIGRATION_SPLIT = 166;
+  VMSTAT_THP_MIGRATION_SUCCESS = 167;
+  VMSTAT_THP_SCAN_EXCEED_NONE_PTE = 168;
+  VMSTAT_THP_SCAN_EXCEED_SHARE_PTE = 169;
+  VMSTAT_THP_SCAN_EXCEED_SWAP_PTE = 170;
+  VMSTAT_THP_SPLIT_PAGE = 171;
+  VMSTAT_THP_SPLIT_PAGE_FAILED = 172;
+  VMSTAT_THP_SPLIT_PMD = 173;
+  VMSTAT_THP_SWPOUT = 174;
+  VMSTAT_THP_SWPOUT_FALLBACK = 175;
+  VMSTAT_THP_ZERO_PAGE_ALLOC = 176;
+  VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED = 177;
+  VMSTAT_VMA_LOCK_ABORT = 178;
+  VMSTAT_VMA_LOCK_MISS = 179;
+  VMSTAT_VMA_LOCK_RETRY = 180;
+  VMSTAT_VMA_LOCK_SUCCESS = 181;
+  VMSTAT_WORKINGSET_ACTIVATE_ANON = 182;
+  VMSTAT_WORKINGSET_ACTIVATE_FILE = 183;
+  VMSTAT_WORKINGSET_NODES = 184;
+  VMSTAT_WORKINGSET_REFAULT_ANON = 185;
+  VMSTAT_WORKINGSET_REFAULT_FILE = 186;
+  VMSTAT_WORKINGSET_RESTORE_ANON = 187;
+  VMSTAT_WORKINGSET_RESTORE_FILE = 188;
 }
+
 // End of protos/perfetto/common/sys_stats_counters.proto
 
 // Begin of protos/perfetto/config/sys_stats/sys_stats_config.proto
diff --git a/protos/perfetto/trace/perfetto_trace.proto b/protos/perfetto/trace/perfetto_trace.proto
index ac92035..be48293 100644
--- a/protos/perfetto/trace/perfetto_trace.proto
+++ b/protos/perfetto/trace/perfetto_trace.proto
@@ -2746,7 +2746,68 @@
   VMSTAT_SWAP_RA = 126;
   VMSTAT_SWAP_RA_HIT = 127;
   VMSTAT_WORKINGSET_RESTORE = 128;
+  VMSTAT_ALLOCSTALL_DEVICE = 129;
+  VMSTAT_ALLOCSTALL_DMA32 = 130;
+  VMSTAT_BALLOON_DEFLATE = 131;
+  VMSTAT_BALLOON_INFLATE = 132;
+  VMSTAT_BALLOON_MIGRATE = 133;
+  VMSTAT_CMA_ALLOC_FAIL = 134;
+  VMSTAT_CMA_ALLOC_SUCCESS = 135;
+  VMSTAT_NR_FILE_HUGEPAGES = 136;
+  VMSTAT_NR_FILE_PMDMAPPED = 137;
+  VMSTAT_NR_FOLL_PIN_ACQUIRED = 138;
+  VMSTAT_NR_FOLL_PIN_RELEASED = 139;
+  VMSTAT_NR_SEC_PAGE_TABLE_PAGES = 140;
+  VMSTAT_NR_SHADOW_CALL_STACK = 141;
+  VMSTAT_NR_SWAPCACHED = 142;
+  VMSTAT_NR_THROTTLED_WRITTEN = 143;
+  VMSTAT_PGALLOC_DEVICE = 144;
+  VMSTAT_PGALLOC_DMA32 = 145;
+  VMSTAT_PGDEMOTE_DIRECT = 146;
+  VMSTAT_PGDEMOTE_KSWAPD = 147;
+  VMSTAT_PGREUSE = 148;
+  VMSTAT_PGSCAN_ANON = 149;
+  VMSTAT_PGSCAN_FILE = 150;
+  VMSTAT_PGSKIP_DEVICE = 151;
+  VMSTAT_PGSKIP_DMA32 = 152;
+  VMSTAT_PGSTEAL_ANON = 153;
+  VMSTAT_PGSTEAL_FILE = 154;
+  VMSTAT_THP_COLLAPSE_ALLOC = 155;
+  VMSTAT_THP_COLLAPSE_ALLOC_FAILED = 156;
+  VMSTAT_THP_DEFERRED_SPLIT_PAGE = 157;
+  VMSTAT_THP_FAULT_ALLOC = 158;
+  VMSTAT_THP_FAULT_FALLBACK = 159;
+  VMSTAT_THP_FAULT_FALLBACK_CHARGE = 160;
+  VMSTAT_THP_FILE_ALLOC = 161;
+  VMSTAT_THP_FILE_FALLBACK = 162;
+  VMSTAT_THP_FILE_FALLBACK_CHARGE = 163;
+  VMSTAT_THP_FILE_MAPPED = 164;
+  VMSTAT_THP_MIGRATION_FAIL = 165;
+  VMSTAT_THP_MIGRATION_SPLIT = 166;
+  VMSTAT_THP_MIGRATION_SUCCESS = 167;
+  VMSTAT_THP_SCAN_EXCEED_NONE_PTE = 168;
+  VMSTAT_THP_SCAN_EXCEED_SHARE_PTE = 169;
+  VMSTAT_THP_SCAN_EXCEED_SWAP_PTE = 170;
+  VMSTAT_THP_SPLIT_PAGE = 171;
+  VMSTAT_THP_SPLIT_PAGE_FAILED = 172;
+  VMSTAT_THP_SPLIT_PMD = 173;
+  VMSTAT_THP_SWPOUT = 174;
+  VMSTAT_THP_SWPOUT_FALLBACK = 175;
+  VMSTAT_THP_ZERO_PAGE_ALLOC = 176;
+  VMSTAT_THP_ZERO_PAGE_ALLOC_FAILED = 177;
+  VMSTAT_VMA_LOCK_ABORT = 178;
+  VMSTAT_VMA_LOCK_MISS = 179;
+  VMSTAT_VMA_LOCK_RETRY = 180;
+  VMSTAT_VMA_LOCK_SUCCESS = 181;
+  VMSTAT_WORKINGSET_ACTIVATE_ANON = 182;
+  VMSTAT_WORKINGSET_ACTIVATE_FILE = 183;
+  VMSTAT_WORKINGSET_NODES = 184;
+  VMSTAT_WORKINGSET_REFAULT_ANON = 185;
+  VMSTAT_WORKINGSET_REFAULT_FILE = 186;
+  VMSTAT_WORKINGSET_RESTORE_ANON = 187;
+  VMSTAT_WORKINGSET_RESTORE_FILE = 188;
 }
+
 // End of protos/perfetto/common/sys_stats_counters.proto
 
 // Begin of protos/perfetto/config/sys_stats/sys_stats_config.proto
diff --git a/src/traced/probes/sys_stats/sys_stats_data_source_unittest.cc b/src/traced/probes/sys_stats/sys_stats_data_source_unittest.cc
index 1a9c11b..d5639f5 100644
--- a/src/traced/probes/sys_stats/sys_stats_data_source_unittest.cc
+++ b/src/traced/probes/sys_stats/sys_stats_data_source_unittest.cc
@@ -169,7 +169,8 @@
 unevictable_pgs_mlocked 52520
 unevictable_pgs_munlocked 14640
 unevictable_pgs_cleared 2342
-unevictable_pgs_stranded 2342)";
+unevictable_pgs_stranded 2342
+vma_lock_abort 1173728)";
 
 const char kMockStat[] = R"(
 cpu  2655987 822682 2352153 8801203 41917 322733 175055 0 0 0
@@ -348,6 +349,7 @@
   sys_cfg.add_vmstat_counters(C::VMSTAT_PGACTIVATE);
   sys_cfg.add_vmstat_counters(C::VMSTAT_PGMIGRATE_FAIL);
   sys_cfg.add_vmstat_counters(C::VMSTAT_PGSTEAL_DIRECT);
+  sys_cfg.add_vmstat_counters(C::VMSTAT_VMA_LOCK_ABORT);
   config.set_sys_stats_config_raw(sys_cfg.SerializeAsString());
   auto data_source = GetSysStatsDataSource(config);
 
@@ -365,11 +367,13 @@
   for (const auto& kv : sys_stats.vmstat())
     kvs.push_back({kv.key(), kv.value()});
 
-  EXPECT_THAT(kvs, UnorderedElementsAre(KV{C::VMSTAT_NR_FREE_PAGES, 16449},  //
-                                        KV{C::VMSTAT_PGACTIVATE, 11897892},  //
-                                        KV{C::VMSTAT_PGMIGRATE_FAIL, 3439},  //
-                                        KV{C::VMSTAT_PGSTEAL_DIRECT, 91537}  //
-                                        ));
+  EXPECT_THAT(kvs,
+              UnorderedElementsAre(KV{C::VMSTAT_NR_FREE_PAGES, 16449},    //
+                                   KV{C::VMSTAT_PGACTIVATE, 11897892},    //
+                                   KV{C::VMSTAT_PGMIGRATE_FAIL, 3439},    //
+                                   KV{C::VMSTAT_PGSTEAL_DIRECT, 91537},   //
+                                   KV{C::VMSTAT_VMA_LOCK_ABORT, 1173728}  //
+                                   ));
 }
 
 TEST_F(SysStatsDataSourceTest, VmstatAll) {