pmdalinux: fix zoneinfo protection metrics on 32-bit platforms
[pcp.git] / src / pmdas / linux / pmda.c
blob39b21257f68c11f4fb58b0be45112f04ec0e0742
1 /*
2 * Linux PMDA
4 * Copyright (c) 2012-2017 Red Hat.
5 * Copyright (c) 2016-2017 Fujitsu.
6 * Copyright (c) 2007-2011 Aconex. All Rights Reserved.
7 * Copyright (c) 2002 International Business Machines Corp.
8 * Copyright (c) 2000,2004,2007-2008 Silicon Graphics, Inc. All Rights Reserved.
9 *
10 * This program is free software; you can redistribute it and/or modify it
11 * under the terms of the GNU General Public License as published by the
12 * Free Software Foundation; either version 2 of the License, or (at your
13 * option) any later version.
15 * This program is distributed in the hope that it will be useful, but
16 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
17 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
18 * for more details.
20 #include "linux.h"
21 #undef LINUX /* defined in NSS/NSPR headers as something different, which we do not need. */
22 #include "domain.h"
24 #include <ctype.h>
25 #include <sys/vfs.h>
26 #include <sys/stat.h>
27 #include <sys/times.h>
28 #include <sys/utsname.h>
29 #include <utmp.h>
30 #include <pwd.h>
31 #include <grp.h>
33 #include "ipc.h"
34 #include "filesys.h"
35 #include "getinfo.h"
36 #include "swapdev.h"
37 #include "interrupts.h"
38 #include "linux_table.h"
39 #include "namespaces.h"
40 #include "sysfs_kernel.h"
41 #include "proc_cpuinfo.h"
42 #include "proc_stat.h"
43 #include "proc_meminfo.h"
44 #include "proc_loadavg.h"
45 #include "proc_net_dev.h"
46 #include "proc_net_rpc.h"
47 #include "proc_net_sockstat.h"
48 #include "proc_net_tcp.h"
49 #include "proc_partitions.h"
50 #include "proc_net_netstat.h"
51 #include "proc_net_snmp6.h"
52 #include "proc_net_snmp.h"
53 #include "proc_scsi.h"
54 #include "proc_slabinfo.h"
55 #include "proc_uptime.h"
56 #include "proc_sys_fs.h"
57 #include "proc_vmstat.h"
58 #include "proc_net_softnet.h"
59 #include "proc_buddyinfo.h"
60 #include "proc_zoneinfo.h"
61 #include "numa_meminfo.h"
62 #include "ksm.h"
63 #include "sysfs_tapestats.h"
65 static proc_stat_t proc_stat;
66 static proc_meminfo_t proc_meminfo;
67 static proc_loadavg_t proc_loadavg;
68 static proc_net_rpc_t proc_net_rpc;
69 static proc_net_tcp_t proc_net_tcp;
70 static proc_net_sockstat_t proc_net_sockstat;
71 static struct utsname kernel_uname;
72 static char uname_string[sizeof(kernel_uname)];
73 static proc_slabinfo_t proc_slabinfo;
74 static sem_limits_t sem_limits;
75 static msg_limits_t msg_limits;
76 static shm_limits_t shm_limits;
77 static proc_uptime_t proc_uptime;
78 static proc_sys_fs_t proc_sys_fs;
79 static sysfs_kernel_t sysfs_kernel;
80 static shm_info_t _shm_info;
81 static sem_info_t _sem_info;
82 static msg_info_t _msg_info;
83 static proc_net_softnet_t proc_net_softnet;
84 static proc_buddyinfo_t proc_buddyinfo;
85 static ksm_info_t ksm_info;
87 static int _isDSO = 1; /* =0 I am a daemon */
88 static int rootfd = -1; /* af_unix pmdaroot */
89 static char *username;
90 static int hz;
92 /* globals */
93 int _pm_pageshift; /* for hinv.pagesize and for pages -> bytes */
94 int _pm_ncpus; /* maximum number of processors configurable */
95 int _pm_have_proc_vmstat; /* if /proc/vmstat is available */
96 int _pm_intr_size; /* size in bytes of interrupt sum count metric */
97 int _pm_ctxt_size; /* size in bytes of context switch count metric */
98 int _pm_cputime_size; /* size in bytes of most of the cputime metrics */
99 int _pm_idletime_size; /* size in bytes of the idle cputime metric */
100 proc_vmstat_t _pm_proc_vmstat;
101 proc_net_snmp_t _pm_proc_net_snmp;
102 pmdaInstid _pm_proc_net_snmp_indom_id[NR_ICMPMSG_COUNTERS];
103 proc_net_netstat_t _pm_proc_net_netstat;
106 * Metric Instance Domains (statically initialized ones only)
108 static pmdaInstid loadavg_indom_id[] = {
109 { 1, "1 minute" }, { 5, "5 minute" }, { 15, "15 minute" }
112 static pmdaInstid nfs_indom_id[NR_RPC_COUNTERS] = {
113 { 0, "null" },
114 { 1, "getattr" },
115 { 2, "setattr" },
116 { 3, "root" },
117 { 4, "lookup" },
118 { 5, "readlink" },
119 { 6, "read" },
120 { 7, "wrcache" },
121 { 8, "write" },
122 { 9, "create" },
123 { 10, "remove" },
124 { 11, "rename" },
125 { 12, "link" },
126 { 13, "symlink" },
127 { 14, "mkdir" },
128 { 15, "rmdir" },
129 { 16, "readdir" },
130 { 17, "statfs" }
133 static pmdaInstid nfs3_indom_id[NR_RPC3_COUNTERS] = {
134 { 0, "null" },
135 { 1, "getattr" },
136 { 2, "setattr" },
137 { 3, "lookup" },
138 { 4, "access" },
139 { 5, "readlink" },
140 { 6, "read" },
141 { 7, "write" },
142 { 8, "create" },
143 { 9, "mkdir" },
144 { 10, "symlink" },
145 { 11, "mknod" },
146 { 12, "remove" },
147 { 13, "rmdir" },
148 { 14, "rename" },
149 { 15, "link" },
150 { 16, "readdir" },
151 { 17, "readdir+" },
152 { 18, "statfs" },
153 { 19, "fsinfo" },
154 { 20, "pathconf" },
155 { 21, "commit" }
158 static pmdaInstid nfs4_cli_indom_id[NR_RPC4_CLI_COUNTERS] = {
159 { 0, "null" },
160 { 1, "read" },
161 { 2, "write" },
162 { 3, "commit" },
163 { 4, "open" },
164 { 5, "open_conf" },
165 { 6, "open_noat" },
166 { 7, "open_dgrd" },
167 { 8, "close" },
168 { 9, "setattr" },
169 { 10, "fsinfo" },
170 { 11, "renew" },
171 { 12, "setclntid" },
172 { 13, "confirm" },
173 { 14, "lock" },
174 { 15, "lockt" },
175 { 16, "locku" },
176 { 17, "access" },
177 { 18, "getattr" },
178 { 19, "lookup" },
179 { 20, "lookup_root" },
180 { 21, "remove" },
181 { 22, "rename" },
182 { 23, "link" },
183 { 24, "symlink" },
184 { 25, "create" },
185 { 26, "pathconf" },
186 { 27, "statfs" },
187 { 28, "readlink" },
188 { 29, "readdir" },
189 { 30, "server_caps" },
190 { 31, "delegreturn" },
191 { 32, "getacl" },
192 { 33, "setacl" },
193 { 34, "fs_locations" },
194 { 35, "rel_lkowner" },
195 { 36, "secinfo" },
196 { 37, "fsid_present" },
197 /* nfsv4.1 client ops */
198 { 38, "exchange_id" },
199 { 39, "create_ses" },
200 { 40, "destroy_ses" },
201 { 41, "sequence" },
202 { 42, "get_lease_t" },
203 { 43, "reclaim_comp" },
204 { 44, "layoutget" },
205 { 45, "getdevinfo" },
206 { 46, "layoutcommit" },
207 { 47, "secinfononam" },
208 { 48, "test_stateid" },
209 { 49, "free_stateid" },
210 { 50, "getdevlist" },
211 { 51, "bind_ses" },
212 { 52, "destroy_clntid" },
213 /* nfsv4.2 client ops */
214 { 53, "seek" },
215 { 54, "allocate" },
216 { 55, "deallocate" },
219 static pmdaInstid nfs4_svr_indom_id[NR_RPC4_SVR_COUNTERS] = {
221 * { 0, "null" } - the kernel actually only exports from "access"
222 * The first three values in the net/rpc/nfsd file are always zero
223 * In particular, see the nfs_opnum4 enum in <linux/nfs4.h>, these
224 * values are used as array indices in the kernel.
226 { 1, "op0-unused" },
227 { 2, "op1-unused"},
228 { 3, "op2-future"}, /* name matching the nfsstat convention */
229 { 4, "access" },
230 { 5, "close" },
231 { 6, "commit" },
232 { 7, "create" },
233 { 8, "delegpurge" },
234 { 9, "delegreturn" },
235 { 10, "getattr" },
236 { 11, "getfh" },
237 { 12, "link" },
238 { 13, "lock" },
239 { 14, "lockt" },
240 { 15, "locku" },
241 { 16, "lookup" },
242 { 17, "lookup_root" },
243 { 18, "nverify" },
244 { 19, "open" },
245 { 20, "openattr" },
246 { 21, "open_conf" },
247 { 22, "open_dgrd" },
248 { 23, "putfh" },
249 { 24, "putpubfh" },
250 { 25, "putrootfh" },
251 { 26, "read" },
252 { 27, "readdir" },
253 { 28, "readlink" },
254 { 29, "remove" },
255 { 30, "rename" },
256 { 31, "renew" },
257 { 32, "restorefh" },
258 { 33, "savefh" },
259 { 34, "secinfo" },
260 { 35, "setattr" },
261 { 36, "setcltid" },
262 { 37, "setcltidconf" },
263 { 38, "verify" },
264 { 39, "write" },
265 { 40, "rellockowner" },
266 /* nfsv4.1 server ops */
267 { 41, "bc_ctl" },
268 { 42, "bind_conn" },
269 { 43, "exchange_id" },
270 { 44, "create_ses" },
271 { 45, "destroy_ses" },
272 { 46, "free_stateid" },
273 { 47, "getdirdeleg" },
274 { 48, "getdevinfo" },
275 { 49, "getdevlist" },
276 { 50, "layoutcommit" },
277 { 51, "layoutget" },
278 { 52, "layoutreturn" },
279 { 53, "secinfononam" },
280 { 54, "sequence" },
281 { 55, "set_ssv" },
282 { 56, "test_stateid" },
283 { 57, "want_deleg" },
284 { 58, "destroy_clid" },
285 { 59, "reclaim_comp" },
286 /* nfsv4.2 server ops */
287 { 60, "allocate" },
288 { 61, "copy" },
289 { 62, "copy_notify" },
290 { 63, "deallocate" },
291 { 64, "io_advise" },
292 { 65, "layouterror" },
293 { 66, "layoutstats" },
294 { 67, "offload_cancel" },
295 { 68, "offload_status" },
296 { 69, "read_plus" },
297 { 70, "seek" },
298 { 71, "write_same" },
301 static pmdaIndom indomtab[] = {
302 { CPU_INDOM, 0, NULL }, /* cached */
303 { DISK_INDOM, 0, NULL }, /* cached */
304 { LOADAVG_INDOM, 3, loadavg_indom_id },
305 { NET_DEV_INDOM, 0, NULL },
306 { PROC_INTERRUPTS_INDOM, 0, NULL }, /* deprecated */
307 { FILESYS_INDOM, 0, NULL },
308 { SWAPDEV_INDOM, 0, NULL },
309 { NFS_INDOM, NR_RPC_COUNTERS, nfs_indom_id },
310 { NFS3_INDOM, NR_RPC3_COUNTERS, nfs3_indom_id },
311 { PROC_PROC_INDOM, 0, NULL }, /* migrated to the proc PMDA */
312 { PARTITIONS_INDOM, 0, NULL }, /* cached */
313 { SCSI_INDOM, 0, NULL },
314 { SLAB_INDOM, 0, NULL },
315 { STRINGS_INDOM, 0, NULL },
316 { NFS4_CLI_INDOM, NR_RPC4_CLI_COUNTERS, nfs4_cli_indom_id },
317 { NFS4_SVR_INDOM, NR_RPC4_SVR_COUNTERS, nfs4_svr_indom_id },
318 { QUOTA_PRJ_INDOM, 0, NULL }, /* migrated to the xfs PMDA */
319 { NET_ADDR_INDOM, 0, NULL },
320 { TMPFS_INDOM, 0, NULL },
321 { NODE_INDOM, 0, NULL }, /* cached */
322 { PROC_CGROUP_SUBSYS_INDOM, 0, NULL },
323 { PROC_CGROUP_MOUNTS_INDOM, 0, NULL },
324 { 0 }, /* deprecated LV_INDOM */
325 { ICMPMSG_INDOM, NR_ICMPMSG_COUNTERS, _pm_proc_net_snmp_indom_id },
326 { DM_INDOM, 0, NULL }, /* cached */
327 { MD_INDOM, 0, NULL }, /* cached */
328 { INTERRUPT_NAMES_INDOM, 0, NULL },
329 { SOFTIRQS_NAMES_INDOM, 0, NULL },
330 { IPC_STAT_INDOM, 0, NULL },
331 { IPC_MSG_INDOM, 0, NULL },
332 { IPC_SEM_INDOM, 0, NULL },
333 { BUDDYINFO_INDOM, 0, NULL },
334 { ZONEINFO_INDOM, 0, NULL },
335 { ZONEINFO_PROTECTION_INDOM, 0, NULL },
336 { TAPEDEV_INDOM, 0, NULL }
341 * all metrics supported in this PMDA - one table entry for each
344 static pmdaMetric metrictab[] = {
347 * /proc/stat cluster
350 /* kernel.percpu.cpu.user */
351 { NULL,
352 { PMDA_PMID(CLUSTER_STAT,0), KERNEL_UTYPE, CPU_INDOM, PM_SEM_COUNTER,
353 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
355 /* kernel.percpu.cpu.nice */
356 { NULL,
357 { PMDA_PMID(CLUSTER_STAT,1), KERNEL_UTYPE, CPU_INDOM, PM_SEM_COUNTER,
358 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
360 /* kernel.percpu.cpu.sys */
361 { NULL,
362 { PMDA_PMID(CLUSTER_STAT,2), KERNEL_UTYPE, CPU_INDOM, PM_SEM_COUNTER,
363 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
365 /* kernel.percpu.cpu.idle */
366 { NULL,
367 { PMDA_PMID(CLUSTER_STAT,3), KERNEL_UTYPE, CPU_INDOM, PM_SEM_COUNTER,
368 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
370 /* kernel.percpu.cpu.wait.total */
371 { NULL,
372 { PMDA_PMID(CLUSTER_STAT,30), KERNEL_UTYPE, CPU_INDOM, PM_SEM_COUNTER,
373 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
375 /* kernel.percpu.cpu.intr */
376 { NULL,
377 { PMDA_PMID(CLUSTER_STAT,31), KERNEL_UTYPE, CPU_INDOM, PM_SEM_COUNTER,
378 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
380 /* kernel.percpu.cpu.irq.soft */
381 { NULL,
382 { PMDA_PMID(CLUSTER_STAT,56), KERNEL_UTYPE, CPU_INDOM, PM_SEM_COUNTER,
383 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
385 /* kernel.percpu.cpu.irq.hard */
386 { NULL,
387 { PMDA_PMID(CLUSTER_STAT,57), KERNEL_UTYPE, CPU_INDOM, PM_SEM_COUNTER,
388 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
390 /* kernel.percpu.cpu.steal */
391 { NULL,
392 { PMDA_PMID(CLUSTER_STAT,58), KERNEL_UTYPE, CPU_INDOM, PM_SEM_COUNTER,
393 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
395 /* kernel.percpu.cpu.guest */
396 { NULL,
397 { PMDA_PMID(CLUSTER_STAT,61), KERNEL_UTYPE, CPU_INDOM, PM_SEM_COUNTER,
398 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
400 /* kernel.percpu.cpu.vuser */
401 { NULL,
402 { PMDA_PMID(CLUSTER_STAT,76), KERNEL_UTYPE, CPU_INDOM, PM_SEM_COUNTER,
403 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
405 /* kernel.percpu.cpu.guest_nice */
406 { NULL,
407 { PMDA_PMID(CLUSTER_STAT,83), KERNEL_UTYPE, CPU_INDOM, PM_SEM_COUNTER,
408 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
410 /* kernel.percpu.cpu.vnice */
411 { NULL,
412 { PMDA_PMID(CLUSTER_STAT,84), KERNEL_UTYPE, CPU_INDOM, PM_SEM_COUNTER,
413 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
416 /* kernel.pernode.cpu.user */
417 { NULL,
418 { PMDA_PMID(CLUSTER_STAT,62), KERNEL_UTYPE, NODE_INDOM, PM_SEM_COUNTER,
419 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
421 /* kernel.pernode.cpu.nice */
422 { NULL,
423 { PMDA_PMID(CLUSTER_STAT,63), KERNEL_UTYPE, NODE_INDOM, PM_SEM_COUNTER,
424 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
426 /* kernel.pernode.cpu.sys */
427 { NULL,
428 { PMDA_PMID(CLUSTER_STAT,64), KERNEL_UTYPE, NODE_INDOM, PM_SEM_COUNTER,
429 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
431 /* kernel.pernode.cpu.idle */
432 { NULL,
433 { PMDA_PMID(CLUSTER_STAT,65), KERNEL_UTYPE, NODE_INDOM, PM_SEM_COUNTER,
434 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
436 /* kernel.pernode.cpu.wait.total */
437 { NULL,
438 { PMDA_PMID(CLUSTER_STAT,69), KERNEL_UTYPE, NODE_INDOM, PM_SEM_COUNTER,
439 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
441 /* kernel.pernode.cpu.intr */
442 { NULL,
443 { PMDA_PMID(CLUSTER_STAT,66), KERNEL_UTYPE, NODE_INDOM, PM_SEM_COUNTER,
444 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
446 /* kernel.pernode.cpu.irq.soft */
447 { NULL,
448 { PMDA_PMID(CLUSTER_STAT,70), KERNEL_UTYPE, NODE_INDOM, PM_SEM_COUNTER,
449 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
451 /* kernel.pernode.cpu.irq.hard */
452 { NULL,
453 { PMDA_PMID(CLUSTER_STAT,71), KERNEL_UTYPE, NODE_INDOM, PM_SEM_COUNTER,
454 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
456 /* kernel.pernode.cpu.steal */
457 { NULL,
458 { PMDA_PMID(CLUSTER_STAT,67), KERNEL_UTYPE, NODE_INDOM, PM_SEM_COUNTER,
459 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
461 /* kernel.pernode.cpu.guest */
462 { NULL,
463 { PMDA_PMID(CLUSTER_STAT,68), KERNEL_UTYPE, NODE_INDOM, PM_SEM_COUNTER,
464 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
466 /* kernel.pernode.cpu.vuser */
467 { NULL,
468 { PMDA_PMID(CLUSTER_STAT,77), KERNEL_UTYPE, NODE_INDOM, PM_SEM_COUNTER,
469 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
471 /* kernel.pernode.cpu.guest_nice */
472 { NULL,
473 { PMDA_PMID(CLUSTER_STAT,85), KERNEL_UTYPE, NODE_INDOM, PM_SEM_COUNTER,
474 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
476 /* kernel.pernode.cpu.vnice */
477 { NULL,
478 { PMDA_PMID(CLUSTER_STAT,86), KERNEL_UTYPE, NODE_INDOM, PM_SEM_COUNTER,
479 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
481 /* disk.dev.read */
482 { NULL,
483 { PMDA_PMID(CLUSTER_STAT,4), KERNEL_ULONG, DISK_INDOM, PM_SEM_COUNTER,
484 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
486 /* disk.dev.write */
487 { NULL,
488 { PMDA_PMID(CLUSTER_STAT,5), KERNEL_ULONG, DISK_INDOM, PM_SEM_COUNTER,
489 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
491 /* disk.dev.blkread */
492 { NULL,
493 { PMDA_PMID(CLUSTER_STAT,6), KERNEL_ULONG, DISK_INDOM, PM_SEM_COUNTER,
494 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
496 /* disk.dev.blkwrite */
497 { NULL,
498 { PMDA_PMID(CLUSTER_STAT,7), KERNEL_ULONG, DISK_INDOM, PM_SEM_COUNTER,
499 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
501 /* disk.dev.avactive */
502 { NULL,
503 { PMDA_PMID(CLUSTER_STAT,46), PM_TYPE_U32, DISK_INDOM, PM_SEM_COUNTER,
504 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
506 /* disk.dev.aveq */
507 { NULL,
508 { PMDA_PMID(CLUSTER_STAT,47), PM_TYPE_U32, DISK_INDOM, PM_SEM_COUNTER,
509 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
511 /* disk.dev.read_merge */
512 { NULL,
513 { PMDA_PMID(CLUSTER_STAT,49), KERNEL_ULONG, DISK_INDOM, PM_SEM_COUNTER,
514 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
516 /* disk.dev.write_merge */
517 { NULL,
518 { PMDA_PMID(CLUSTER_STAT,50), KERNEL_ULONG, DISK_INDOM, PM_SEM_COUNTER,
519 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
521 /* disk.dev.scheduler */
522 { NULL,
523 { PMDA_PMID(CLUSTER_STAT,59), PM_TYPE_STRING, DISK_INDOM,
524 PM_SEM_INSTANT, PMDA_PMUNITS(0,0,0,0,0,0) }, },
526 /* disk.dev.read_rawactive */
527 { NULL,
528 { PMDA_PMID(CLUSTER_STAT,72), PM_TYPE_U32, DISK_INDOM, PM_SEM_COUNTER,
529 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
531 /* disk.dev.write_rawactive */
532 { NULL,
533 { PMDA_PMID(CLUSTER_STAT,73), PM_TYPE_U32, DISK_INDOM, PM_SEM_COUNTER,
534 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
536 /* disk.dev.total_rawactive */
537 { NULL,
538 { PMDA_PMID(CLUSTER_STAT,79), PM_TYPE_U32, DISK_INDOM, PM_SEM_COUNTER,
539 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
541 /* disk.all.avactive */
542 { NULL,
543 { PMDA_PMID(CLUSTER_STAT,44), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
544 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
546 /* disk.all.aveq */
547 { NULL,
548 { PMDA_PMID(CLUSTER_STAT,45), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
549 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
551 /* disk.all.read_merge */
552 { NULL,
553 { PMDA_PMID(CLUSTER_STAT,51), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
554 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
556 /* disk.all.write_merge */
557 { NULL,
558 { PMDA_PMID(CLUSTER_STAT,52), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
559 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
561 /* disk.all.read_rawactive */
562 { NULL,
563 { PMDA_PMID(CLUSTER_STAT,74), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
564 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
566 /* disk.all.write_rawactive */
567 { NULL,
568 { PMDA_PMID(CLUSTER_STAT,75), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
569 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
571 /* disk.all.total_rawactive */
572 { NULL,
573 { PMDA_PMID(CLUSTER_STAT,80), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
574 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
576 /* swap.pagesin */
577 { NULL,
578 { PMDA_PMID(CLUSTER_STAT,8), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
579 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
581 /* swap.pagesout */
582 { NULL,
583 { PMDA_PMID(CLUSTER_STAT,9), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
584 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
586 /* swap.in */
587 { NULL,
588 { PMDA_PMID(CLUSTER_STAT,10), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
589 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
591 /* swap.out */
592 { NULL,
593 { PMDA_PMID(CLUSTER_STAT,11), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
594 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
596 /* kernel.all.intr */
597 { NULL,
598 { PMDA_PMID(CLUSTER_STAT,12), KERNEL_UTYPE, PM_INDOM_NULL, PM_SEM_COUNTER,
599 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
601 /* kernel.all.pswitch */
602 { NULL,
603 { PMDA_PMID(CLUSTER_STAT,13), KERNEL_UTYPE, PM_INDOM_NULL, PM_SEM_COUNTER,
604 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
606 /* kernel.all.sysfork */
607 { NULL,
608 { PMDA_PMID(CLUSTER_STAT,14), KERNEL_ULONG, PM_INDOM_NULL, PM_SEM_COUNTER,
609 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
611 /* kernel.all.running */
612 { NULL,
613 { PMDA_PMID(CLUSTER_STAT,15), KERNEL_ULONG, PM_INDOM_NULL, PM_SEM_INSTANT,
614 PMDA_PMUNITS(0,0,0,0,0,0) }, },
616 /* kernel.all.blocked */
617 { NULL,
618 { PMDA_PMID(CLUSTER_STAT,16), KERNEL_ULONG, PM_INDOM_NULL, PM_SEM_INSTANT,
619 PMDA_PMUNITS(0,0,0,0,0,0) }, },
621 /* kernel.all.cpu.user */
622 { NULL,
623 { PMDA_PMID(CLUSTER_STAT,20), KERNEL_UTYPE, PM_INDOM_NULL, PM_SEM_COUNTER,
624 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
626 /* kernel.all.cpu.nice */
627 { NULL,
628 { PMDA_PMID(CLUSTER_STAT,21), KERNEL_UTYPE, PM_INDOM_NULL, PM_SEM_COUNTER,
629 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
631 /* kernel.all.cpu.sys */
632 { NULL,
633 { PMDA_PMID(CLUSTER_STAT,22), KERNEL_UTYPE, PM_INDOM_NULL, PM_SEM_COUNTER,
634 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
636 /* kernel.all.cpu.idle */
637 { NULL,
638 { PMDA_PMID(CLUSTER_STAT,23), KERNEL_UTYPE, PM_INDOM_NULL, PM_SEM_COUNTER,
639 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
641 /* kernel.all.cpu.intr */
642 { NULL,
643 { PMDA_PMID(CLUSTER_STAT,34), KERNEL_UTYPE, PM_INDOM_NULL, PM_SEM_COUNTER,
644 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
646 /* kernel.all.cpu.wait.total */
647 { NULL,
648 { PMDA_PMID(CLUSTER_STAT,35), KERNEL_UTYPE, PM_INDOM_NULL, PM_SEM_COUNTER,
649 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
651 /* kernel.all.cpu.irq.soft */
652 { NULL,
653 { PMDA_PMID(CLUSTER_STAT,53), KERNEL_UTYPE, PM_INDOM_NULL, PM_SEM_COUNTER,
654 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
656 /* kernel.all.cpu.irq.hard */
657 { NULL,
658 { PMDA_PMID(CLUSTER_STAT,54), KERNEL_UTYPE, PM_INDOM_NULL, PM_SEM_COUNTER,
659 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
661 /* kernel.all.cpu.steal */
662 { NULL,
663 { PMDA_PMID(CLUSTER_STAT,55), KERNEL_UTYPE, PM_INDOM_NULL, PM_SEM_COUNTER,
664 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
666 /* kernel.all.cpu.guest */
667 { NULL,
668 { PMDA_PMID(CLUSTER_STAT,60), KERNEL_UTYPE, PM_INDOM_NULL, PM_SEM_COUNTER,
669 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
671 /* kernel.all.cpu.vuser */
672 { NULL,
673 { PMDA_PMID(CLUSTER_STAT,78), KERNEL_UTYPE, PM_INDOM_NULL, PM_SEM_COUNTER,
674 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
676 /* kernel.all.cpu.guest_nice */
677 { NULL,
678 { PMDA_PMID(CLUSTER_STAT,81), KERNEL_UTYPE, PM_INDOM_NULL, PM_SEM_COUNTER,
679 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
681 /* kernel.all.cpu.vnice */
682 { NULL,
683 { PMDA_PMID(CLUSTER_STAT,82), KERNEL_UTYPE, PM_INDOM_NULL, PM_SEM_COUNTER,
684 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
686 /* disk.all.read */
687 { NULL,
688 { PMDA_PMID(CLUSTER_STAT,24), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
689 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
691 /* disk.all.write */
692 { NULL,
693 { PMDA_PMID(CLUSTER_STAT,25), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
694 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
696 /* disk.all.blkread */
697 { NULL,
698 { PMDA_PMID(CLUSTER_STAT,26), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
699 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
701 /* disk.all.blkwrite */
702 { NULL,
703 { PMDA_PMID(CLUSTER_STAT,27), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
704 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
706 /* disk.dev.total */
707 { NULL,
708 { PMDA_PMID(CLUSTER_STAT,28), PM_TYPE_U64, DISK_INDOM, PM_SEM_COUNTER,
709 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
711 /* disk.dev.blktotal */
712 { NULL,
713 { PMDA_PMID(CLUSTER_STAT,36), PM_TYPE_U64, DISK_INDOM, PM_SEM_COUNTER,
714 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
716 /* disk.all.total */
717 { NULL,
718 { PMDA_PMID(CLUSTER_STAT,29), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
719 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
721 /* disk.all.blktotal */
722 { NULL,
723 { PMDA_PMID(CLUSTER_STAT,37), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
724 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
726 /* hinv.ncpu */
727 { NULL,
728 { PMDA_PMID(CLUSTER_STAT,32), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
729 PMDA_PMUNITS(0,0,0,0,0,0) }, },
731 /* hinv.ndisk */
732 { NULL,
733 { PMDA_PMID(CLUSTER_STAT,33), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
734 PMDA_PMUNITS(0,0,0,0,0,0) }, },
736 /* hinv.nnode */
737 { NULL,
738 { PMDA_PMID(CLUSTER_STAT,19), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
739 PMDA_PMUNITS(0,0,0,0,0,0) }, },
741 /* kernel.all.hz */
742 { NULL,
743 { PMDA_PMID(CLUSTER_STAT,48), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
744 PMDA_PMUNITS(0,-1,1,0,PM_TIME_SEC,PM_COUNT_ONE) }, },
747 * /proc/uptime cluster
748 * Uptime modified and idletime added by Mike Mason <mmlnx@us.ibm.com>
751 /* kernel.all.uptime */
752 { NULL,
753 { PMDA_PMID(CLUSTER_UPTIME,0), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
754 PMDA_PMUNITS(0,1,0,0,PM_TIME_SEC,0) }, },
756 /* kernel.all.idletime */
757 { NULL,
758 { PMDA_PMID(CLUSTER_UPTIME,1), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
759 PMDA_PMUNITS(0,1,0,0,PM_TIME_SEC,0) }, },
762 * /proc/meminfo cluster
765 /* mem.physmem */
766 { NULL,
767 { PMDA_PMID(CLUSTER_MEMINFO,0), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_DISCRETE,
768 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
770 /* mem.util.used */
771 { NULL,
772 { PMDA_PMID(CLUSTER_MEMINFO,1), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
773 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
775 /* mem.util.free */
776 { NULL,
777 { PMDA_PMID(CLUSTER_MEMINFO,2), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
778 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
780 /* mem.util.shared */
781 { NULL,
782 { PMDA_PMID(CLUSTER_MEMINFO,3), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
783 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
785 /* mem.util.bufmem */
786 { NULL,
787 { PMDA_PMID(CLUSTER_MEMINFO,4), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
788 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
790 /* mem.util.cached */
791 { NULL,
792 { PMDA_PMID(CLUSTER_MEMINFO,5), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
793 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
795 /* mem.util.active */
796 { NULL,
797 { PMDA_PMID(CLUSTER_MEMINFO,14), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
798 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
800 /* mem.util.inactive */
801 { NULL,
802 { PMDA_PMID(CLUSTER_MEMINFO,15), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
803 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
805 /* mem.util.swapCached */
806 { NULL,
807 { PMDA_PMID(CLUSTER_MEMINFO,13), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
808 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
810 /* mem.util.highTotal */
811 { NULL,
812 { PMDA_PMID(CLUSTER_MEMINFO,16), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
813 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
815 /* mem.util.highFree */
816 { NULL,
817 { PMDA_PMID(CLUSTER_MEMINFO,17), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
818 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
820 /* mem.util.lowTotal */
821 { NULL,
822 { PMDA_PMID(CLUSTER_MEMINFO,18), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
823 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
825 /* mem.util.lowFree */
826 { NULL,
827 { PMDA_PMID(CLUSTER_MEMINFO,19), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
828 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
830 /* mem.util.swapTotal */
831 { NULL,
832 { PMDA_PMID(CLUSTER_MEMINFO,20), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
833 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
835 /* mem.util.swapFree */
836 { NULL,
837 { PMDA_PMID(CLUSTER_MEMINFO,21), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
838 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
840 /* mem.util.dirty */
841 { NULL,
842 { PMDA_PMID(CLUSTER_MEMINFO,22), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
843 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
845 /* mem.util.writeback */
846 { NULL,
847 { PMDA_PMID(CLUSTER_MEMINFO,23), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
848 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
850 /* mem.util.mapped */
851 { NULL,
852 { PMDA_PMID(CLUSTER_MEMINFO,24), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
853 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
855 /* mem.util.slab */
856 { NULL,
857 { PMDA_PMID(CLUSTER_MEMINFO,25), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
858 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
860 /* mem.util.committed_AS */
861 { NULL,
862 { PMDA_PMID(CLUSTER_MEMINFO,26), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
863 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
865 /* mem.util.pageTables */
866 { NULL,
867 { PMDA_PMID(CLUSTER_MEMINFO,27), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
868 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
870 /* mem.util.reverseMaps */
871 { NULL,
872 { PMDA_PMID(CLUSTER_MEMINFO,28), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
873 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
875 /* mem.util.cache_clean */
876 { NULL,
877 { PMDA_PMID(CLUSTER_MEMINFO,29), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
878 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
880 /* mem.util.anonpages */
881 { NULL,
882 { PMDA_PMID(CLUSTER_MEMINFO,30), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
883 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
885 /* mem.util.commitLimit */
886 { NULL,
887 { PMDA_PMID(CLUSTER_MEMINFO,31), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
888 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
890 /* mem.util.bounce */
891 { NULL,
892 { PMDA_PMID(CLUSTER_MEMINFO,32), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
893 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
895 /* mem.util.NFS_Unstable */
896 { NULL,
897 { PMDA_PMID(CLUSTER_MEMINFO,33), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
898 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
900 /* mem.util.slabReclaimable */
901 { NULL,
902 { PMDA_PMID(CLUSTER_MEMINFO,34), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
903 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
905 /* mem.util.slabUnreclaimable */
906 { NULL,
907 { PMDA_PMID(CLUSTER_MEMINFO,35), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
908 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
910 /* mem.util.active_anon */
911 { NULL,
912 { PMDA_PMID(CLUSTER_MEMINFO,36), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
913 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
915 /* mem.util.inactive_anon */
916 { NULL,
917 { PMDA_PMID(CLUSTER_MEMINFO,37), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
918 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
920 /* mem.util.active_file */
921 { NULL,
922 { PMDA_PMID(CLUSTER_MEMINFO,38), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
923 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
925 /* mem.util.inactive_file */
926 { NULL,
927 { PMDA_PMID(CLUSTER_MEMINFO,39), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
928 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
930 /* mem.util.unevictable */
931 { NULL,
932 { PMDA_PMID(CLUSTER_MEMINFO,40), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
933 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
935 /* mem.util.mlocked */
936 { NULL,
937 { PMDA_PMID(CLUSTER_MEMINFO,41), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
938 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
940 /* mem.util.shmem */
941 { NULL,
942 { PMDA_PMID(CLUSTER_MEMINFO,42), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
943 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
945 /* mem.util.kernelStack */
946 { NULL,
947 { PMDA_PMID(CLUSTER_MEMINFO,43), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
948 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
950 /* mem.util.hugepagesTotal */
951 { NULL,
952 { PMDA_PMID(CLUSTER_MEMINFO,44), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
953 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
955 /* mem.util.hugepagesFree */
956 { NULL,
957 { PMDA_PMID(CLUSTER_MEMINFO,45), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
958 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
960 /* mem.util.hugepagesRsvd */
961 { NULL,
962 { PMDA_PMID(CLUSTER_MEMINFO,46), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
963 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
965 /* mem.util.hugepagesSurp */
966 { NULL,
967 { PMDA_PMID(CLUSTER_MEMINFO,47), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
968 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
970 /* mem.util.directMap4k */
971 { NULL,
972 { PMDA_PMID(CLUSTER_MEMINFO,48), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
973 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
975 /* mem.util.directMap2M */
976 { NULL,
977 { PMDA_PMID(CLUSTER_MEMINFO,49), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
978 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
980 /* mem.util.vmallocTotal */
981 { NULL,
982 { PMDA_PMID(CLUSTER_MEMINFO,50), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
983 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
985 /* mem.util.vmallocUsed */
986 { NULL,
987 { PMDA_PMID(CLUSTER_MEMINFO,51), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
988 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
990 /* mem.util.vmallocChunk */
991 { NULL,
992 { PMDA_PMID(CLUSTER_MEMINFO,52), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
993 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
995 /* mem.util.mmap_copy */
996 { NULL,
997 { PMDA_PMID(CLUSTER_MEMINFO,53), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
998 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1000 /* mem.util.quicklists */
1001 { NULL,
1002 { PMDA_PMID(CLUSTER_MEMINFO,54), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
1003 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1005 /* mem.util.corrupthardware */
1006 { NULL,
1007 { PMDA_PMID(CLUSTER_MEMINFO,55), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
1008 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1010 /* mem.util.mmap_copy */
1011 { NULL,
1012 { PMDA_PMID(CLUSTER_MEMINFO,56), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
1013 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1015 /* mem.util.directMap1G */
1016 { NULL,
1017 { PMDA_PMID(CLUSTER_MEMINFO,57), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
1018 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1020 /* mem.util.available */
1021 { NULL,
1022 { PMDA_PMID(CLUSTER_MEMINFO,58), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
1023 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1025 /* hinv.hugepagesize */
1026 { NULL,
1027 { PMDA_PMID(CLUSTER_MEMINFO,59), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
1028 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
1030 /* mem.util.hugepagesTotalBytes */
1031 { NULL,
1032 { PMDA_PMID(CLUSTER_MEMINFO,60), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
1033 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
1035 /* mem.util.hugepagesFreeBytes */
1036 { NULL,
1037 { PMDA_PMID(CLUSTER_MEMINFO,61), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
1038 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
1040 /* mem.util.hugepagesRsvdBytes */
1041 { NULL,
1042 { PMDA_PMID(CLUSTER_MEMINFO,62), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
1043 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
1045 /* mem.util.hugepagesSurpBytes */
1046 { NULL,
1047 { PMDA_PMID(CLUSTER_MEMINFO,63), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
1048 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
1050 /* mem.numa.util.total */
1051 { NULL,
1052 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,0), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1053 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1055 /* mem.numa.util.free */
1056 { NULL,
1057 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,1), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1058 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1060 /* mem.numa.util.used */
1061 { NULL,
1062 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,2), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1063 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1065 /* mem.numa.util.active */
1066 { NULL,
1067 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,3), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1068 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1070 /* mem.numa.util.inactive */
1071 { NULL,
1072 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,4), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1073 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1075 /* mem.numa.util.active_anon */
1076 { NULL,
1077 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,5), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1078 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1080 /* mem.numa.util.inactive_anon */
1081 { NULL,
1082 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,6), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1083 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1085 /* mem.numa.util.active_file */
1086 { NULL,
1087 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,7), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1088 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1090 /* mem.numa.util.inactive_file */
1091 { NULL,
1092 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,8), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1093 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1095 /* mem.numa.util.highTotal */
1096 { NULL,
1097 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,9), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1098 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1100 /* mem.numa.util.highFree */
1101 { NULL,
1102 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,10), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1103 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1105 /* mem.numa.util.lowTotal */
1106 { NULL,
1107 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,11), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1108 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1110 /* mem.numa.util.lowFree */
1111 { NULL,
1112 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,12), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1113 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1115 /* mem.numa.util.unevictable */
1116 { NULL,
1117 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,13), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1118 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1120 /* mem.numa.util.mlocked */
1121 { NULL,
1122 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,14), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1123 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1125 /* mem.numa.util.dirty */
1126 { NULL,
1127 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,15), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1128 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1130 /* mem.numa.util.writeback */
1131 { NULL,
1132 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,16), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1133 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1135 /* mem.numa.util.filePages */
1136 { NULL,
1137 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,17), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1138 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1140 /* mem.numa.util.mapped */
1141 { NULL,
1142 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,18), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1143 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1145 /* mem.numa.util.anonpages */
1146 { NULL,
1147 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,19), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1148 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1150 /* mem.numa.util.shmem */
1151 { NULL,
1152 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,20), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1153 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1155 /* mem.numa.util.kernelStack */
1156 { NULL,
1157 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,21), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1158 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1160 /* mem.numa.util.pageTables */
1161 { NULL,
1162 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,22), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1163 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1165 /* mem.numa.util.NFS_Unstable */
1166 { NULL,
1167 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,23), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1168 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1170 /* mem.numa.util.bounce */
1171 { NULL,
1172 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,24), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1173 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1175 /* mem.numa.util.writebackTmp */
1176 { NULL,
1177 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,25), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1178 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1180 /* mem.numa.util.slab */
1181 { NULL,
1182 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,26), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1183 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1185 /* mem.numa.util.slabReclaimable */
1186 { NULL,
1187 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,27), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1188 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1190 /* mem.numa.util.slabUnreclaimable */
1191 { NULL,
1192 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,28), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1193 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1195 /* mem.numa.util.hugepagesTotal */
1196 { NULL,
1197 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,29), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1198 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1200 /* mem.numa.util.hugepagesFree */
1201 { NULL,
1202 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,30), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1203 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1205 /* mem.numa.util.hugepagesSurp */
1206 { NULL,
1207 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,31), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1208 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1210 /* mem.numa.alloc.hit */
1211 { NULL,
1212 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,32), PM_TYPE_U64, NODE_INDOM, PM_SEM_COUNTER,
1213 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1215 /* mem.numa.alloc.miss */
1216 { NULL,
1217 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,33), PM_TYPE_U64, NODE_INDOM, PM_SEM_COUNTER,
1218 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1220 /* mem.numa.alloc.foreign */
1221 { NULL,
1222 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,34), PM_TYPE_U64, NODE_INDOM, PM_SEM_COUNTER,
1223 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1225 /* mem.numa.alloc.interleave_hit */
1226 { NULL,
1227 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,35), PM_TYPE_U64, NODE_INDOM, PM_SEM_COUNTER,
1228 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1230 /* mem.numa.alloc.local_node */
1231 { NULL,
1232 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,36), PM_TYPE_U64, NODE_INDOM, PM_SEM_COUNTER,
1233 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1235 /* mem.numa.alloc.other_node */
1236 { NULL,
1237 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,37), PM_TYPE_U64, NODE_INDOM, PM_SEM_COUNTER,
1238 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1240 /* mem.numa.max_bandwidth */
1241 { NULL,
1242 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,38), PM_TYPE_DOUBLE, NODE_INDOM, PM_SEM_DISCRETE,
1243 PMDA_PMUNITS(1,-1,0,PM_SPACE_MBYTE,PM_TIME_SEC,0) }, },
1245 /* mem.numa.util.hugepagesTotalBytes */
1246 { NULL,
1247 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,39), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1248 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
1250 /* mem.numa.util.hugepagesFreeBytes */
1251 { NULL,
1252 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,40), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1253 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
1255 /* mem.numa.util.hugepagesSurpBytes */
1256 { NULL,
1257 { PMDA_PMID(CLUSTER_NUMA_MEMINFO,41), PM_TYPE_U64, NODE_INDOM, PM_SEM_INSTANT,
1258 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
1260 /* swap.length */
1261 { NULL,
1262 { PMDA_PMID(CLUSTER_MEMINFO,6), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
1263 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
1265 /* swap.used */
1266 { NULL,
1267 { PMDA_PMID(CLUSTER_MEMINFO,7), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
1268 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
1270 /* swap.free */
1271 { NULL,
1272 { PMDA_PMID(CLUSTER_MEMINFO,8), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
1273 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
1275 /* hinv.physmem */
1276 { NULL,
1277 { PMDA_PMID(CLUSTER_MEMINFO,9), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
1278 PMDA_PMUNITS(1,0,0,PM_SPACE_MBYTE,0,0) }, },
1280 /* mem.freemem */
1281 { NULL,
1282 { PMDA_PMID(CLUSTER_MEMINFO,10), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
1283 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1285 /* hinv.pagesize */
1286 { NULL,
1287 { PMDA_PMID(CLUSTER_MEMINFO,11), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
1288 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
1290 /* mem.util.other */
1291 { NULL,
1292 { PMDA_PMID(CLUSTER_MEMINFO,12), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
1293 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1296 * /proc/slabinfo cluster
1299 /* mem.slabinfo.objects.active */
1300 { NULL,
1301 { PMDA_PMID(CLUSTER_SLAB,0), PM_TYPE_U64, SLAB_INDOM, PM_SEM_INSTANT,
1302 PMDA_PMUNITS(0,0,0,0,0,0) } },
1304 /* mem.slabinfo.objects.total */
1305 { NULL,
1306 { PMDA_PMID(CLUSTER_SLAB,1), PM_TYPE_U64, SLAB_INDOM, PM_SEM_INSTANT,
1307 PMDA_PMUNITS(0,0,0,0,0,0) } },
1309 /* mem.slabinfo.objects.size */
1310 { NULL,
1311 { PMDA_PMID(CLUSTER_SLAB,2), PM_TYPE_U32, SLAB_INDOM, PM_SEM_INSTANT,
1312 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
1314 /* mem.slabinfo.slabs.active */
1315 { NULL,
1316 { PMDA_PMID(CLUSTER_SLAB,3), PM_TYPE_U32, SLAB_INDOM, PM_SEM_INSTANT,
1317 PMDA_PMUNITS(0,0,0,0,0,0) } },
1319 /* mem.slabinfo.slabs.total */
1320 { NULL,
1321 { PMDA_PMID(CLUSTER_SLAB,4), PM_TYPE_U32, SLAB_INDOM, PM_SEM_INSTANT,
1322 PMDA_PMUNITS(0,0,0,0,0,0) } },
1324 /* mem.slabinfo.slabs.pages_per_slab */
1325 { NULL,
1326 { PMDA_PMID(CLUSTER_SLAB,5), PM_TYPE_U32, SLAB_INDOM, PM_SEM_INSTANT,
1327 PMDA_PMUNITS(0,0,0,0,0,0) } },
1329 /* mem.slabinfo.slabs.objects_per_slab */
1330 { NULL,
1331 { PMDA_PMID(CLUSTER_SLAB,6), PM_TYPE_U32, SLAB_INDOM, PM_SEM_INSTANT,
1332 PMDA_PMUNITS(0,0,0,0,0,0) } },
1334 /* mem.slabinfo.slabs.total_size */
1335 { NULL,
1336 { PMDA_PMID(CLUSTER_SLAB,7), PM_TYPE_U64, SLAB_INDOM, PM_SEM_INSTANT,
1337 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
1340 * /proc/buddyinfo cluster
1343 /* mem.buddyinfo.pages */
1344 { NULL,
1345 { PMDA_PMID(CLUSTER_BUDDYINFO,0), KERNEL_ULONG, BUDDYINFO_INDOM,
1346 PM_SEM_INSTANT, PMDA_PMUNITS(0,0,0,0,0,0) }, },
1347 /* mem.buddyinfo.bytes */
1348 { NULL,
1349 { PMDA_PMID(CLUSTER_BUDDYINFO,1), PM_TYPE_U64, BUDDYINFO_INDOM,
1350 PM_SEM_INSTANT, PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1353 * /proc/loadavg cluster
1356 /* kernel.all.load */
1357 { NULL,
1358 { PMDA_PMID(CLUSTER_LOADAVG,0), PM_TYPE_FLOAT, LOADAVG_INDOM, PM_SEM_INSTANT,
1359 PMDA_PMUNITS(0,0,0,0,0,0) } },
1361 /* kernel.all.lastpid -- added by Mike Mason <mmlnx@us.ibm.com> */
1362 { NULL,
1363 { PMDA_PMID(CLUSTER_LOADAVG, 1), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
1364 PMDA_PMUNITS(0,0,0,0,0,0) } },
1366 /* kernel.all.runnable */
1367 { NULL,
1368 { PMDA_PMID(CLUSTER_LOADAVG, 2), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
1369 PMDA_PMUNITS(0,0,0,0,0,0) } },
1371 /* kernel.all.nprocs */
1372 { NULL,
1373 { PMDA_PMID(CLUSTER_LOADAVG, 3), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
1374 PMDA_PMUNITS(0,0,0,0,0,0) } },
1377 * /proc/net/dev cluster
1380 /* network.interface.in.bytes */
1381 { NULL,
1382 { PMDA_PMID(CLUSTER_NET_DEV,0), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1383 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
1385 /* network.interface.in.packets */
1386 { NULL,
1387 { PMDA_PMID(CLUSTER_NET_DEV,1), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1388 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1390 /* network.interface.in.errors */
1391 { NULL,
1392 { PMDA_PMID(CLUSTER_NET_DEV,2), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1393 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1395 /* network.interface.in.drops */
1396 { NULL,
1397 { PMDA_PMID(CLUSTER_NET_DEV,3), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1398 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1400 /* network.interface.in.fifo */
1401 { NULL,
1402 { PMDA_PMID(CLUSTER_NET_DEV,4), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1403 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1405 /* network.interface.in.frame */
1406 { NULL,
1407 { PMDA_PMID(CLUSTER_NET_DEV,5), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1408 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1410 /* network.interface.in.compressed */
1411 { NULL,
1412 { PMDA_PMID(CLUSTER_NET_DEV,6), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1413 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1415 /* network.interface.in.mcasts */
1416 { NULL,
1417 { PMDA_PMID(CLUSTER_NET_DEV,7), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1418 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1420 /* network.interface.out.bytes */
1421 { NULL,
1422 { PMDA_PMID(CLUSTER_NET_DEV,8), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1423 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
1425 /* network.interface.out.packets */
1426 { NULL,
1427 { PMDA_PMID(CLUSTER_NET_DEV,9), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1428 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1430 /* network.interface.out.errors */
1431 { NULL,
1432 { PMDA_PMID(CLUSTER_NET_DEV,10), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1433 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1435 /* network.interface.out.drops */
1436 { NULL,
1437 { PMDA_PMID(CLUSTER_NET_DEV,11), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1438 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1440 /* network.interface.out.fifo */
1441 { NULL,
1442 { PMDA_PMID(CLUSTER_NET_DEV,12), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1443 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1445 /* network.interface.collisions */
1446 { NULL,
1447 { PMDA_PMID(CLUSTER_NET_DEV,13), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1448 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1450 /* network.interface.out.carrier */
1451 { NULL,
1452 { PMDA_PMID(CLUSTER_NET_DEV,14), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1453 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1455 /* network.interface.out.compressed */
1456 { NULL,
1457 { PMDA_PMID(CLUSTER_NET_DEV,15), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1458 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1460 /* network.interface.total.bytes */
1461 { NULL,
1462 { PMDA_PMID(CLUSTER_NET_DEV,16), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1463 PMDA_PMUNITS(1,0,0,0,PM_SPACE_BYTE,0) }, },
1465 /* network.interface.total.packets */
1466 { NULL,
1467 { PMDA_PMID(CLUSTER_NET_DEV,17), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1468 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1470 /* network.interface.total.errors */
1471 { NULL,
1472 { PMDA_PMID(CLUSTER_NET_DEV,18), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1473 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1475 /* network.interface.total.drops */
1476 { NULL,
1477 { PMDA_PMID(CLUSTER_NET_DEV,19), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1478 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1480 /* network.interface.total.mcasts */
1481 { NULL,
1482 { PMDA_PMID(CLUSTER_NET_DEV,20), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_COUNTER,
1483 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1485 /* network.interface.mtu */
1486 { NULL,
1487 { PMDA_PMID(CLUSTER_NET_DEV,21), PM_TYPE_U32, NET_DEV_INDOM, PM_SEM_INSTANT,
1488 PMDA_PMUNITS(1,0,0,0,PM_SPACE_BYTE,0) }, },
1490 /* network.interface.speed */
1491 { NULL,
1492 { PMDA_PMID(CLUSTER_NET_DEV,22), PM_TYPE_FLOAT, NET_DEV_INDOM, PM_SEM_DISCRETE,
1493 PMDA_PMUNITS(1,-1,0,PM_SPACE_MBYTE,PM_TIME_SEC,0) }, },
1495 /* network.interface.baudrate */
1496 { NULL,
1497 { PMDA_PMID(CLUSTER_NET_DEV,23), PM_TYPE_U64, NET_DEV_INDOM, PM_SEM_DISCRETE,
1498 PMDA_PMUNITS(1,-1,0,PM_SPACE_BYTE,PM_TIME_SEC,0) }, },
1500 /* network.interface.duplex */
1501 { NULL,
1502 { PMDA_PMID(CLUSTER_NET_DEV,24), PM_TYPE_U32, NET_DEV_INDOM, PM_SEM_DISCRETE,
1503 PMDA_PMUNITS(0,0,0,0,0,0) }, },
1505 /* network.interface.up */
1506 { NULL,
1507 { PMDA_PMID(CLUSTER_NET_DEV,25), PM_TYPE_U32, NET_DEV_INDOM, PM_SEM_INSTANT,
1508 PMDA_PMUNITS(0,0,0,0,0,0) }, },
1510 /* network.interface.running */
1511 { NULL,
1512 { PMDA_PMID(CLUSTER_NET_DEV,26), PM_TYPE_U32, NET_DEV_INDOM, PM_SEM_INSTANT,
1513 PMDA_PMUNITS(0,0,0,0,0,0) }, },
1515 /* hinv.ninterface */
1516 { NULL,
1517 { PMDA_PMID(CLUSTER_NET_DEV,27), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
1518 PMDA_PMUNITS(0,0,0,0,0,0) }, },
1520 /* network.interface.inet_addr */
1521 { NULL,
1522 { PMDA_PMID(CLUSTER_NET_ADDR,0), PM_TYPE_STRING, NET_ADDR_INDOM, PM_SEM_INSTANT,
1523 PMDA_PMUNITS(0,0,0,0,0,0) }, },
1525 /* network.interface.ipv6_addr */
1526 { NULL,
1527 { PMDA_PMID(CLUSTER_NET_ADDR,1), PM_TYPE_STRING, NET_ADDR_INDOM, PM_SEM_INSTANT,
1528 PMDA_PMUNITS(0,0,0,0,0,0) }, },
1530 /* network.interface.ipv6_scope */
1531 { NULL,
1532 { PMDA_PMID(CLUSTER_NET_ADDR,2), PM_TYPE_STRING, NET_ADDR_INDOM, PM_SEM_INSTANT,
1533 PMDA_PMUNITS(0,0,0,0,0,0) }, },
1535 /* network.interface.hw_addr */
1536 { NULL,
1537 { PMDA_PMID(CLUSTER_NET_ADDR,3), PM_TYPE_STRING, NET_ADDR_INDOM, PM_SEM_INSTANT,
1538 PMDA_PMUNITS(0,0,0,0,0,0) }, },
1541 * filesys cluster
1544 /* hinv.nmounts */
1545 { NULL,
1546 { PMDA_PMID(CLUSTER_FILESYS,0), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
1547 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1549 /* filesys.capacity */
1550 { NULL,
1551 { PMDA_PMID(CLUSTER_FILESYS,1), PM_TYPE_U64, FILESYS_INDOM, PM_SEM_DISCRETE,
1552 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) } },
1554 /* filesys.used */
1555 { NULL,
1556 { PMDA_PMID(CLUSTER_FILESYS,2), PM_TYPE_U64, FILESYS_INDOM, PM_SEM_INSTANT,
1557 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) } },
1559 /* filesys.free */
1560 { NULL,
1561 { PMDA_PMID(CLUSTER_FILESYS,3), PM_TYPE_U64, FILESYS_INDOM, PM_SEM_INSTANT,
1562 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) } },
1564 /* filesys.maxfiles */
1565 { NULL,
1566 { PMDA_PMID(CLUSTER_FILESYS,4), PM_TYPE_U32, FILESYS_INDOM, PM_SEM_DISCRETE,
1567 PMDA_PMUNITS(0,0,0,0,0,0) } },
1569 /* filesys.usedfiles */
1570 { NULL,
1571 { PMDA_PMID(CLUSTER_FILESYS,5), PM_TYPE_U32, FILESYS_INDOM, PM_SEM_INSTANT,
1572 PMDA_PMUNITS(0,0,0,0,0,0) } },
1574 /* filesys.freefiles */
1575 { NULL,
1576 { PMDA_PMID(CLUSTER_FILESYS,6), PM_TYPE_U32, FILESYS_INDOM, PM_SEM_INSTANT,
1577 PMDA_PMUNITS(0,0,0,0,0,0) } },
1579 /* filesys.mountdir */
1580 { NULL,
1581 { PMDA_PMID(CLUSTER_FILESYS,7), PM_TYPE_STRING, FILESYS_INDOM, PM_SEM_DISCRETE,
1582 PMDA_PMUNITS(0,0,0,0,0,0) } },
1584 /* filesys.full */
1585 { NULL,
1586 { PMDA_PMID(CLUSTER_FILESYS,8), PM_TYPE_DOUBLE, FILESYS_INDOM, PM_SEM_INSTANT,
1587 PMDA_PMUNITS(0,0,0,0,0,0) } },
1589 /* filesys.blocksize */
1590 { NULL,
1591 { PMDA_PMID(CLUSTER_FILESYS,9), PM_TYPE_U32, FILESYS_INDOM, PM_SEM_INSTANT,
1592 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) } },
1594 /* filesys.avail */
1595 { NULL,
1596 { PMDA_PMID(CLUSTER_FILESYS,10), PM_TYPE_U64, FILESYS_INDOM, PM_SEM_INSTANT,
1597 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) } },
1599 /* filesys.readonly */
1600 { NULL,
1601 { PMDA_PMID(CLUSTER_FILESYS,11), PM_TYPE_U32, FILESYS_INDOM, PM_SEM_INSTANT,
1602 PMDA_PMUNITS(0,0,0,0,0,0) } },
1605 * tmpfs filesystem cluster
1608 /* tmpfs.capacity */
1609 { NULL,
1610 { PMDA_PMID(CLUSTER_TMPFS,1), PM_TYPE_U64, TMPFS_INDOM, PM_SEM_DISCRETE,
1611 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) } },
1613 /* tmpfs.used */
1614 { NULL,
1615 { PMDA_PMID(CLUSTER_TMPFS,2), PM_TYPE_U64, TMPFS_INDOM, PM_SEM_INSTANT,
1616 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) } },
1618 /* tmpfs.free */
1619 { NULL,
1620 { PMDA_PMID(CLUSTER_TMPFS,3), PM_TYPE_U64, TMPFS_INDOM, PM_SEM_INSTANT,
1621 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) } },
1623 /* tmpfs.maxfiles */
1624 { NULL,
1625 { PMDA_PMID(CLUSTER_TMPFS,4), PM_TYPE_U32, TMPFS_INDOM, PM_SEM_DISCRETE,
1626 PMDA_PMUNITS(0,0,0,0,0,0) } },
1628 /* tmpfs.usedfiles */
1629 { NULL,
1630 { PMDA_PMID(CLUSTER_TMPFS,5), PM_TYPE_U32, TMPFS_INDOM, PM_SEM_INSTANT,
1631 PMDA_PMUNITS(0,0,0,0,0,0) } },
1633 /* tmpfs.freefiles */
1634 { NULL,
1635 { PMDA_PMID(CLUSTER_TMPFS,6), PM_TYPE_U32, TMPFS_INDOM, PM_SEM_INSTANT,
1636 PMDA_PMUNITS(0,0,0,0,0,0) } },
1638 /* tmpfs.full */
1639 { NULL,
1640 { PMDA_PMID(CLUSTER_TMPFS,7), PM_TYPE_DOUBLE, TMPFS_INDOM, PM_SEM_INSTANT,
1641 PMDA_PMUNITS(0,0,0,0,0,0) } },
1644 * swapdev cluster
1647 /* swapdev.free */
1648 { NULL,
1649 { PMDA_PMID(CLUSTER_SWAPDEV,0), PM_TYPE_U32, SWAPDEV_INDOM, PM_SEM_INSTANT,
1650 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) } },
1652 /* swapdev.length */
1653 { NULL,
1654 { PMDA_PMID(CLUSTER_SWAPDEV,1), PM_TYPE_U32, SWAPDEV_INDOM, PM_SEM_DISCRETE,
1655 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) } },
1657 /* swapdev.maxswap */
1658 { NULL,
1659 { PMDA_PMID(CLUSTER_SWAPDEV,2), PM_TYPE_U32, SWAPDEV_INDOM, PM_SEM_DISCRETE,
1660 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) } },
1662 /* swapdev.vlength */
1663 { NULL,
1664 { PMDA_PMID(CLUSTER_SWAPDEV,3), PM_TYPE_U32, SWAPDEV_INDOM, PM_SEM_DISCRETE,
1665 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) } },
1667 /* swapdev.priority */
1668 { NULL,
1669 { PMDA_PMID(CLUSTER_SWAPDEV,4), PM_TYPE_32, SWAPDEV_INDOM, PM_SEM_INSTANT,
1670 PMDA_PMUNITS(0,0,0,0,0,0) } },
1673 * socket stat cluster
1676 /* network.sockstat.tcp.inuse */
1677 { &proc_net_sockstat.tcp[_PM_SOCKSTAT_INUSE],
1678 { PMDA_PMID(CLUSTER_NET_SOCKSTAT,0), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
1679 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1681 /* network.sockstat.tcp.highest */
1682 { &proc_net_sockstat.tcp[_PM_SOCKSTAT_HIGHEST],
1683 { PMDA_PMID(CLUSTER_NET_SOCKSTAT,1), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
1684 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1686 /* network.sockstat.tcp.util */
1687 { &proc_net_sockstat.tcp[_PM_SOCKSTAT_UTIL],
1688 { PMDA_PMID(CLUSTER_NET_SOCKSTAT,2), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
1689 PMDA_PMUNITS(0,0,0,0,0,0) } },
1691 /* network.sockstat.udp.inuse */
1692 { &proc_net_sockstat.udp[_PM_SOCKSTAT_INUSE],
1693 { PMDA_PMID(CLUSTER_NET_SOCKSTAT,3), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
1694 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1696 /* network.sockstat.udp.highest */
1697 { &proc_net_sockstat.udp[_PM_SOCKSTAT_HIGHEST],
1698 { PMDA_PMID(CLUSTER_NET_SOCKSTAT,4), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
1699 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1701 /* network.sockstat.udp.util */
1702 { &proc_net_sockstat.udp[_PM_SOCKSTAT_UTIL],
1703 { PMDA_PMID(CLUSTER_NET_SOCKSTAT,5), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
1704 PMDA_PMUNITS(0,0,0,0,0,0) } },
1706 /* network.sockstat.raw.inuse */
1707 { &proc_net_sockstat.raw[_PM_SOCKSTAT_INUSE],
1708 { PMDA_PMID(CLUSTER_NET_SOCKSTAT,6), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
1709 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1711 /* network.sockstat.raw.highest */
1712 { &proc_net_sockstat.raw[_PM_SOCKSTAT_HIGHEST],
1713 { PMDA_PMID(CLUSTER_NET_SOCKSTAT,7), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
1714 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1716 /* network.sockstat.raw.util */
1717 { &proc_net_sockstat.raw[_PM_SOCKSTAT_UTIL],
1718 { PMDA_PMID(CLUSTER_NET_SOCKSTAT,8), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
1719 PMDA_PMUNITS(0,0,0,0,0,0) } },
1722 * nfs cluster
1725 /* nfs.client.calls */
1726 { NULL,
1727 { PMDA_PMID(CLUSTER_NET_NFS,1), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1728 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1730 /* nfs.client.reqs */
1731 { NULL,
1732 { PMDA_PMID(CLUSTER_NET_NFS,4), PM_TYPE_U32, NFS_INDOM, PM_SEM_COUNTER,
1733 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1735 /* nfs.server.calls */
1736 { NULL,
1737 { PMDA_PMID(CLUSTER_NET_NFS,50), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1738 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1740 /* nfs.server.reqs */
1741 { NULL,
1742 { PMDA_PMID(CLUSTER_NET_NFS,12), PM_TYPE_U32, NFS_INDOM, PM_SEM_COUNTER,
1743 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1745 /* nfs3.client.calls */
1746 { NULL,
1747 { PMDA_PMID(CLUSTER_NET_NFS,60), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1748 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1750 /* nfs3.client.reqs */
1751 { NULL,
1752 { PMDA_PMID(CLUSTER_NET_NFS,61), PM_TYPE_U32, NFS3_INDOM, PM_SEM_COUNTER,
1753 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1755 /* nfs3.server.calls */
1756 { NULL,
1757 { PMDA_PMID(CLUSTER_NET_NFS,62), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1758 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1760 /* nfs3.server.reqs */
1761 { NULL,
1762 { PMDA_PMID(CLUSTER_NET_NFS,63), PM_TYPE_U32, NFS3_INDOM, PM_SEM_COUNTER,
1763 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1765 /* nfs4.client.calls */
1766 { NULL,
1767 { PMDA_PMID(CLUSTER_NET_NFS,64), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1768 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1770 /* nfs4.client.reqs */
1771 { NULL,
1772 { PMDA_PMID(CLUSTER_NET_NFS,65), PM_TYPE_U32, NFS4_CLI_INDOM, PM_SEM_COUNTER,
1773 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1775 /* nfs4.server.calls */
1776 { NULL,
1777 { PMDA_PMID(CLUSTER_NET_NFS,66), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1778 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1780 /* nfs4.server.reqs */
1781 { NULL,
1782 { PMDA_PMID(CLUSTER_NET_NFS,67), PM_TYPE_U32, NFS4_SVR_INDOM, PM_SEM_COUNTER,
1783 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1785 /* rpc.client.rpccnt */
1786 { &proc_net_rpc.client.rpccnt,
1787 { PMDA_PMID(CLUSTER_NET_NFS,20), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1788 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1790 /* rpc.client.rpcretrans */
1791 { &proc_net_rpc.client.rpcretrans,
1792 { PMDA_PMID(CLUSTER_NET_NFS,21), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1793 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1795 /* rpc.client.rpcauthrefresh */
1796 { &proc_net_rpc.client.rpcauthrefresh,
1797 { PMDA_PMID(CLUSTER_NET_NFS,22), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1798 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1800 /* rpc.client.netcnt */
1801 { &proc_net_rpc.client.netcnt,
1802 { PMDA_PMID(CLUSTER_NET_NFS,24), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1803 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1805 /* rpc.client.netudpcnt */
1806 { &proc_net_rpc.client.netudpcnt,
1807 { PMDA_PMID(CLUSTER_NET_NFS,25), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1808 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1810 /* rpc.client.nettcpcnt */
1811 { &proc_net_rpc.client.nettcpcnt,
1812 { PMDA_PMID(CLUSTER_NET_NFS,26), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1813 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1815 /* rpc.client.nettcpconn */
1816 { &proc_net_rpc.client.nettcpconn,
1817 { PMDA_PMID(CLUSTER_NET_NFS,27), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1818 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1820 /* rpc.server.rpccnt */
1821 { &proc_net_rpc.server.rpccnt,
1822 { PMDA_PMID(CLUSTER_NET_NFS,30), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1823 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1825 /* rpc.server.rpcerr */
1826 { &proc_net_rpc.server.rpcerr,
1827 { PMDA_PMID(CLUSTER_NET_NFS,31), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1828 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1830 /* rpc.server.rpcbadfmt */
1831 { &proc_net_rpc.server.rpcbadfmt,
1832 { PMDA_PMID(CLUSTER_NET_NFS,32), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1833 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1835 /* rpc.server.rpcbadauth */
1836 { &proc_net_rpc.server.rpcbadauth,
1837 { PMDA_PMID(CLUSTER_NET_NFS,33), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1838 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1840 /* rpc.server.rpcbadclnt */
1841 { &proc_net_rpc.server.rpcbadclnt,
1842 { PMDA_PMID(CLUSTER_NET_NFS,34), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1843 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1845 /* rpc.server.rchits */
1846 { &proc_net_rpc.server.rchits,
1847 { PMDA_PMID(CLUSTER_NET_NFS,35), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1848 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1850 /* rpc.server.rcmisses */
1851 { &proc_net_rpc.server.rcmisses,
1852 { PMDA_PMID(CLUSTER_NET_NFS,36), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1853 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1855 /* rpc.server.rcnocache */
1856 { &proc_net_rpc.server.rcnocache,
1857 { PMDA_PMID(CLUSTER_NET_NFS,37), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1858 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1860 /* rpc.server.fh_cached */
1861 { &proc_net_rpc.server.fh_cached,
1862 { PMDA_PMID(CLUSTER_NET_NFS,38), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1863 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1865 /* rpc.server.fh_valid */
1866 { &proc_net_rpc.server.fh_valid,
1867 { PMDA_PMID(CLUSTER_NET_NFS,39), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1868 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1870 /* rpc.server.fh_fixup */
1871 { &proc_net_rpc.server.fh_fixup,
1872 { PMDA_PMID(CLUSTER_NET_NFS,40), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1873 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1875 /* rpc.server.fh_lookup */
1876 { &proc_net_rpc.server.fh_lookup,
1877 { PMDA_PMID(CLUSTER_NET_NFS,41), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1878 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1880 /* rpc.server.fh_stale */
1881 { &proc_net_rpc.server.fh_stale,
1882 { PMDA_PMID(CLUSTER_NET_NFS,42), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1883 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1885 /* rpc.server.fh_concurrent */
1886 { &proc_net_rpc.server.fh_concurrent,
1887 { PMDA_PMID(CLUSTER_NET_NFS,43), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1888 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1890 /* rpc.server.netcnt */
1891 { &proc_net_rpc.server.netcnt,
1892 { PMDA_PMID(CLUSTER_NET_NFS,44), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1893 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1895 /* rpc.server.netudpcnt */
1896 { &proc_net_rpc.server.netudpcnt,
1897 { PMDA_PMID(CLUSTER_NET_NFS,45), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1898 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1900 /* rpc.server.nettcpcnt */
1901 { &proc_net_rpc.server.nettcpcnt,
1902 { PMDA_PMID(CLUSTER_NET_NFS,46), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1903 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1905 /* rpc.server.nettcpconn */
1906 { &proc_net_rpc.server.nettcpcnt,
1907 { PMDA_PMID(CLUSTER_NET_NFS,47), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1908 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1910 /* rpc.server.fh_anon */
1911 { &proc_net_rpc.server.fh_anon,
1912 { PMDA_PMID(CLUSTER_NET_NFS,51), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1913 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1915 /* rpc.server.fh_nocache_dir */
1916 { &proc_net_rpc.server.fh_nocache_dir,
1917 { PMDA_PMID(CLUSTER_NET_NFS,52), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1918 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1920 /* rpc.server.fh_nocache_nondir */
1921 { &proc_net_rpc.server.fh_nocache_nondir,
1922 { PMDA_PMID(CLUSTER_NET_NFS,53), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1923 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1925 /* rpc.server.io_read */
1926 { &proc_net_rpc.server.io_read,
1927 { PMDA_PMID(CLUSTER_NET_NFS,54), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1928 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) } },
1930 /* rpc.server.io_write */
1931 { &proc_net_rpc.server.io_write,
1932 { PMDA_PMID(CLUSTER_NET_NFS,55), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1933 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) } },
1935 /* rpc.server.th_cnt */
1936 { &proc_net_rpc.server.th_cnt,
1937 { PMDA_PMID(CLUSTER_NET_NFS,56), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
1938 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1940 /* rpc.server.th_fullcnt */
1941 { &proc_net_rpc.server.th_fullcnt,
1942 { PMDA_PMID(CLUSTER_NET_NFS,57), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1943 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1945 /* rpc.server.ra_size */
1946 { &proc_net_rpc.server.ra_size,
1947 { PMDA_PMID(CLUSTER_NET_NFS,68), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1948 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1950 /* rpc.server.ra_hits */
1951 { &proc_net_rpc.server.ra_hits,
1952 { PMDA_PMID(CLUSTER_NET_NFS,69), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1953 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1955 /* rpc.server.ra_misses */
1956 { &proc_net_rpc.server.ra_misses,
1957 { PMDA_PMID(CLUSTER_NET_NFS,70), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
1958 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
1961 * /proc/partitions cluster
1964 /* disk.partitions.read */
1965 { NULL,
1966 { PMDA_PMID(CLUSTER_PARTITIONS,0), KERNEL_ULONG, PARTITIONS_INDOM, PM_SEM_COUNTER,
1967 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1969 /* disk.partitions.write */
1970 { NULL,
1971 { PMDA_PMID(CLUSTER_PARTITIONS,1), KERNEL_ULONG, PARTITIONS_INDOM, PM_SEM_COUNTER,
1972 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1974 /* disk.partitions.total */
1975 { NULL,
1976 { PMDA_PMID(CLUSTER_PARTITIONS,2), PM_TYPE_U32, PARTITIONS_INDOM, PM_SEM_COUNTER,
1977 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1979 /* disk.partitions.blkread */
1980 { NULL,
1981 { PMDA_PMID(CLUSTER_PARTITIONS,3), KERNEL_ULONG, PARTITIONS_INDOM, PM_SEM_COUNTER,
1982 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1984 /* disk.partitions.blkwrite */
1985 { NULL,
1986 { PMDA_PMID(CLUSTER_PARTITIONS,4), KERNEL_ULONG, PARTITIONS_INDOM, PM_SEM_COUNTER,
1987 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1989 /* disk.partitions.blktotal */
1990 { NULL,
1991 { PMDA_PMID(CLUSTER_PARTITIONS,5), PM_TYPE_U32, PARTITIONS_INDOM, PM_SEM_COUNTER,
1992 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
1994 /* disk.partitions.read_bytes */
1995 { NULL,
1996 { PMDA_PMID(CLUSTER_PARTITIONS,6), PM_TYPE_U32, PARTITIONS_INDOM, PM_SEM_COUNTER,
1997 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
1999 /* disk.partitions.write_bytes */
2000 { NULL,
2001 { PMDA_PMID(CLUSTER_PARTITIONS,7), PM_TYPE_U32, PARTITIONS_INDOM, PM_SEM_COUNTER,
2002 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
2004 /* disk.partitions.total_bytes */
2005 { NULL,
2006 { PMDA_PMID(CLUSTER_PARTITIONS,8), PM_TYPE_U32, PARTITIONS_INDOM, PM_SEM_COUNTER,
2007 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
2009 /* disk.partitions.read_merge*/
2010 { NULL,
2011 { PMDA_PMID(CLUSTER_PARTITIONS,9), KERNEL_ULONG, PARTITIONS_INDOM, PM_SEM_COUNTER,
2012 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
2014 /* disk.partitions.write_merge */
2015 { NULL,
2016 { PMDA_PMID(CLUSTER_PARTITIONS,10), KERNEL_ULONG, PARTITIONS_INDOM, PM_SEM_COUNTER,
2017 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
2019 /* disk.partitions.avactive */
2020 { NULL,
2021 { PMDA_PMID(CLUSTER_PARTITIONS,11), PM_TYPE_U32, PARTITIONS_INDOM, PM_SEM_COUNTER,
2022 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
2024 /* disk.partitions.aveq */
2025 { NULL,
2026 { PMDA_PMID(CLUSTER_PARTITIONS,12), PM_TYPE_U32, PARTITIONS_INDOM, PM_SEM_COUNTER,
2027 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
2029 /* disk.partitions.read_rawactive */
2030 { NULL,
2031 { PMDA_PMID(CLUSTER_PARTITIONS,13), PM_TYPE_U32, PARTITIONS_INDOM, PM_SEM_COUNTER,
2032 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
2034 /* disk.partitions.write_rawactive */
2035 { NULL,
2036 { PMDA_PMID(CLUSTER_PARTITIONS,14), PM_TYPE_U32, PARTITIONS_INDOM, PM_SEM_COUNTER,
2037 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
2039 /* disk.partitions.total_rawactive */
2040 { NULL,
2041 { PMDA_PMID(CLUSTER_PARTITIONS,15), PM_TYPE_U32, PARTITIONS_INDOM, PM_SEM_COUNTER,
2042 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
2044 /* disk.dev.read_bytes */
2045 { NULL,
2046 { PMDA_PMID(CLUSTER_STAT,38), PM_TYPE_U32, DISK_INDOM, PM_SEM_COUNTER,
2047 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
2049 /* disk.dev.write_bytes */
2050 { NULL,
2051 { PMDA_PMID(CLUSTER_STAT,39), PM_TYPE_U32, DISK_INDOM, PM_SEM_COUNTER,
2052 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
2054 /* disk.dev.total_bytes */
2055 { NULL,
2056 { PMDA_PMID(CLUSTER_STAT,40), PM_TYPE_U32, DISK_INDOM, PM_SEM_COUNTER,
2057 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
2059 /* disk.all.read_bytes */
2060 { NULL,
2061 { PMDA_PMID(CLUSTER_STAT,41), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
2062 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
2064 /* disk.all.write_bytes */
2065 { NULL,
2066 { PMDA_PMID(CLUSTER_STAT,42), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
2067 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
2069 /* disk.all.total_bytes */
2070 { NULL,
2071 { PMDA_PMID(CLUSTER_STAT,43), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_COUNTER,
2072 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
2075 * kernel_uname cluster
2078 /* kernel.uname.release */
2079 { kernel_uname.release,
2080 { PMDA_PMID(CLUSTER_KERNEL_UNAME, 0), PM_TYPE_STRING, PM_INDOM_NULL, PM_SEM_INSTANT,
2081 PMDA_PMUNITS(0,0,0,0,0,0) } },
2083 /* kernel.uname.version */
2084 { kernel_uname.version,
2085 { PMDA_PMID(CLUSTER_KERNEL_UNAME, 1), PM_TYPE_STRING, PM_INDOM_NULL, PM_SEM_INSTANT,
2086 PMDA_PMUNITS(0,0,0,0,0,0) } },
2088 /* kernel.uname.sysname */
2089 { kernel_uname.sysname,
2090 { PMDA_PMID(CLUSTER_KERNEL_UNAME, 2), PM_TYPE_STRING, PM_INDOM_NULL, PM_SEM_INSTANT,
2091 PMDA_PMUNITS(0,0,0,0,0,0) } },
2093 /* kernel.uname.machine */
2094 { kernel_uname.machine,
2095 { PMDA_PMID(CLUSTER_KERNEL_UNAME, 3), PM_TYPE_STRING, PM_INDOM_NULL, PM_SEM_DISCRETE,
2096 PMDA_PMUNITS(0,0,0,0,0,0) } },
2098 /* kernel.uname.nodename */
2099 { kernel_uname.nodename,
2100 { PMDA_PMID(CLUSTER_KERNEL_UNAME, 4), PM_TYPE_STRING, PM_INDOM_NULL, PM_SEM_INSTANT,
2101 PMDA_PMUNITS(0,0,0,0,0,0) } },
2103 /* pmda.uname */
2104 { NULL,
2105 { PMDA_PMID(CLUSTER_KERNEL_UNAME, 5), PM_TYPE_STRING, PM_INDOM_NULL, PM_SEM_INSTANT,
2106 PMDA_PMUNITS(0,0,0,0,0,0) } },
2108 /* pmda.version */
2109 { NULL,
2110 { PMDA_PMID(CLUSTER_KERNEL_UNAME, 6), PM_TYPE_STRING, PM_INDOM_NULL, PM_SEM_INSTANT,
2111 PMDA_PMUNITS(0,0,0,0,0,0) } },
2113 /* kernel.uname.distro */
2114 { NULL,
2115 { PMDA_PMID(CLUSTER_KERNEL_UNAME, 7), PM_TYPE_STRING, PM_INDOM_NULL, PM_SEM_INSTANT,
2116 PMDA_PMUNITS(0,0,0,0,0,0) } },
2119 * network snmp cluster
2122 /* network.ip.forwarding */
2123 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_FORWARDING],
2124 { PMDA_PMID(CLUSTER_NET_SNMP,0), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2125 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2127 /* network.ip.defaultttl */
2128 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_DEFAULTTTL],
2129 { PMDA_PMID(CLUSTER_NET_SNMP,1), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2130 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2132 /* network.ip.inreceives */
2133 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_INRECEIVES],
2134 { PMDA_PMID(CLUSTER_NET_SNMP,2), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2135 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2137 /* network.ip.inhdrerrors */
2138 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_INHDRERRORS],
2139 { PMDA_PMID(CLUSTER_NET_SNMP,3), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2140 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2142 /* network.ip.inaddrerrors */
2143 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_INADDRERRORS],
2144 { PMDA_PMID(CLUSTER_NET_SNMP,4), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2145 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2147 /* network.ip.forwdatagrams */
2148 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_FORWDATAGRAMS],
2149 { PMDA_PMID(CLUSTER_NET_SNMP,5), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2150 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2152 /* network.ip.inunknownprotos */
2153 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_INUNKNOWNPROTOS],
2154 { PMDA_PMID(CLUSTER_NET_SNMP,6), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2155 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2157 /* network.ip.indiscards */
2158 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_INDISCARDS],
2159 { PMDA_PMID(CLUSTER_NET_SNMP,7), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2160 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2162 /* network.ip.indelivers */
2163 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_INDELIVERS],
2164 { PMDA_PMID(CLUSTER_NET_SNMP,8), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2165 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2167 /* network.ip.outrequests */
2168 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_OUTREQUESTS],
2169 { PMDA_PMID(CLUSTER_NET_SNMP,9), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2170 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2172 /* network.ip.outdiscards */
2173 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_OUTDISCARDS],
2174 { PMDA_PMID(CLUSTER_NET_SNMP,10), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2175 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2177 /* network.ip.outnoroutes */
2178 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_OUTNOROUTES],
2179 { PMDA_PMID(CLUSTER_NET_SNMP,11), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2180 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2182 /* network.ip.reasmtimeout */
2183 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_REASMTIMEOUT],
2184 { PMDA_PMID(CLUSTER_NET_SNMP,12), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2185 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2187 /* network.ip.reasmreqds */
2188 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_REASMREQDS],
2189 { PMDA_PMID(CLUSTER_NET_SNMP,13), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2190 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2192 /* network.ip.reasmoks */
2193 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_REASMOKS],
2194 { PMDA_PMID(CLUSTER_NET_SNMP,14), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2195 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2197 /* network.ip.reasmfails */
2198 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_REASMFAILS],
2199 { PMDA_PMID(CLUSTER_NET_SNMP,15), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2200 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2202 /* network.ip.fragoks */
2203 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_FRAGOKS],
2204 { PMDA_PMID(CLUSTER_NET_SNMP,16), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2205 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2207 /* network.ip.fragfails */
2208 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_FRAGFAILS],
2209 { PMDA_PMID(CLUSTER_NET_SNMP,17), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2210 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2212 /* network.ip.fragcreates */
2213 { &_pm_proc_net_snmp.ip[_PM_SNMP_IP_FRAGCREATES],
2214 { PMDA_PMID(CLUSTER_NET_SNMP,18), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2215 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2218 /* network.icmp.inmsgs */
2219 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_INMSGS],
2220 { PMDA_PMID(CLUSTER_NET_SNMP,20), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2221 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2223 /* network.icmp.inerrors */
2224 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_INERRORS],
2225 { PMDA_PMID(CLUSTER_NET_SNMP,21), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2226 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2228 /* network.icmp.indestunreachs */
2229 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_INDESTUNREACHS],
2230 { PMDA_PMID(CLUSTER_NET_SNMP,22), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2231 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2233 /* network.icmp.intimeexcds */
2234 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_INTIMEEXCDS],
2235 { PMDA_PMID(CLUSTER_NET_SNMP,23), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2236 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2238 /* network.icmp.inparmprobs */
2239 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_INPARMPROBS],
2240 { PMDA_PMID(CLUSTER_NET_SNMP,24), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2241 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2243 /* network.icmp.insrcquenchs */
2244 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_INSRCQUENCHS],
2245 { PMDA_PMID(CLUSTER_NET_SNMP,25), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2246 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2248 /* network.icmp.inredirects */
2249 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_INREDIRECTS],
2250 { PMDA_PMID(CLUSTER_NET_SNMP,26), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2251 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2253 /* network.icmp.inechos */
2254 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_INECHOS],
2255 { PMDA_PMID(CLUSTER_NET_SNMP,27), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2256 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2258 /* network.icmp.inechoreps */
2259 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_INECHOREPS],
2260 { PMDA_PMID(CLUSTER_NET_SNMP,28), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2261 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2263 /* network.icmp.intimestamps */
2264 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_INTIMESTAMPS],
2265 { PMDA_PMID(CLUSTER_NET_SNMP,29), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2266 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2268 /* network.icmp.intimestampreps */
2269 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_INTIMESTAMPREPS],
2270 { PMDA_PMID(CLUSTER_NET_SNMP,30), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2271 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2273 /* network.icmp.inaddrmasks */
2274 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_INADDRMASKS],
2275 { PMDA_PMID(CLUSTER_NET_SNMP,31), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2276 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2278 /* network.icmp.inaddrmaskreps */
2279 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_INADDRMASKREPS],
2280 { PMDA_PMID(CLUSTER_NET_SNMP,32), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2281 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2283 /* network.icmp.outmsgs */
2284 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_OUTMSGS],
2285 { PMDA_PMID(CLUSTER_NET_SNMP,33), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2286 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2288 /* network.icmp.outerrors */
2289 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_OUTERRORS],
2290 { PMDA_PMID(CLUSTER_NET_SNMP,34), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2291 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2293 /* network.icmp.outdestunreachs */
2294 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_OUTDESTUNREACHS],
2295 { PMDA_PMID(CLUSTER_NET_SNMP,35), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2296 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2298 /* network.icmp.outtimeexcds */
2299 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_OUTTIMEEXCDS],
2300 { PMDA_PMID(CLUSTER_NET_SNMP,36), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2301 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2303 /* network.icmp.outparmprobs */
2304 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_OUTPARMPROBS],
2305 { PMDA_PMID(CLUSTER_NET_SNMP,37), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2306 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2308 /* network.icmp.outsrcquenchs */
2309 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_OUTSRCQUENCHS],
2310 { PMDA_PMID(CLUSTER_NET_SNMP,38), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2311 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2313 /* network.icmp.outredirects */
2314 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_OUTREDIRECTS],
2315 { PMDA_PMID(CLUSTER_NET_SNMP,39), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2316 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2318 /* network.icmp.outechos */
2319 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_OUTECHOS],
2320 { PMDA_PMID(CLUSTER_NET_SNMP,40), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2321 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2323 /* network.icmp.outechoreps */
2324 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_OUTECHOREPS],
2325 { PMDA_PMID(CLUSTER_NET_SNMP,41), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2326 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2328 /* network.icmp.outtimestamps */
2329 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_OUTTIMESTAMPS],
2330 { PMDA_PMID(CLUSTER_NET_SNMP,42), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2331 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2333 /* network.icmp.outtimestampreps */
2334 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_OUTTIMESTAMPREPS],
2335 { PMDA_PMID(CLUSTER_NET_SNMP,43), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2336 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2338 /* network.icmp.outaddrmasks */
2339 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_OUTADDRMASKS],
2340 { PMDA_PMID(CLUSTER_NET_SNMP,44), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2341 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2343 /* network.icmp.outaddrmaskreps */
2344 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_OUTADDRMASKREPS],
2345 { PMDA_PMID(CLUSTER_NET_SNMP,45), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2346 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2348 /* network.icmp.incsumerrors */
2349 { &_pm_proc_net_snmp.icmp[_PM_SNMP_ICMP_INCSUMERRORS],
2350 { PMDA_PMID(CLUSTER_NET_SNMP,46), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2351 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2354 /* network.tcp.rtoalgorithm */
2355 { &_pm_proc_net_snmp.tcp[_PM_SNMP_TCP_RTOALGORITHM],
2356 { PMDA_PMID(CLUSTER_NET_SNMP,50), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
2357 PMDA_PMUNITS(0,0,0,0,0,0) } },
2359 /* network.tcp.rtomin */
2360 { &_pm_proc_net_snmp.tcp[_PM_SNMP_TCP_RTOMIN],
2361 { PMDA_PMID(CLUSTER_NET_SNMP,51), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
2362 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) } },
2364 /* network.tcp.rtomax */
2365 { &_pm_proc_net_snmp.tcp[_PM_SNMP_TCP_RTOMAX],
2366 { PMDA_PMID(CLUSTER_NET_SNMP,52), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
2367 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) } },
2369 /* network.tcp.maxconn */
2370 { &_pm_proc_net_snmp.tcp[_PM_SNMP_TCP_MAXCONN],
2371 { PMDA_PMID(CLUSTER_NET_SNMP,53), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
2372 PMDA_PMUNITS(0,0,0,0,0,0) } },
2374 /* network.tcpconn.established */
2375 { &proc_net_tcp.stat[_PM_TCP_ESTABLISHED],
2376 { PMDA_PMID(CLUSTER_NET_TCP, 1), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
2377 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2379 /* network.tcpconn.syn_sent */
2380 { &proc_net_tcp.stat[_PM_TCP_SYN_SENT],
2381 { PMDA_PMID(CLUSTER_NET_TCP, 2), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
2382 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2384 /* network.tcpconn.syn_recv */
2385 { &proc_net_tcp.stat[_PM_TCP_SYN_RECV],
2386 { PMDA_PMID(CLUSTER_NET_TCP, 3), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
2387 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2389 /* network.tcpconn.fin_wait1 */
2390 { &proc_net_tcp.stat[_PM_TCP_FIN_WAIT1],
2391 { PMDA_PMID(CLUSTER_NET_TCP, 4), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
2392 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2394 /* network.tcpconn.fin_wait2 */
2395 { &proc_net_tcp.stat[_PM_TCP_FIN_WAIT2],
2396 { PMDA_PMID(CLUSTER_NET_TCP, 5), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
2397 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2399 /* network.tcpconn.time_wait */
2400 { &proc_net_tcp.stat[_PM_TCP_TIME_WAIT],
2401 { PMDA_PMID(CLUSTER_NET_TCP, 6), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
2402 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2404 /* network.tcpconn.close */
2405 { &proc_net_tcp.stat[_PM_TCP_CLOSE],
2406 { PMDA_PMID(CLUSTER_NET_TCP, 7), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
2407 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2409 /* network.tcpconn.close_wait */
2410 { &proc_net_tcp.stat[_PM_TCP_CLOSE_WAIT],
2411 { PMDA_PMID(CLUSTER_NET_TCP, 8), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
2412 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2414 /* network.tcpconn.last_ack */
2415 { &proc_net_tcp.stat[_PM_TCP_LAST_ACK],
2416 { PMDA_PMID(CLUSTER_NET_TCP, 9), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
2417 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2419 /* network.tcpconn.listen */
2420 { &proc_net_tcp.stat[_PM_TCP_LISTEN],
2421 { PMDA_PMID(CLUSTER_NET_TCP, 10), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
2422 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2424 /* network.tcpconn.closing */
2425 { &proc_net_tcp.stat[_PM_TCP_CLOSING],
2426 { PMDA_PMID(CLUSTER_NET_TCP, 11), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
2427 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2429 /* network.tcp.activeopens */
2430 { &_pm_proc_net_snmp.tcp[_PM_SNMP_TCP_ACTIVEOPENS],
2431 { PMDA_PMID(CLUSTER_NET_SNMP,54), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2432 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2434 /* network.tcp.passiveopens */
2435 { &_pm_proc_net_snmp.tcp[_PM_SNMP_TCP_PASSIVEOPENS],
2436 { PMDA_PMID(CLUSTER_NET_SNMP,55), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2437 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2439 /* network.tcp.attemptfails */
2440 { &_pm_proc_net_snmp.tcp[_PM_SNMP_TCP_ATTEMPTFAILS],
2441 { PMDA_PMID(CLUSTER_NET_SNMP,56), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2442 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2444 /* network.tcp.estabresets */
2445 { &_pm_proc_net_snmp.tcp[_PM_SNMP_TCP_ESTABRESETS],
2446 { PMDA_PMID(CLUSTER_NET_SNMP,57), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2447 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2449 /* network.tcp.currestab */
2450 { &_pm_proc_net_snmp.tcp[_PM_SNMP_TCP_CURRESTAB],
2451 { PMDA_PMID(CLUSTER_NET_SNMP,58), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
2452 PMDA_PMUNITS(0,0,0,0,0,0) } },
2454 /* network.tcp.insegs */
2455 { &_pm_proc_net_snmp.tcp[_PM_SNMP_TCP_INSEGS],
2456 { PMDA_PMID(CLUSTER_NET_SNMP,59), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2457 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2459 /* network.tcp.outsegs */
2460 { &_pm_proc_net_snmp.tcp[_PM_SNMP_TCP_OUTSEGS],
2461 { PMDA_PMID(CLUSTER_NET_SNMP,60), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2462 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2464 /* network.tcp.retranssegs */
2465 { &_pm_proc_net_snmp.tcp[_PM_SNMP_TCP_RETRANSSEGS],
2466 { PMDA_PMID(CLUSTER_NET_SNMP,61), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2467 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2469 /* network.tcp.inerrs */
2470 { &_pm_proc_net_snmp.tcp[_PM_SNMP_TCP_INERRS],
2471 { PMDA_PMID(CLUSTER_NET_SNMP,62), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2472 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2474 /* network.tcp.outrsts */
2475 { &_pm_proc_net_snmp.tcp[_PM_SNMP_TCP_OUTRSTS],
2476 { PMDA_PMID(CLUSTER_NET_SNMP,63), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2477 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2479 /* network.tcp.incsumerrors */
2480 { &_pm_proc_net_snmp.tcp[_PM_SNMP_TCP_INCSUMERRORS],
2481 { PMDA_PMID(CLUSTER_NET_SNMP,64), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2482 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2484 /* network.udp.indatagrams */
2485 { &_pm_proc_net_snmp.udp[_PM_SNMP_UDP_INDATAGRAMS],
2486 { PMDA_PMID(CLUSTER_NET_SNMP,70), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2487 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2489 /* network.udp.noports */
2490 { &_pm_proc_net_snmp.udp[_PM_SNMP_UDP_NOPORTS],
2491 { PMDA_PMID(CLUSTER_NET_SNMP,71), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2492 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2494 /* network.udp.inerrors */
2495 { &_pm_proc_net_snmp.udp[_PM_SNMP_UDP_INERRORS],
2496 { PMDA_PMID(CLUSTER_NET_SNMP,72), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2497 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2499 /* network.udp.outdatagrams */
2500 { &_pm_proc_net_snmp.udp[_PM_SNMP_UDP_OUTDATAGRAMS],
2501 { PMDA_PMID(CLUSTER_NET_SNMP,74), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2502 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2504 /* network.udp.recvbuferrors */
2505 { &_pm_proc_net_snmp.udp[_PM_SNMP_UDP_RECVBUFERRORS],
2506 { PMDA_PMID(CLUSTER_NET_SNMP,75), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2507 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2509 /* network.udp.sndbuferrors */
2510 { &_pm_proc_net_snmp.udp[_PM_SNMP_UDP_SNDBUFERRORS],
2511 { PMDA_PMID(CLUSTER_NET_SNMP,76), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2512 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2514 /* network.udp.incsumerrors */
2515 { &_pm_proc_net_snmp.udp[_PM_SNMP_UDP_INCSUMERRORS],
2516 { PMDA_PMID(CLUSTER_NET_SNMP,83), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2517 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2519 /* network.udplite.indatagrams */
2520 { &_pm_proc_net_snmp.udplite[_PM_SNMP_UDPLITE_INDATAGRAMS],
2521 { PMDA_PMID(CLUSTER_NET_SNMP,77), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2522 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2524 /* network.udplite.noports */
2525 { &_pm_proc_net_snmp.udplite[_PM_SNMP_UDPLITE_NOPORTS],
2526 { PMDA_PMID(CLUSTER_NET_SNMP,78), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2527 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2529 /* network.udplite.inerrors */
2530 { &_pm_proc_net_snmp.udplite[_PM_SNMP_UDPLITE_INERRORS],
2531 { PMDA_PMID(CLUSTER_NET_SNMP,79), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2532 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2534 /* network.udplite.outdatagrams */
2535 { &_pm_proc_net_snmp.udplite[_PM_SNMP_UDPLITE_OUTDATAGRAMS],
2536 { PMDA_PMID(CLUSTER_NET_SNMP,80), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2537 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2539 /* network.udplite.recvbuferrors */
2540 { &_pm_proc_net_snmp.udplite[_PM_SNMP_UDPLITE_RECVBUFERRORS],
2541 { PMDA_PMID(CLUSTER_NET_SNMP,81), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2542 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2544 /* network.udplite.sndbuferrors */
2545 { &_pm_proc_net_snmp.udplite[_PM_SNMP_UDPLITE_SNDBUFERRORS],
2546 { PMDA_PMID(CLUSTER_NET_SNMP,82), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2547 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2549 /* network.udplite.incsumerrors */
2550 { &_pm_proc_net_snmp.udplite[_PM_SNMP_UDPLITE_INCSUMERRORS],
2551 { PMDA_PMID(CLUSTER_NET_SNMP,84), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2552 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2554 /* network.icmpmsg.intype */
2555 { &_pm_proc_net_snmp.icmpmsg[_PM_SNMP_ICMPMSG_INTYPE],
2556 { PMDA_PMID(CLUSTER_NET_SNMP,88), PM_TYPE_U64, ICMPMSG_INDOM, PM_SEM_COUNTER,
2557 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2559 /* network.icmpmsg.outtype */
2560 { &_pm_proc_net_snmp.icmpmsg[_PM_SNMP_ICMPMSG_OUTTYPE],
2561 { PMDA_PMID(CLUSTER_NET_SNMP,89), PM_TYPE_U64, ICMPMSG_INDOM, PM_SEM_COUNTER,
2562 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2565 * network IPv6 cluster
2568 /* network.ip6.inreceives */
2569 { &_pm_proc_net_snmp6[_PM_IP6_INRECEIVES].val,
2570 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_INRECEIVES), PM_TYPE_U64,
2571 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2573 /* network.ip6.inhdrerrors */
2574 { &_pm_proc_net_snmp6[_PM_IP6_INHDRERRORS].val,
2575 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_INHDRERRORS), PM_TYPE_U64,
2576 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2578 /* network.ip6.intoobigerrors */
2579 { &_pm_proc_net_snmp6[_PM_IP6_INTOOBIGERRORS].val,
2580 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_INTOOBIGERRORS), PM_TYPE_U64,
2581 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2583 /* network.ip6.innoroutes */
2584 { &_pm_proc_net_snmp6[_PM_IP6_INNOROUTES].val,
2585 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_INNOROUTES), PM_TYPE_U64,
2586 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2588 /* network.ip6.inaddrerrors */
2589 { &_pm_proc_net_snmp6[_PM_IP6_INADDRERRORS].val,
2590 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_INADDRERRORS), PM_TYPE_U64,
2591 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2593 /* network.ip6.inunknownprotos */
2594 { &_pm_proc_net_snmp6[_PM_IP6_INUNKNOWNPROTOS].val,
2595 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_INUNKNOWNPROTOS), PM_TYPE_U64,
2596 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2598 /* network.ip6.intruncatedpkts */
2599 { &_pm_proc_net_snmp6[_PM_IP6_INTRUNCATEDPKTS].val,
2600 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_INTRUNCATEDPKTS), PM_TYPE_U64,
2601 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2603 /* network.ip6.indiscards */
2604 { &_pm_proc_net_snmp6[_PM_IP6_INDISCARDS].val,
2605 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_INDISCARDS), PM_TYPE_U64,
2606 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2608 /* network.ip6.indelivers */
2609 { &_pm_proc_net_snmp6[_PM_IP6_INDELIVERS].val,
2610 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_INDELIVERS), PM_TYPE_U64,
2611 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2613 /* network.ip6.outforwdatagrams */
2614 { &_pm_proc_net_snmp6[_PM_IP6_OUTFORWDATAGRAMS].val,
2615 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_OUTFORWDATAGRAMS), PM_TYPE_U64,
2616 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2618 /* network.ip6.outrequests */
2619 { &_pm_proc_net_snmp6[_PM_IP6_OUTREQUESTS].val,
2620 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_OUTREQUESTS), PM_TYPE_U64,
2621 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2623 /* network.ip6.outdiscards */
2624 { &_pm_proc_net_snmp6[_PM_IP6_OUTDISCARDS].val,
2625 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_OUTDISCARDS), PM_TYPE_U64,
2626 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2628 /* network.ip6.outnoroutes */
2629 { &_pm_proc_net_snmp6[_PM_IP6_OUTNOROUTES].val,
2630 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_OUTNOROUTES), PM_TYPE_U64,
2631 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2633 /* network.ip6.reasmtimeout */
2634 { &_pm_proc_net_snmp6[_PM_IP6_REASMTIMEOUT].val,
2635 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_REASMTIMEOUT), PM_TYPE_U64,
2636 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2638 /* network.ip6.reasmreqds */
2639 { &_pm_proc_net_snmp6[_PM_IP6_REASMREQDS].val,
2640 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_REASMREQDS), PM_TYPE_U64,
2641 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2643 /* network.ip6.reasmoks */
2644 { &_pm_proc_net_snmp6[_PM_IP6_REASMOKS].val,
2645 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_REASMOKS), PM_TYPE_U64,
2646 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2648 /* network.ip6.reasmfails */
2649 { &_pm_proc_net_snmp6[_PM_IP6_REASMFAILS].val,
2650 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_REASMFAILS), PM_TYPE_U64,
2651 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2653 /* network.ip6.fragoks */
2654 { &_pm_proc_net_snmp6[_PM_IP6_FRAGOKS].val,
2655 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_FRAGOKS), PM_TYPE_U64,
2656 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2658 /* network.ip6.fragfails */
2659 { &_pm_proc_net_snmp6[_PM_IP6_FRAGFAILS].val,
2660 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_FRAGFAILS), PM_TYPE_U64,
2661 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2663 /* network.ip6.fragcreates */
2664 { &_pm_proc_net_snmp6[_PM_IP6_FRAGCREATES].val,
2665 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_FRAGCREATES), PM_TYPE_U64,
2666 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2668 /* network.ip6.inmcastpkts */
2669 { &_pm_proc_net_snmp6[_PM_IP6_INMCASTPKTS].val,
2670 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_INMCASTPKTS), PM_TYPE_U64,
2671 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2673 /* network.ip6.outmcastpkts */
2674 { &_pm_proc_net_snmp6[_PM_IP6_OUTMCASTPKTS].val,
2675 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_OUTMCASTPKTS), PM_TYPE_U64,
2676 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2678 /* network.ip6.inoctets */
2679 { &_pm_proc_net_snmp6[_PM_IP6_INOCTETS].val,
2680 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_INOCTETS), PM_TYPE_U64,
2681 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2683 /* network.ip6.outoctets */
2684 { &_pm_proc_net_snmp6[_PM_IP6_OUTOCTETS].val,
2685 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_OUTOCTETS), PM_TYPE_U64,
2686 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2688 /* network.ip6.inmcastoctets */
2689 { &_pm_proc_net_snmp6[_PM_IP6_INMCASTOCTETS].val,
2690 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_INMCASTOCTETS), PM_TYPE_U64,
2691 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2693 /* network.ip6.outmcastoctets */
2694 { &_pm_proc_net_snmp6[_PM_IP6_OUTMCASTOCTETS].val,
2695 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_OUTMCASTOCTETS), PM_TYPE_U64,
2696 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2698 /* network.ip6.inbcastoctets */
2699 { &_pm_proc_net_snmp6[_PM_IP6_INBCASTOCTETS].val,
2700 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_INBCASTOCTETS), PM_TYPE_U64,
2701 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2703 /* network.ip6.outbcastoctets */
2704 { &_pm_proc_net_snmp6[_PM_IP6_OUTBCASTOCTETS].val,
2705 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_OUTBCASTOCTETS), PM_TYPE_U64,
2706 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2708 /* network.ip6.innoectpkts */
2709 { &_pm_proc_net_snmp6[_PM_IP6_INNOECTPKTS].val,
2710 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_INNOECTPKTS), PM_TYPE_U64,
2711 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2713 /* network.ip6.inect1pkts */
2714 { &_pm_proc_net_snmp6[_PM_IP6_INECT1PKTS].val,
2715 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_INECT1PKTS), PM_TYPE_U64,
2716 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2718 /* network.ip6.inect0pkts */
2719 { &_pm_proc_net_snmp6[_PM_IP6_INECT0PKTS].val,
2720 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_INECT0PKTS), PM_TYPE_U64,
2721 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2723 /* network.ip6.incepkts */
2724 { &_pm_proc_net_snmp6[_PM_IP6_INCEPKTS].val,
2725 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_IP6_INCEPKTS), PM_TYPE_U64,
2726 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2728 /* network.icmp6.inmsgs */
2729 { &_pm_proc_net_snmp6[_PM_ICMP6_INMSGS].val,
2730 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INMSGS), PM_TYPE_U64,
2731 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2733 /* network.icmp6.inerrors */
2734 { &_pm_proc_net_snmp6[_PM_ICMP6_INERRORS].val,
2735 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INERRORS), PM_TYPE_U64,
2736 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2738 /* network.icmp6.outmsgs */
2739 { &_pm_proc_net_snmp6[_PM_ICMP6_OUTMSGS].val,
2740 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_OUTMSGS), PM_TYPE_U64,
2741 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2743 /* network.icmp6.outerrors */
2744 { &_pm_proc_net_snmp6[_PM_ICMP6_OUTERRORS].val,
2745 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_OUTERRORS), PM_TYPE_U64,
2746 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2748 /* network.icmp6.incsumerrors */
2749 { &_pm_proc_net_snmp6[_PM_ICMP6_INCSUMERRORS].val,
2750 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INCSUMERRORS), PM_TYPE_U64,
2751 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2753 /* network.icmp6.indestunreachs */
2754 { &_pm_proc_net_snmp6[_PM_ICMP6_INDESTUNREACHS].val,
2755 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INDESTUNREACHS), PM_TYPE_U64,
2756 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2758 /* network.icmp6.inpkttoobigs */
2759 { &_pm_proc_net_snmp6[_PM_ICMP6_INPKTTOOBIGS].val,
2760 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INPKTTOOBIGS), PM_TYPE_U64,
2761 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2763 /* network.icmp6.intimeexcds */
2764 { &_pm_proc_net_snmp6[_PM_ICMP6_INTIMEEXCDS].val,
2765 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INTIMEEXCDS), PM_TYPE_U64,
2766 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2768 /* network.icmp6.inparmproblems */
2769 { &_pm_proc_net_snmp6[_PM_ICMP6_INPARMPROBLEMS].val,
2770 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INPARMPROBLEMS), PM_TYPE_U64,
2771 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2773 /* network.icmp6.inechos */
2774 { &_pm_proc_net_snmp6[_PM_ICMP6_INECHOS].val,
2775 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INECHOS), PM_TYPE_U64,
2776 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2778 /* network.icmp6.inechoreplies */
2779 { &_pm_proc_net_snmp6[_PM_ICMP6_INECHOREPLIES].val,
2780 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INECHOREPLIES), PM_TYPE_U64,
2781 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2783 /* network.icmp6.ingroupmembqueries */
2784 { &_pm_proc_net_snmp6[_PM_ICMP6_INGROUPMEMBQUERIES].val,
2785 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INGROUPMEMBQUERIES), PM_TYPE_U64,
2786 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2788 /* network.icmp6.ingroupmembresponses */
2789 { &_pm_proc_net_snmp6[_PM_ICMP6_INGROUPMEMBRESPONSES].val,
2790 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INGROUPMEMBRESPONSES), PM_TYPE_U64,
2791 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2793 /* network.icmp6.ingroupmembreductions */
2794 { &_pm_proc_net_snmp6[_PM_ICMP6_INGROUPMEMBREDUCTIONS].val,
2795 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INGROUPMEMBREDUCTIONS), PM_TYPE_U64,
2796 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2798 /* network.icmp6.inroutersolicits */
2799 { &_pm_proc_net_snmp6[_PM_ICMP6_INROUTERSOLICITS].val,
2800 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INROUTERSOLICITS), PM_TYPE_U64,
2801 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2803 /* network.icmp6.inrouteradvertisements */
2804 { &_pm_proc_net_snmp6[_PM_ICMP6_INROUTERADVERTISEMENTS].val,
2805 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INROUTERADVERTISEMENTS), PM_TYPE_U64,
2806 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2808 /* network.icmp6.inneighborsolicits */
2809 { &_pm_proc_net_snmp6[_PM_ICMP6_INNEIGHBORSOLICITS].val,
2810 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INNEIGHBORSOLICITS), PM_TYPE_U64,
2811 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2813 /* network.icmp6.inneighboradvertisements */
2814 { &_pm_proc_net_snmp6[_PM_ICMP6_INNEIGHBORADVERTISEMENTS].val,
2815 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INNEIGHBORADVERTISEMENTS), PM_TYPE_U64,
2816 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2818 /* network.icmp6.inredirects */
2819 { &_pm_proc_net_snmp6[_PM_ICMP6_INREDIRECTS].val,
2820 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INREDIRECTS), PM_TYPE_U64,
2821 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2823 /* network.icmp6.inmldv2reports */
2824 { &_pm_proc_net_snmp6[_PM_ICMP6_INMLDV2REPORTS].val,
2825 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_INMLDV2REPORTS), PM_TYPE_U64,
2826 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2828 /* network.icmp6.outdestunreachs */
2829 { &_pm_proc_net_snmp6[_PM_ICMP6_OUTDESTUNREACHS].val,
2830 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_OUTDESTUNREACHS), PM_TYPE_U64,
2831 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2833 /* network.icmp6.outpkttoobigs */
2834 { &_pm_proc_net_snmp6[_PM_ICMP6_OUTPKTTOOBIGS].val,
2835 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_OUTPKTTOOBIGS), PM_TYPE_U64,
2836 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2838 /* network.icmp6.outtimeexcds */
2839 { &_pm_proc_net_snmp6[_PM_ICMP6_OUTTIMEEXCDS].val,
2840 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_OUTTIMEEXCDS), PM_TYPE_U64,
2841 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2843 /* network.icmp6.outparmproblems */
2844 { &_pm_proc_net_snmp6[_PM_ICMP6_OUTPARMPROBLEMS].val,
2845 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_OUTPARMPROBLEMS), PM_TYPE_U64,
2846 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2848 /* network.icmp6.outechos */
2849 { &_pm_proc_net_snmp6[_PM_ICMP6_OUTECHOS].val,
2850 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_OUTECHOS), PM_TYPE_U64,
2851 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2853 /* network.icmp6.outechoreplies */
2854 { &_pm_proc_net_snmp6[_PM_ICMP6_OUTECHOREPLIES].val,
2855 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_OUTECHOREPLIES), PM_TYPE_U64,
2856 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2858 /* network.icmp6.outgroupmembqueries */
2859 { &_pm_proc_net_snmp6[_PM_ICMP6_OUTGROUPMEMBQUERIES].val,
2860 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_OUTGROUPMEMBQUERIES), PM_TYPE_U64,
2861 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2863 /* network.icmp6.outgroupmembresponses */
2864 { &_pm_proc_net_snmp6[_PM_ICMP6_OUTGROUPMEMBRESPONSES].val,
2865 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_OUTGROUPMEMBRESPONSES), PM_TYPE_U64,
2866 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2868 /* network.icmp6.outgroupmembreductions */
2869 { &_pm_proc_net_snmp6[_PM_ICMP6_OUTGROUPMEMBREDUCTIONS].val,
2870 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_OUTGROUPMEMBREDUCTIONS), PM_TYPE_U64,
2871 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2873 /* network.icmp6.outroutersolicits */
2874 { &_pm_proc_net_snmp6[_PM_ICMP6_OUTROUTERSOLICITS].val,
2875 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_OUTROUTERSOLICITS), PM_TYPE_U64,
2876 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2878 /* network.icmp6.outrouteradvertisements */
2879 { &_pm_proc_net_snmp6[_PM_ICMP6_OUTROUTERADVERTISEMENTS].val,
2880 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_OUTROUTERADVERTISEMENTS), PM_TYPE_U64,
2881 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2883 /* network.icmp6.outneighborsolicits */
2884 { &_pm_proc_net_snmp6[_PM_ICMP6_OUTNEIGHBORSOLICITS].val,
2885 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_OUTNEIGHBORSOLICITS), PM_TYPE_U64,
2886 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2888 /* network.icmp6.outneighboradvertisements */
2889 { &_pm_proc_net_snmp6[_PM_ICMP6_OUTNEIGHBORADVERTISEMENTS].val,
2890 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_OUTNEIGHBORADVERTISEMENTS), PM_TYPE_U64,
2891 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2893 /* network.icmp6.outredirects */
2894 { &_pm_proc_net_snmp6[_PM_ICMP6_OUTREDIRECTS].val,
2895 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_OUTREDIRECTS), PM_TYPE_U64,
2896 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2898 /* network.icmp6.outmldv2reports */
2899 { &_pm_proc_net_snmp6[_PM_ICMP6_OUTMLDV2REPORTS].val,
2900 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_ICMP6_OUTMLDV2REPORTS), PM_TYPE_U64,
2901 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2903 /* network.udp6.indatagrams */
2904 { &_pm_proc_net_snmp6[_PM_UDP6_INDATAGRAMS].val,
2905 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_UDP6_INDATAGRAMS), PM_TYPE_U64,
2906 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2908 /* network.udp6.noports */
2909 { &_pm_proc_net_snmp6[_PM_UDP6_NOPORTS].val,
2910 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_UDP6_NOPORTS), PM_TYPE_U64,
2911 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2913 /* network.udp6.inerrors */
2914 { &_pm_proc_net_snmp6[_PM_UDP6_INERRORS].val,
2915 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_UDP6_INERRORS), PM_TYPE_U64,
2916 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2918 /* network.udp6.outdatagrams */
2919 { &_pm_proc_net_snmp6[_PM_UDP6_OUTDATAGRAMS].val,
2920 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_UDP6_OUTDATAGRAMS), PM_TYPE_U64,
2921 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2923 /* network.udp6.rcvbuferrors */
2924 { &_pm_proc_net_snmp6[_PM_UDP6_RCVBUFERRORS].val,
2925 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_UDP6_RCVBUFERRORS), PM_TYPE_U64,
2926 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2928 /* network.udp6.sndbuferrors */
2929 { &_pm_proc_net_snmp6[_PM_UDP6_SNDBUFERRORS].val,
2930 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_UDP6_SNDBUFERRORS), PM_TYPE_U64,
2931 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2933 /* network.udp6.incsumerrors */
2934 { &_pm_proc_net_snmp6[_PM_UDP6_INCSUMERRORS].val,
2935 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_UDP6_INCSUMERRORS), PM_TYPE_U64,
2936 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2938 /* network.udp6.ignoredmulti */
2939 { &_pm_proc_net_snmp6[_PM_UDP6_IGNOREDMULTI].val,
2940 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_UDP6_IGNOREDMULTI), PM_TYPE_U64,
2941 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2943 /* network.udplite6.indatagrams */
2944 { &_pm_proc_net_snmp6[_PM_UDPLITE6_INDATAGRAMS].val,
2945 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_UDPLITE6_INDATAGRAMS), PM_TYPE_U64,
2946 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2948 /* network.udplite6.noports */
2949 { &_pm_proc_net_snmp6[_PM_UDPLITE6_NOPORTS].val,
2950 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_UDPLITE6_NOPORTS), PM_TYPE_U64,
2951 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2953 /* network.udplite6.inerrors */
2954 { &_pm_proc_net_snmp6[_PM_UDPLITE6_INERRORS].val,
2955 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_UDPLITE6_INERRORS), PM_TYPE_U64,
2956 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2958 /* network.udplite6.outdatagrams */
2959 { &_pm_proc_net_snmp6[_PM_UDPLITE6_OUTDATAGRAMS].val,
2960 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_UDPLITE6_OUTDATAGRAMS), PM_TYPE_U64,
2961 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2963 /* network.udplite6.rcvbuferrors */
2964 { &_pm_proc_net_snmp6[_PM_UDPLITE6_RCVBUFERRORS].val,
2965 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_UDPLITE6_RCVBUFERRORS), PM_TYPE_U64,
2966 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2968 /* network.udplite6.sndbuferrors */
2969 { &_pm_proc_net_snmp6[_PM_UDPLITE6_SNDBUFERRORS].val,
2970 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_UDPLITE6_SNDBUFERRORS), PM_TYPE_U64,
2971 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2973 /* network.udplite6.incsumerrors */
2974 { &_pm_proc_net_snmp6[_PM_UDPLITE6_INCSUMERRORS].val,
2975 { PMDA_PMID(CLUSTER_NET_SNMP6, _PM_UDPLITE6_INCSUMERRORS), PM_TYPE_U64,
2976 PM_INDOM_NULL, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2979 * network netstat cluster
2982 /* network.ip.innoroutes */
2983 { &_pm_proc_net_netstat.ip[_PM_NETSTAT_IPEXT_INNOROUTES],
2984 { PMDA_PMID(CLUSTER_NET_NETSTAT,0), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2985 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2987 /* network.ip.intruncatedpkts */
2988 { &_pm_proc_net_netstat.ip[_PM_NETSTAT_IPEXT_INTRUNCATEDPKTS],
2989 { PMDA_PMID(CLUSTER_NET_NETSTAT,1), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2990 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2992 /* network.ip.inmcastpkts */
2993 { &_pm_proc_net_netstat.ip[_PM_NETSTAT_IPEXT_INMCASTPKTS],
2994 { PMDA_PMID(CLUSTER_NET_NETSTAT,2), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
2995 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
2997 /* network.ip.outmcastpkts */
2998 { &_pm_proc_net_netstat.ip[_PM_NETSTAT_IPEXT_OUTMCASTPKTS],
2999 { PMDA_PMID(CLUSTER_NET_NETSTAT,3), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3000 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3002 /* network.ip.inbcastpkts */
3003 { &_pm_proc_net_netstat.ip[_PM_NETSTAT_IPEXT_INBCASTPKTS],
3004 { PMDA_PMID(CLUSTER_NET_NETSTAT,4), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3005 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3007 /* network.ip.outbcastpkts */
3008 { &_pm_proc_net_netstat.ip[_PM_NETSTAT_IPEXT_OUTBCASTPKTS],
3009 { PMDA_PMID(CLUSTER_NET_NETSTAT,5), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3010 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3012 /* network.ip.inoctets */
3013 { &_pm_proc_net_netstat.ip[_PM_NETSTAT_IPEXT_INOCTETS],
3014 { PMDA_PMID(CLUSTER_NET_NETSTAT,6), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3015 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3017 /* network.ip.outoctets */
3018 { &_pm_proc_net_netstat.ip[_PM_NETSTAT_IPEXT_OUTOCTETS],
3019 { PMDA_PMID(CLUSTER_NET_NETSTAT,7), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3020 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3022 /* network.ip.inmcastoctets */
3023 { &_pm_proc_net_netstat.ip[_PM_NETSTAT_IPEXT_INMCASTOCTETS],
3024 { PMDA_PMID(CLUSTER_NET_NETSTAT,8), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3025 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3027 /* network.ip.outmcastoctets */
3028 { &_pm_proc_net_netstat.ip[_PM_NETSTAT_IPEXT_OUTMCASTOCTETS],
3029 { PMDA_PMID(CLUSTER_NET_NETSTAT,9), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3030 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3032 /* network.ip.inbcastoctets */
3033 { &_pm_proc_net_netstat.ip[_PM_NETSTAT_IPEXT_INBCASTOCTETS],
3034 { PMDA_PMID(CLUSTER_NET_NETSTAT,10), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3035 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3037 /* network.ip.outbcastoctets */
3038 { &_pm_proc_net_netstat.ip[_PM_NETSTAT_IPEXT_OUTBCASTOCTETS],
3039 { PMDA_PMID(CLUSTER_NET_NETSTAT,11), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3040 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3042 /* network.ip.csumerrors */
3043 { &_pm_proc_net_netstat.ip[_PM_NETSTAT_IPEXT_CSUMERRORS],
3044 { PMDA_PMID(CLUSTER_NET_NETSTAT,12), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3045 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3047 /* network.ip.noectpkts */
3048 { &_pm_proc_net_netstat.ip[_PM_NETSTAT_IPEXT_NOECTPKTS],
3049 { PMDA_PMID(CLUSTER_NET_NETSTAT,13), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3050 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3052 /* network.ip.ect1pkts */
3053 { &_pm_proc_net_netstat.ip[_PM_NETSTAT_IPEXT_ECT1PKTS],
3054 { PMDA_PMID(CLUSTER_NET_NETSTAT,14), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3055 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3057 /* network.ip.ect0pkts */
3058 { &_pm_proc_net_netstat.ip[_PM_NETSTAT_IPEXT_ECT0PKTS],
3059 { PMDA_PMID(CLUSTER_NET_NETSTAT,15), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3060 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3062 /* network.ip.cepkts */
3063 { &_pm_proc_net_netstat.ip[_PM_NETSTAT_IPEXT_CEPKTS],
3064 { PMDA_PMID(CLUSTER_NET_NETSTAT,16), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3065 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3067 /* network.tcp.syncookiessent */
3068 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_SYNCOOKIESSENT],
3069 { PMDA_PMID(CLUSTER_NET_NETSTAT,17), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3070 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3072 /* network.tcp.syncookiesrecv */
3073 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_SYNCOOKIESRECV],
3074 { PMDA_PMID(CLUSTER_NET_NETSTAT,18), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3075 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3077 /* network.tcp.syncookiesfailed */
3078 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_SYNCOOKIESFAILED],
3079 { PMDA_PMID(CLUSTER_NET_NETSTAT,19), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3080 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3082 /* network.tcp.embryonicrsts */
3083 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_EMBRYONICRSTS],
3084 { PMDA_PMID(CLUSTER_NET_NETSTAT,20), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3085 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3087 /* network.tcp.prunecalled */
3088 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_PRUNECALLED],
3089 { PMDA_PMID(CLUSTER_NET_NETSTAT,21), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3090 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3092 /* network.tcp.rcvpruned */
3093 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_RCVPRUNED],
3094 { PMDA_PMID(CLUSTER_NET_NETSTAT,22), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3095 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3097 /* network.tcp.ofopruned */
3098 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_OFOPRUNED],
3099 { PMDA_PMID(CLUSTER_NET_NETSTAT,23), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3100 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3102 /* network.tcp.outofwindowicmps */
3103 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_OUTOFWINDOWICMPS],
3104 { PMDA_PMID(CLUSTER_NET_NETSTAT,24), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3105 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3107 /* network.tcp.lockdroppedicmps */
3108 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_LOCKDROPPEDICMPS],
3109 { PMDA_PMID(CLUSTER_NET_NETSTAT,25), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3110 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3112 /* network.tcp.arpfilter */
3113 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_ARPFILTER],
3114 { PMDA_PMID(CLUSTER_NET_NETSTAT,26), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3115 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3117 /* network.tcp.timewaited */
3118 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TIMEWAITED],
3119 { PMDA_PMID(CLUSTER_NET_NETSTAT,27), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3120 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3122 /* network.tcp.timewaitrecycled */
3123 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TIMEWAITRECYCLED],
3124 { PMDA_PMID(CLUSTER_NET_NETSTAT,28), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3125 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3127 /* network.tcp.timewaitkilled */
3128 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TIMEWAITKILLED],
3129 { PMDA_PMID(CLUSTER_NET_NETSTAT,29), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3130 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3132 /* network.tcp.pawspassiverejected */
3133 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_PAWSPASSIVEREJECTED],
3134 { PMDA_PMID(CLUSTER_NET_NETSTAT,30), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3135 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3137 /* network.tcp.pawsactiverejected */
3138 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_PAWSACTIVEREJECTED],
3139 { PMDA_PMID(CLUSTER_NET_NETSTAT,31), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3140 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3142 /* network.tcp.pawsestabrejected */
3143 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_PAWSESTABREJECTED],
3144 { PMDA_PMID(CLUSTER_NET_NETSTAT,32), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3145 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3147 /* network.tcp.delayedacks */
3148 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_DELAYEDACKS],
3149 { PMDA_PMID(CLUSTER_NET_NETSTAT,33), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3150 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3152 /* network.tcp.delayedacklocked */
3153 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_DELAYEDACKLOCKED],
3154 { PMDA_PMID(CLUSTER_NET_NETSTAT,34), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3155 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3157 /* network.tcp.delayedacklost */
3158 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_DELAYEDACKLOST],
3159 { PMDA_PMID(CLUSTER_NET_NETSTAT,35), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3160 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3162 /* network.tcp.listenoverflows */
3163 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_LISTENOVERFLOWS],
3164 { PMDA_PMID(CLUSTER_NET_NETSTAT,36), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3165 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3167 /* network.tcp.listendrops */
3168 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_LISTENDROPS],
3169 { PMDA_PMID(CLUSTER_NET_NETSTAT,37), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3170 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3172 /* network.tcp.prequeued */
3173 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPPREQUEUED],
3174 { PMDA_PMID(CLUSTER_NET_NETSTAT,38), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3175 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3177 /* network.tcp.directcopyfrombacklog */
3178 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPDIRECTCOPYFROMBACKLOG],
3179 { PMDA_PMID(CLUSTER_NET_NETSTAT,39), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3180 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3182 /* network.tcp.directcopyfromprequeue */
3183 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPDIRECTCOPYFROMPREQUEUE],
3184 { PMDA_PMID(CLUSTER_NET_NETSTAT,40), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3185 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3187 /* network.tcp.prequeuedropped */
3188 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPPREQUEUEDROPPED],
3189 { PMDA_PMID(CLUSTER_NET_NETSTAT,41), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3190 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3192 /* network.tcp.hphits*/
3193 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPHPHITS],
3194 { PMDA_PMID(CLUSTER_NET_NETSTAT,42), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3195 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3197 /* network.tcp.hphitstouser */
3198 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPHPHITSTOUSER],
3199 { PMDA_PMID(CLUSTER_NET_NETSTAT,43), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3200 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3202 /* network.tcp.pureacks */
3203 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPPUREACKS],
3204 { PMDA_PMID(CLUSTER_NET_NETSTAT,44), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3205 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3207 /* network.tcp.hpacks */
3208 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPHPACKS],
3209 { PMDA_PMID(CLUSTER_NET_NETSTAT,45), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3210 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3212 /* network.tcp.renorecovery */
3213 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPRENORECOVERY],
3214 { PMDA_PMID(CLUSTER_NET_NETSTAT,46), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3215 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3217 /* network.tcp.sackrecovery */
3218 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPSACKRECOVERY],
3219 { PMDA_PMID(CLUSTER_NET_NETSTAT,47), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3220 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3222 /* network.tcp.sackreneging */
3223 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPSACKRENEGING],
3224 { PMDA_PMID(CLUSTER_NET_NETSTAT,48), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3225 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3227 /* network.tcp.fackreorder */
3228 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPFACKREORDER],
3229 { PMDA_PMID(CLUSTER_NET_NETSTAT,49), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3230 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3232 /* network.tcp.sackreorder */
3233 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPSACKREORDER],
3234 { PMDA_PMID(CLUSTER_NET_NETSTAT,50), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3235 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3237 /* network.tcp.renoreorder */
3238 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPRENOREORDER],
3239 { PMDA_PMID(CLUSTER_NET_NETSTAT,51), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3240 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3242 /* network.tcp.tsreorder */
3243 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPTSREORDER],
3244 { PMDA_PMID(CLUSTER_NET_NETSTAT,52), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3245 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3247 /* network.tcp.fullundo */
3248 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPFULLUNDO],
3249 { PMDA_PMID(CLUSTER_NET_NETSTAT,53), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3250 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3252 /* network.tcp.partialundo */
3253 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPPARTIALUNDO],
3254 { PMDA_PMID(CLUSTER_NET_NETSTAT,54), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3255 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3257 /* network.tcp.dsackundo */
3258 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPDSACKUNDO],
3259 { PMDA_PMID(CLUSTER_NET_NETSTAT,55), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3260 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3262 /* network.tcp.lossundo */
3263 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPLOSSUNDO],
3264 { PMDA_PMID(CLUSTER_NET_NETSTAT,56), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3265 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3267 /* network.tcp.lostretransmit */
3268 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPLOSTRETRANSMIT],
3269 { PMDA_PMID(CLUSTER_NET_NETSTAT,57), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3270 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3272 /* network.tcp.renofailures */
3273 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPRENOFAILURES],
3274 { PMDA_PMID(CLUSTER_NET_NETSTAT,58), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3275 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3277 /* network.tcp.sackfailures */
3278 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPSACKFAILURES],
3279 { PMDA_PMID(CLUSTER_NET_NETSTAT,59), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3280 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3282 /* network.tcp.lossfailures */
3283 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPLOSSFAILURES],
3284 { PMDA_PMID(CLUSTER_NET_NETSTAT,60), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3285 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3287 /* network.tcp.fastretrans */
3288 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPFASTRETRANS],
3289 { PMDA_PMID(CLUSTER_NET_NETSTAT,61), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3290 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3292 /* network.tcp.forwardretrans */
3293 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPFORWARDRETRANS],
3294 { PMDA_PMID(CLUSTER_NET_NETSTAT,62), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3295 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3297 /* network.tcp.slowstartretrans */
3298 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPSLOWSTARTRETRANS],
3299 { PMDA_PMID(CLUSTER_NET_NETSTAT,63), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3300 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3302 /* network.tcp.timeouts */
3303 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPTIMEOUTS],
3304 { PMDA_PMID(CLUSTER_NET_NETSTAT,64), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3305 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3307 /* network.tcp.lossprobes */
3308 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPLOSSPROBES],
3309 { PMDA_PMID(CLUSTER_NET_NETSTAT,65), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3310 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3312 /* network.tcp.lossproberecovery */
3313 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPLOSSPROBERECOVERY],
3314 { PMDA_PMID(CLUSTER_NET_NETSTAT,66), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3315 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3317 /* network.tcp.renorecoveryfail */
3318 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPRENORECOVERYFAIL],
3319 { PMDA_PMID(CLUSTER_NET_NETSTAT,67), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3320 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3322 /* network.tcp.sackrecoveryfail */
3323 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPSACKRECOVERYFAIL],
3324 { PMDA_PMID(CLUSTER_NET_NETSTAT,68), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3325 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3327 /* network.tcp.schedulerfailed */
3328 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPSCHEDULERFAILED],
3329 { PMDA_PMID(CLUSTER_NET_NETSTAT,69), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3330 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3332 /* network.tcp.rcvcollapsed */
3333 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPRCVCOLLAPSED],
3334 { PMDA_PMID(CLUSTER_NET_NETSTAT,70), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3335 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3337 /* network.tcp.dsackoldsent */
3338 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPDSACKOLDSENT],
3339 { PMDA_PMID(CLUSTER_NET_NETSTAT,71), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3340 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3342 /* network.tcp.dsackofosent */
3343 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPDSACKOFOSENT],
3344 { PMDA_PMID(CLUSTER_NET_NETSTAT,72), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3345 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3347 /* network.tcp.dsackrecv */
3348 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPDSACKRECV],
3349 { PMDA_PMID(CLUSTER_NET_NETSTAT,73), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3350 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3352 /* network.tcp.dsackoforecv */
3353 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPDSACKOFORECV],
3354 { PMDA_PMID(CLUSTER_NET_NETSTAT,74), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3355 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3357 /* network.tcp.abortondata */
3358 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPABORTONDATA],
3359 { PMDA_PMID(CLUSTER_NET_NETSTAT,75), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3360 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3362 /* network.tcp.abortonclose */
3363 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPABORTONCLOSE],
3364 { PMDA_PMID(CLUSTER_NET_NETSTAT,76), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3365 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3367 /* network.tcp.abortonmemory */
3368 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPABORTONMEMORY],
3369 { PMDA_PMID(CLUSTER_NET_NETSTAT,77), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3370 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3372 /* network.tcp.abortontimeout */
3373 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPABORTONTIMEOUT],
3374 { PMDA_PMID(CLUSTER_NET_NETSTAT,78), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3375 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3377 /* network.tcp.abortonlinger */
3378 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPABORTONLINGER],
3379 { PMDA_PMID(CLUSTER_NET_NETSTAT,79), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3380 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3382 /* network.tcp.abortfailed */
3383 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPABORTFAILED],
3384 { PMDA_PMID(CLUSTER_NET_NETSTAT,80), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3385 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3387 /* network.tcp.memorypressures */
3388 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPMEMORYPRESSURES],
3389 { PMDA_PMID(CLUSTER_NET_NETSTAT,81), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3390 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3392 /* network.tcp.sackdiscard */
3393 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPSACKDISCARD],
3394 { PMDA_PMID(CLUSTER_NET_NETSTAT,82), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3395 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3397 /* network.tcp.dsackignoredold */
3398 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPDSACKIGNOREDOLD],
3399 { PMDA_PMID(CLUSTER_NET_NETSTAT,83), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3400 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3402 /* network.tcp.dsackignorednoundo */
3403 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPDSACKIGNOREDNOUNDO],
3404 { PMDA_PMID(CLUSTER_NET_NETSTAT,84), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3405 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3407 /* network.tcp.spuriousrtos */
3408 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPSPURIOUSRTOS],
3409 { PMDA_PMID(CLUSTER_NET_NETSTAT,85), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3410 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3412 /* network.tcp.md5notfound */
3413 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPMD5NOTFOUND],
3414 { PMDA_PMID(CLUSTER_NET_NETSTAT,86), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3415 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3417 /* network.tcp.md5unexpected */
3418 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPMD5UNEXPECTED],
3419 { PMDA_PMID(CLUSTER_NET_NETSTAT,87), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3420 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3422 /* network.tcp.sackshifted */
3423 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_SACKSHIFTED],
3424 { PMDA_PMID(CLUSTER_NET_NETSTAT,88), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3425 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3427 /* network.tcp.sackmerged */
3428 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_SACKMERGED],
3429 { PMDA_PMID(CLUSTER_NET_NETSTAT,89), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3430 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3432 /* network.tcp.sackshiftfallback */
3433 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_SACKSHIFTFALLBACK],
3434 { PMDA_PMID(CLUSTER_NET_NETSTAT,90), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3435 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3437 /* network.tcp.backlogdrop */
3438 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPBACKLOGDROP],
3439 { PMDA_PMID(CLUSTER_NET_NETSTAT,91), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3440 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3442 /* network.tcp.minttldrop */
3443 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPMINTTLDROP],
3444 { PMDA_PMID(CLUSTER_NET_NETSTAT,92), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3445 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3447 /* network.tcp.deferacceptdrop */
3448 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPDEFERACCEPTDROP],
3449 { PMDA_PMID(CLUSTER_NET_NETSTAT,93), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3450 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3452 /* network.tcp.iprpfilter */
3453 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_IPRPFILTER],
3454 { PMDA_PMID(CLUSTER_NET_NETSTAT,94), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3455 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3457 /* network.tcp.timewaitoverflow */
3458 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPTIMEWAITOVERFLOW],
3459 { PMDA_PMID(CLUSTER_NET_NETSTAT,95), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3460 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3462 /* network.tcp.reqqfulldocookies */
3463 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPREQQFULLDOCOOKIES],
3464 { PMDA_PMID(CLUSTER_NET_NETSTAT,96), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3465 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3467 /* network.tcp.reqqfulldrop */
3468 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPREQQFULLDROP],
3469 { PMDA_PMID(CLUSTER_NET_NETSTAT,97), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3470 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3472 /* network.tcp.retransfail */
3473 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPRETRANSFAIL],
3474 { PMDA_PMID(CLUSTER_NET_NETSTAT,98), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3475 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3477 /* network.tcp.rcvcoalesce */
3478 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPRCVCOALESCE],
3479 { PMDA_PMID(CLUSTER_NET_NETSTAT,99), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3480 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3482 /* network.tcp.ofoqueue */
3483 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPOFOQUEUE],
3484 { PMDA_PMID(CLUSTER_NET_NETSTAT,100), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3485 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3487 /* network.tcp.ofodrop */
3488 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPOFODROP],
3489 { PMDA_PMID(CLUSTER_NET_NETSTAT,101), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3490 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3492 /* network.tcp.ofomerge */
3493 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPOFOMERGE],
3494 { PMDA_PMID(CLUSTER_NET_NETSTAT,102), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3495 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3497 /* network.tcp.challengeack */
3498 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPCHALLENGEACK],
3499 { PMDA_PMID(CLUSTER_NET_NETSTAT,103), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3500 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3502 /* network.tcp.synchallenge */
3503 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPSYNCHALLENGE],
3504 { PMDA_PMID(CLUSTER_NET_NETSTAT,104), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3505 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3507 /* network.tcp.fastopenactive */
3508 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPFASTOPENACTIVE],
3509 { PMDA_PMID(CLUSTER_NET_NETSTAT,105), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3510 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3512 /* network.tcp.fastopenactivefail */
3513 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPFASTOPENACTIVEFAIL],
3514 { PMDA_PMID(CLUSTER_NET_NETSTAT,106), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3515 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3517 /* network.tcp.fastopenpassive */
3518 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPFASTOPENPASSIVE],
3519 { PMDA_PMID(CLUSTER_NET_NETSTAT,107), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3520 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3522 /* network.tcp.fastopenpassivefail */
3523 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPFASTOPENPASSIVEFAIL],
3524 { PMDA_PMID(CLUSTER_NET_NETSTAT,108), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3525 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3527 /* network.tcp.fastopenlistenoverflow */
3528 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPFASTOPENLISTENOVERFLOW],
3529 { PMDA_PMID(CLUSTER_NET_NETSTAT,109), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3530 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3532 /* network.tcp.fastopencookiereqd */
3533 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPFASTOPENCOOKIEREQD],
3534 { PMDA_PMID(CLUSTER_NET_NETSTAT,110), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3535 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3537 /* network.tcp.spuriousrtxhostqueues */
3538 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPSPURIOUS_RTX_HOSTQUEUES],
3539 { PMDA_PMID(CLUSTER_NET_NETSTAT,111), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3540 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3542 /* network.tcp.busypollrxpackets */
3543 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_BUSYPOLLRXPACKETS],
3544 { PMDA_PMID(CLUSTER_NET_NETSTAT,112), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3545 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3547 /* network.tcp.autocorking */
3548 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPAUTOCORKING],
3549 { PMDA_PMID(CLUSTER_NET_NETSTAT,113), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3550 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3552 /* network.tcp.fromzerowindowadv */
3553 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPFROMZEROWINDOWADV],
3554 { PMDA_PMID(CLUSTER_NET_NETSTAT,114), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3555 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3557 /* network.tcp.tozerowindowadv */
3558 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPTOZEROWINDOWADV],
3559 { PMDA_PMID(CLUSTER_NET_NETSTAT,115), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3560 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3562 /* network.tcp.wantzerowindowadv */
3563 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPWANTZEROWINDOWADV],
3564 { PMDA_PMID(CLUSTER_NET_NETSTAT,116), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3565 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3567 /* network.tcp.synretrans */
3568 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPSYNRETRANS],
3569 { PMDA_PMID(CLUSTER_NET_NETSTAT,117), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3570 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3572 /* network.tcp.origdatasent */
3573 { &_pm_proc_net_netstat.tcp[_PM_NETSTAT_TCPEXT_TCPORIGDATASENT],
3574 { PMDA_PMID(CLUSTER_NET_NETSTAT,118), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
3575 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3577 /* hinv.map.scsi */
3578 { NULL,
3579 { PMDA_PMID(CLUSTER_SCSI,0), PM_TYPE_STRING, SCSI_INDOM, PM_SEM_DISCRETE,
3580 PMDA_PMUNITS(0,0,0,0,0,0) }, },
3583 * /proc/zoneinfo cluster
3586 /* mem.zoneinfo.free */
3587 { NULL,
3588 { PMDA_PMID(CLUSTER_ZONEINFO,0), PM_TYPE_U64, ZONEINFO_INDOM, PM_SEM_INSTANT,
3589 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
3591 /* mem.zoneinfo.min */
3592 { NULL,
3593 { PMDA_PMID(CLUSTER_ZONEINFO,1), PM_TYPE_U64, ZONEINFO_INDOM, PM_SEM_INSTANT,
3594 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
3596 /* mem.zoneinfo.low */
3597 { NULL,
3598 { PMDA_PMID(CLUSTER_ZONEINFO,2), PM_TYPE_U64, ZONEINFO_INDOM, PM_SEM_INSTANT,
3599 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
3601 /* mem.zoneinfo.high */
3602 { NULL,
3603 { PMDA_PMID(CLUSTER_ZONEINFO,3), PM_TYPE_U64, ZONEINFO_INDOM, PM_SEM_INSTANT,
3604 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
3606 /* mem.zoneinfo.scanned */
3607 { NULL,
3608 { PMDA_PMID(CLUSTER_ZONEINFO,4), PM_TYPE_U64, ZONEINFO_INDOM, PM_SEM_INSTANT,
3609 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
3611 /* mem.zoneinfo.spanned */
3612 { NULL,
3613 { PMDA_PMID(CLUSTER_ZONEINFO,5), PM_TYPE_U64, ZONEINFO_INDOM, PM_SEM_INSTANT,
3614 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
3616 /* mem.zoneinfo.present */
3617 { NULL,
3618 { PMDA_PMID(CLUSTER_ZONEINFO,6), PM_TYPE_U64, ZONEINFO_INDOM, PM_SEM_INSTANT,
3619 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
3621 /* mem.zoneinfo.managed */
3622 { NULL,
3623 { PMDA_PMID(CLUSTER_ZONEINFO,7), PM_TYPE_U64, ZONEINFO_INDOM, PM_SEM_INSTANT,
3624 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
3626 /* mem.zoneinfo.protection */
3627 { NULL,
3628 { PMDA_PMID(CLUSTER_ZONEINFO_PROTECTION,0), PM_TYPE_U64, ZONEINFO_PROTECTION_INDOM, PM_SEM_INSTANT,
3629 PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
3632 * /proc/cpuinfo cluster (cpu indom)
3635 /* hinv.cpu.clock */
3636 { NULL,
3637 { PMDA_PMID(CLUSTER_CPUINFO, 0), PM_TYPE_FLOAT, CPU_INDOM, PM_SEM_DISCRETE,
3638 PMDA_PMUNITS(0,0,1,0,-6,0) } },
3640 /* hinv.cpu.vendor */
3641 { NULL,
3642 { PMDA_PMID(CLUSTER_CPUINFO, 1), PM_TYPE_STRING, CPU_INDOM, PM_SEM_DISCRETE,
3643 PMDA_PMUNITS(0,0,0,0,0,0) } },
3645 /* hinv.cpu.model */
3646 { NULL,
3647 { PMDA_PMID(CLUSTER_CPUINFO, 2), PM_TYPE_STRING, CPU_INDOM, PM_SEM_DISCRETE,
3648 PMDA_PMUNITS(0,0,0,0,0,0) } },
3650 /* hinv.cpu.stepping */
3651 { NULL,
3652 { PMDA_PMID(CLUSTER_CPUINFO, 3), PM_TYPE_STRING, CPU_INDOM, PM_SEM_DISCRETE,
3653 PMDA_PMUNITS(0,0,0,0,0,0) } },
3655 /* hinv.cpu.cache */
3656 { NULL,
3657 { PMDA_PMID(CLUSTER_CPUINFO, 4), PM_TYPE_U32, CPU_INDOM, PM_SEM_DISCRETE,
3658 PMDA_PMUNITS(0,0,0,PM_SPACE_KBYTE,0,0) } },
3660 /* hinv.cpu.bogomips */
3661 { NULL,
3662 { PMDA_PMID(CLUSTER_CPUINFO, 5), PM_TYPE_FLOAT, CPU_INDOM, PM_SEM_DISCRETE,
3663 PMDA_PMUNITS(0,0,0,0,0,0) } },
3665 /* hinv.map.cpu_num */
3666 { NULL,
3667 { PMDA_PMID(CLUSTER_CPUINFO, 6), PM_TYPE_U32, CPU_INDOM, PM_SEM_DISCRETE,
3668 PMDA_PMUNITS(0,0,0,0,0,0) } },
3670 /* hinv.machine */
3671 { NULL,
3672 { PMDA_PMID(CLUSTER_CPUINFO, 7), PM_TYPE_STRING, PM_INDOM_NULL, PM_SEM_DISCRETE,
3673 PMDA_PMUNITS(0,0,0,0,0,0) } },
3675 /* hinv.map.cpu_node */
3676 { NULL,
3677 { PMDA_PMID(CLUSTER_CPUINFO, 8), PM_TYPE_U32, CPU_INDOM, PM_SEM_DISCRETE,
3678 PMDA_PMUNITS(0,0,0,0,0,0) } },
3680 /* hinv.cpu.model_name */
3681 { NULL,
3682 { PMDA_PMID(CLUSTER_CPUINFO, 9), PM_TYPE_STRING, CPU_INDOM, PM_SEM_DISCRETE,
3683 PMDA_PMUNITS(0,0,0,0,0,0) } },
3685 /* hinv.cpu.flags */
3686 { NULL,
3687 { PMDA_PMID(CLUSTER_CPUINFO, 10), PM_TYPE_STRING, CPU_INDOM, PM_SEM_DISCRETE,
3688 PMDA_PMUNITS(0,0,0,0,0,0) } },
3690 /* hinv.cpu.cache_alignment */
3691 { NULL,
3692 { PMDA_PMID(CLUSTER_CPUINFO, 11), PM_TYPE_U32, CPU_INDOM, PM_SEM_DISCRETE,
3693 PMDA_PMUNITS(0,0,0,PM_SPACE_BYTE,0,0) } },
3696 * sysfs device state cluster
3699 /* hinv.cpu.online */
3700 { NULL,
3701 { PMDA_PMID(CLUSTER_SYSFS_DEVICES, 0), PM_TYPE_U32, CPU_INDOM, PM_SEM_INSTANT,
3702 PMDA_PMUNITS(0,0,0,0,0,0) } },
3704 /* hinv.node.online */
3705 { NULL,
3706 { PMDA_PMID(CLUSTER_SYSFS_DEVICES, 1), PM_TYPE_U32, NODE_INDOM, PM_SEM_INSTANT,
3707 PMDA_PMUNITS(0,0,0,0,0,0) } },
3710 * semaphore limits cluster
3711 * Cluster added by Mike Mason <mmlnx@us.ibm.com>
3714 /* ipc.sem.max_semmap */
3715 { NULL,
3716 { PMDA_PMID(CLUSTER_SEM_LIMITS, 0), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3717 PMDA_PMUNITS(0,0,0,0,0,0)}},
3719 /* ipc.sem.max_semid */
3720 { NULL,
3721 { PMDA_PMID(CLUSTER_SEM_LIMITS, 1), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3722 PMDA_PMUNITS(0,0,0,0,0,0)}},
3724 /* ipc.sem.max_sem */
3725 { NULL,
3726 { PMDA_PMID(CLUSTER_SEM_LIMITS, 2), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3727 PMDA_PMUNITS(0,0,0,0,0,0)}},
3729 /* ipc.sem.num_undo */
3730 { NULL,
3731 { PMDA_PMID(CLUSTER_SEM_LIMITS, 3), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3732 PMDA_PMUNITS(0,0,0,0,0,0)}},
3734 /* ipc.sem.max_perid */
3735 { NULL,
3736 { PMDA_PMID(CLUSTER_SEM_LIMITS, 4), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3737 PMDA_PMUNITS(0,0,0,0,0,0)}},
3739 /* ipc.sem.max_ops */
3740 { NULL,
3741 { PMDA_PMID(CLUSTER_SEM_LIMITS, 5), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3742 PMDA_PMUNITS(0,0,0,0,0,0)}},
3744 /* ipc.sem.max_undoent */
3745 { NULL,
3746 { PMDA_PMID(CLUSTER_SEM_LIMITS, 6), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3747 PMDA_PMUNITS(0,0,0,0,0,0)}},
3749 /* ipc.sem.sz_semundo */
3750 { NULL,
3751 { PMDA_PMID(CLUSTER_SEM_LIMITS, 7), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3752 PMDA_PMUNITS(0,0,0,0,0,0)}},
3754 /* ipc.sem.max_semval */
3755 { NULL,
3756 { PMDA_PMID(CLUSTER_SEM_LIMITS, 8), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3757 PMDA_PMUNITS(0,0,0,0,0,0)}},
3759 /* ipc.sem.max_exit */
3760 { NULL,
3761 { PMDA_PMID(CLUSTER_SEM_LIMITS, 9), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3762 PMDA_PMUNITS(0,0,0,0,0,0)}},
3764 /* ipc.sem.used_sem */
3765 { NULL,
3766 { PMDA_PMID(CLUSTER_SEM_INFO, 0), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
3767 PMDA_PMUNITS(0,0,0,0,0,0)}},
3769 /* ipc.sem.tot_sem */
3770 { NULL,
3771 { PMDA_PMID(CLUSTER_SEM_INFO, 1), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
3772 PMDA_PMUNITS(0,0,0,0,0,0)}},
3775 * message limits cluster
3776 * Cluster added by Mike Mason <mmlnx@us.ibm.com>
3779 /* ipc.msg.sz_pool */
3780 { NULL,
3781 { PMDA_PMID(CLUSTER_MSG_LIMITS, 0), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3782 PMDA_PMUNITS(1,0,0, PM_SPACE_KBYTE,0,0)}},
3784 /* ipc.msg.mapent */
3785 { NULL,
3786 { PMDA_PMID(CLUSTER_MSG_LIMITS, 1), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3787 PMDA_PMUNITS(0,0,0,0,0,0)}},
3789 /* ipc.msg.max_msgsz */
3790 { NULL,
3791 { PMDA_PMID(CLUSTER_MSG_LIMITS, 2), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3792 PMDA_PMUNITS(0,0,0,0,0,0)}},
3794 /* ipc.msg.max_defmsgq */
3795 { NULL,
3796 { PMDA_PMID(CLUSTER_MSG_LIMITS, 3), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3797 PMDA_PMUNITS(0,0,0,0,0,0)}},
3799 /* ipc.msg.max_msgqid */
3800 { NULL,
3801 { PMDA_PMID(CLUSTER_MSG_LIMITS, 4), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3802 PMDA_PMUNITS(0,0,0,0,0,0)}},
3804 /* ipc.msg.max_msgseg */
3805 { NULL,
3806 { PMDA_PMID(CLUSTER_MSG_LIMITS, 5), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3807 PMDA_PMUNITS(0,0,0, 0,0,0)}},
3809 /* ipc.msg.max_smsghdr */
3810 { NULL,
3811 { PMDA_PMID(CLUSTER_MSG_LIMITS, 6), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3812 PMDA_PMUNITS(0,0,0,0,0,0)}},
3814 /* ipc.msg.max_seg */
3815 { NULL,
3816 { PMDA_PMID(CLUSTER_MSG_LIMITS, 7), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3817 PMDA_PMUNITS(0,0,0,0,0,0)}},
3819 /* ipc.msg.used_queues */
3820 { NULL,
3821 { PMDA_PMID(CLUSTER_MSG_INFO, 0), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
3822 PMDA_PMUNITS(0,0,0,0,0,0)}},
3824 /* ipc.msg.tot_msg */
3825 { NULL,
3826 { PMDA_PMID(CLUSTER_MSG_INFO, 1), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
3827 PMDA_PMUNITS(0,0,0,0,0,0)}},
3829 /* ipc.msg.tot_bytes */
3830 { NULL,
3831 { PMDA_PMID(CLUSTER_MSG_INFO, 2), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
3832 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0)}},
3834 /* ipc.shm.tot */
3835 { NULL,
3836 { PMDA_PMID(CLUSTER_SHM_INFO, 0), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
3837 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0)}},
3839 /* ipc.shm.rss */
3840 { NULL,
3841 { PMDA_PMID(CLUSTER_SHM_INFO, 1), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
3842 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0)}},
3844 /* ipc.shm.swp */
3845 { NULL,
3846 { PMDA_PMID(CLUSTER_SHM_INFO, 2), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
3847 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0)}},
3849 /* ipc.shm.used_ids */
3850 { NULL,
3851 { PMDA_PMID(CLUSTER_SHM_INFO, 3), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
3852 PMDA_PMUNITS(0,0,0,0,0,0)}},
3854 /* ipc.shm.swap_attempts */
3855 { NULL,
3856 { PMDA_PMID(CLUSTER_SHM_INFO, 4), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
3857 PMDA_PMUNITS(0,0,0,0,0,0)}},
3859 /* ipc.shm.swap_successes */
3860 { NULL,
3861 { PMDA_PMID(CLUSTER_SHM_INFO, 5), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
3862 PMDA_PMUNITS(0,0,0,0,0,0)}},
3865 * shared memory limits cluster
3866 * Cluster added by Mike Mason <mmlnx@us.ibm.com>
3869 /* ipc.shm.max_segsz */
3870 { NULL,
3871 { PMDA_PMID(CLUSTER_SHM_LIMITS, 0), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3872 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0)}},
3874 /* ipc.shm.min_segsz */
3875 { NULL,
3876 { PMDA_PMID(CLUSTER_SHM_LIMITS, 1), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3877 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0)}},
3879 /* ipc.shm.max_seg */
3880 { NULL,
3881 { PMDA_PMID(CLUSTER_SHM_LIMITS, 2), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3882 PMDA_PMUNITS(0,0,0,0,0,0)}},
3884 /* ipc.shm.max_segproc */
3885 { NULL,
3886 { PMDA_PMID(CLUSTER_SHM_LIMITS, 3), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3887 PMDA_PMUNITS(0,0,0,0,0,0)}},
3889 /* ipc.shm.max_shmsys */
3890 { NULL,
3891 { PMDA_PMID(CLUSTER_SHM_LIMITS, 4), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_DISCRETE,
3892 PMDA_PMUNITS(0,0,0,0,0,0)}},
3895 * shared memory stat cluster
3896 * Cluster added by wu liming <wulm.fnst@cn.fujitsu.com>
3899 /* ipc.shm.key */
3900 { NULL,
3901 { PMDA_PMID(CLUSTER_SHM_STAT,0), PM_TYPE_STRING, IPC_STAT_INDOM, PM_SEM_DISCRETE,
3902 PMDA_PMUNITS(0,0,0,0,0,0) }, },
3904 /* ipc.shm.owner */
3905 { NULL,
3906 { PMDA_PMID(CLUSTER_SHM_STAT,1), PM_TYPE_STRING, IPC_STAT_INDOM, PM_SEM_DISCRETE,
3907 PMDA_PMUNITS(0,0,0,0,0,0) }, },
3909 /* ipc.shm.perms */
3910 { NULL,
3911 { PMDA_PMID(CLUSTER_SHM_STAT,2), PM_TYPE_U32, IPC_STAT_INDOM, PM_SEM_INSTANT,
3912 PMDA_PMUNITS(0,0,0,0,0,0) }, },
3914 /* ipc.shm.segsz */
3915 { NULL,
3916 { PMDA_PMID(CLUSTER_SHM_STAT,3), PM_TYPE_U32, IPC_STAT_INDOM, PM_SEM_DISCRETE,
3917 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
3919 /* ipc.shm.nattch */
3920 { NULL,
3921 { PMDA_PMID(CLUSTER_SHM_STAT,4), PM_TYPE_U32, IPC_STAT_INDOM, PM_SEM_INSTANT,
3922 PMDA_PMUNITS(0,0,0,0,0,0) }, },
3924 /* ipc.shm.status */
3925 { NULL,
3926 { PMDA_PMID(CLUSTER_SHM_STAT,5), PM_TYPE_STRING, IPC_STAT_INDOM, PM_SEM_INSTANT,
3927 PMDA_PMUNITS(0,0,0,0,0,0) }, },
3930 * message queues stat cluster
3933 /* ipc.msg.key */
3934 { NULL,
3935 { PMDA_PMID(CLUSTER_MSG_STAT,0), PM_TYPE_STRING, IPC_MSG_INDOM, PM_SEM_DISCRETE,
3936 PMDA_PMUNITS(0,0,0,0,0,0) }, },
3938 /* ipc.msg.owner */
3939 { NULL,
3940 { PMDA_PMID(CLUSTER_MSG_STAT,1), PM_TYPE_STRING, IPC_MSG_INDOM, PM_SEM_DISCRETE,
3941 PMDA_PMUNITS(0,0,0,0,0,0) }, },
3943 /* ipc.msg.perms */
3944 { NULL,
3945 { PMDA_PMID(CLUSTER_MSG_STAT,2), PM_TYPE_U32, IPC_MSG_INDOM, PM_SEM_INSTANT,
3946 PMDA_PMUNITS(0,0,0,0,0,0) }, },
3948 /* ipc.msg.msgsz */
3949 { NULL,
3950 { PMDA_PMID(CLUSTER_MSG_STAT,3), PM_TYPE_U32, IPC_MSG_INDOM, PM_SEM_DISCRETE,
3951 PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
3953 /* ipc.msg.messages */
3954 { NULL,
3955 { PMDA_PMID(CLUSTER_MSG_STAT,4), PM_TYPE_U32, IPC_MSG_INDOM, PM_SEM_INSTANT,
3956 PMDA_PMUNITS(0,0,0,0,0,0) }, },
3959 * semaphore arrays stat cluster
3962 /* ipc.sem.key */
3963 { NULL,
3964 { PMDA_PMID(CLUSTER_SEM_STAT,0), PM_TYPE_STRING, IPC_SEM_INDOM, PM_SEM_DISCRETE,
3965 PMDA_PMUNITS(0,0,0,0,0,0) }, },
3967 /* ipc.sem.owner */
3968 { NULL,
3969 { PMDA_PMID(CLUSTER_SEM_STAT,1), PM_TYPE_STRING, IPC_SEM_INDOM, PM_SEM_DISCRETE,
3970 PMDA_PMUNITS(0,0,0,0,0,0) }, },
3972 /* ipc.sem.perms */
3973 { NULL,
3974 { PMDA_PMID(CLUSTER_SEM_STAT,2), PM_TYPE_U32, IPC_SEM_INDOM, PM_SEM_INSTANT,
3975 PMDA_PMUNITS(0,0,0,0,0,0) }, },
3977 /* ipc.sem.nsems */
3978 { NULL,
3979 { PMDA_PMID(CLUSTER_SEM_STAT,3), PM_TYPE_U32, IPC_SEM_INDOM, PM_SEM_INSTANT,
3980 PMDA_PMUNITS(0,0,0,0,0,0) }, },
3983 * ksm info cluster
3985 /* mem.ksm.full_scans */
3986 { NULL,
3987 { PMDA_PMID(CLUSTER_KSM_INFO, 0), KERNEL_ULONG, PM_INDOM_NULL, PM_SEM_INSTANT,
3988 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
3990 /* mem.ksm.merge_across_nodes */
3991 { NULL,
3992 { PMDA_PMID(CLUSTER_KSM_INFO, 1), KERNEL_ULONG, PM_INDOM_NULL, PM_SEM_INSTANT,
3993 PMDA_PMUNITS(0,0,0,0,0,0)}},
3995 /* mem.ksm.pages_shared */
3996 { NULL,
3997 { PMDA_PMID(CLUSTER_KSM_INFO, 2), KERNEL_ULONG, PM_INDOM_NULL, PM_SEM_INSTANT,
3998 PMDA_PMUNITS(0,0,0,0,0,0)}},
4000 /* mem.ksm.pages_sharing */
4001 { NULL,
4002 { PMDA_PMID(CLUSTER_KSM_INFO, 3), KERNEL_ULONG, PM_INDOM_NULL, PM_SEM_INSTANT,
4003 PMDA_PMUNITS(0,0,0,0,0,0)}},
4005 /* mem.ksm.pages_to_scan */
4006 { NULL,
4007 { PMDA_PMID(CLUSTER_KSM_INFO, 4), KERNEL_ULONG, PM_INDOM_NULL, PM_SEM_INSTANT,
4008 PMDA_PMUNITS(0,0,0,0,0,0)}},
4010 /* mem.ksm.pages_unshared */
4011 { NULL,
4012 { PMDA_PMID(CLUSTER_KSM_INFO, 5), KERNEL_ULONG, PM_INDOM_NULL, PM_SEM_INSTANT,
4013 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) } },
4015 /* mem.ksm.pages_volatile */
4016 { NULL,
4017 { PMDA_PMID(CLUSTER_KSM_INFO, 6), KERNEL_ULONG, PM_INDOM_NULL, PM_SEM_INSTANT,
4018 PMDA_PMUNITS(0,0,0,0,0,0)}},
4020 /* mem.ksm.run_state */
4021 { NULL,
4022 { PMDA_PMID(CLUSTER_KSM_INFO, 7), KERNEL_ULONG, PM_INDOM_NULL, PM_SEM_INSTANT,
4023 PMDA_PMUNITS(0,0,0,0,0,0)}},
4025 /* mem.ksm.sleep_time */
4026 { NULL,
4027 { PMDA_PMID(CLUSTER_KSM_INFO, 8), KERNEL_ULONG, PM_INDOM_NULL, PM_SEM_INSTANT,
4028 PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0)}},
4031 * number of users cluster
4034 /* kernel.all.nusers */
4035 { NULL,
4036 { PMDA_PMID(CLUSTER_NUSERS, 0), PM_TYPE_U32, PM_INDOM_NULL, PM_SEM_INSTANT,
4037 PMDA_PMUNITS(0,0,0,0,0,0)}},
4040 * /proc/sys/fs vfs cluster
4043 /* vfs.files */
4044 { &proc_sys_fs.fs_files_count,
4045 { PMDA_PMID(CLUSTER_VFS,0), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
4046 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4047 { &proc_sys_fs.fs_files_free,
4048 { PMDA_PMID(CLUSTER_VFS,1), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
4049 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4050 { &proc_sys_fs.fs_files_max,
4051 { PMDA_PMID(CLUSTER_VFS,2), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
4052 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4053 { &proc_sys_fs.fs_inodes_count,
4054 { PMDA_PMID(CLUSTER_VFS,3), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
4055 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4056 { &proc_sys_fs.fs_inodes_free,
4057 { PMDA_PMID(CLUSTER_VFS,4), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
4058 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4059 { &proc_sys_fs.fs_dentry_count,
4060 { PMDA_PMID(CLUSTER_VFS,5), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
4061 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4062 { &proc_sys_fs.fs_dentry_free,
4063 { PMDA_PMID(CLUSTER_VFS,6), PM_TYPE_32, PM_INDOM_NULL, PM_SEM_INSTANT,
4064 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4067 * mem.vmstat cluster
4070 /* mem.vmstat.nr_dirty */
4071 { &_pm_proc_vmstat.nr_dirty,
4072 {PMDA_PMID(28,0), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4073 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4075 /* mem.vmstat.nr_writeback */
4076 { &_pm_proc_vmstat.nr_writeback,
4077 {PMDA_PMID(28,1), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4078 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4080 /* mem.vmstat.nr_unstable */
4081 { &_pm_proc_vmstat.nr_unstable,
4082 {PMDA_PMID(28,2), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4083 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4085 /* mem.vmstat.nr_page_table_pages */
4086 { &_pm_proc_vmstat.nr_page_table_pages,
4087 {PMDA_PMID(28,3), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4088 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4090 /* mem.vmstat.nr_mapped */
4091 { &_pm_proc_vmstat.nr_mapped,
4092 {PMDA_PMID(28,4), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4093 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4095 /* mem.vmstat.nr_slab */
4096 { &_pm_proc_vmstat.nr_slab,
4097 {PMDA_PMID(28,5), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4098 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4100 /* mem.vmstat.pgpgin */
4101 { &_pm_proc_vmstat.pgpgin,
4102 {PMDA_PMID(28,6), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4103 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4105 /* mem.vmstat.pgpgout */
4106 { &_pm_proc_vmstat.pgpgout,
4107 {PMDA_PMID(28,7), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4108 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4110 /* mem.vmstat.pswpin */
4111 { &_pm_proc_vmstat.pswpin,
4112 {PMDA_PMID(28,8), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4113 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4115 /* mem.vmstat.pswpout */
4116 { &_pm_proc_vmstat.pswpout,
4117 {PMDA_PMID(28,9), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4118 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4120 /* mem.vmstat.pgalloc_high */
4121 { &_pm_proc_vmstat.pgalloc_high,
4122 {PMDA_PMID(28,10), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4123 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4125 /* mem.vmstat.pgalloc_normal */
4126 { &_pm_proc_vmstat.pgalloc_normal,
4127 {PMDA_PMID(28,11), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4128 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4130 /* mem.vmstat.pgalloc_dma */
4131 { &_pm_proc_vmstat.pgalloc_dma,
4132 {PMDA_PMID(28,12), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4133 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4135 /* mem.vmstat.pgfree */
4136 { &_pm_proc_vmstat.pgfree,
4137 {PMDA_PMID(28,13), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4138 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4140 /* mem.vmstat.pgactivate */
4141 { &_pm_proc_vmstat.pgactivate,
4142 {PMDA_PMID(28,14), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4143 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4145 /* mem.vmstat.pgdeactivate */
4146 { &_pm_proc_vmstat.pgdeactivate,
4147 {PMDA_PMID(28,15), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4148 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4150 /* mem.vmstat.pgfault */
4151 { &_pm_proc_vmstat.pgfault,
4152 {PMDA_PMID(28,16), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4153 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4155 /* mem.vmstat.pgmajfault */
4156 { &_pm_proc_vmstat.pgmajfault,
4157 {PMDA_PMID(28,17), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4158 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4160 /* mem.vmstat.pgrefill_high */
4161 { &_pm_proc_vmstat.pgrefill_high,
4162 {PMDA_PMID(28,18), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4163 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4165 /* mem.vmstat.pgrefill_normal */
4166 { &_pm_proc_vmstat.pgrefill_normal,
4167 {PMDA_PMID(28,19), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4168 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4170 /* mem.vmstat.pgrefill_dma */
4171 { &_pm_proc_vmstat.pgrefill_dma,
4172 {PMDA_PMID(28,20), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4173 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4175 /* mem.vmstat.pgsteal_high */
4176 { &_pm_proc_vmstat.pgsteal_high,
4177 {PMDA_PMID(28,21), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4178 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4180 /* mem.vmstat.pgsteal_normal */
4181 { &_pm_proc_vmstat.pgsteal_normal,
4182 {PMDA_PMID(28,22), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4183 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4185 /* mem.vmstat.pgsteal_dma */
4186 { &_pm_proc_vmstat.pgsteal_dma,
4187 {PMDA_PMID(28,23), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4188 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4190 /* mem.vmstat.pgscan_kswapd_high */
4191 { &_pm_proc_vmstat.pgscan_kswapd_high,
4192 {PMDA_PMID(28,24), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4193 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4195 /* mem.vmstat.pgscan_kswapd_normal */
4196 { &_pm_proc_vmstat.pgscan_kswapd_normal,
4197 {PMDA_PMID(28,25), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4198 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4200 /* mem.vmstat.pgscan_kswapd_dma */
4201 { &_pm_proc_vmstat.pgscan_kswapd_dma,
4202 {PMDA_PMID(28,26), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4203 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4205 /* mem.vmstat.pgscan_direct_high */
4206 { &_pm_proc_vmstat.pgscan_direct_high,
4207 {PMDA_PMID(28,27), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4208 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4210 /* mem.vmstat.pgscan_direct_normal */
4211 { &_pm_proc_vmstat.pgscan_direct_normal,
4212 {PMDA_PMID(28,28), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4213 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4215 /* mem.vmstat.pgscan_direct_dma */
4216 { &_pm_proc_vmstat.pgscan_direct_dma,
4217 {PMDA_PMID(28,29), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4218 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4220 /* mem.vmstat.pginodesteal */
4221 { &_pm_proc_vmstat.pginodesteal,
4222 {PMDA_PMID(28,30), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4223 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4225 /* mem.vmstat.slabs_scanned */
4226 { &_pm_proc_vmstat.slabs_scanned,
4227 {PMDA_PMID(28,31), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4228 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4230 /* mem.vmstat.kswapd_steal */
4231 { &_pm_proc_vmstat.kswapd_steal,
4232 {PMDA_PMID(28,32), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4233 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4235 /* mem.vmstat.kswapd_inodesteal */
4236 { &_pm_proc_vmstat.kswapd_inodesteal,
4237 {PMDA_PMID(28,33), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4238 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4240 /* mem.vmstat.pageoutrun */
4241 { &_pm_proc_vmstat.pageoutrun,
4242 {PMDA_PMID(28,34), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4243 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4245 /* mem.vmstat.allocstall */
4246 { &_pm_proc_vmstat.allocstall,
4247 {PMDA_PMID(28,35), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4248 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4250 /* mem.vmstat.pgrotated */
4251 { &_pm_proc_vmstat.pgrotated,
4252 {PMDA_PMID(28,36), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4253 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4255 /* mem.vmstat.nr_slab_reclaimable */
4256 { &_pm_proc_vmstat.nr_slab_reclaimable,
4257 {PMDA_PMID(28,37), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4258 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4260 /* mem.vmstat.nr_slab_unreclaimable */
4261 { &_pm_proc_vmstat.nr_slab_unreclaimable,
4262 {PMDA_PMID(28,38), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4263 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4265 /* mem.vmstat.nr_anon_pages */
4266 { &_pm_proc_vmstat.nr_anon_pages,
4267 {PMDA_PMID(28,39), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4268 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4270 /* mem.vmstat.nr_bounce */
4271 { &_pm_proc_vmstat.nr_bounce,
4272 {PMDA_PMID(28,40), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4273 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4275 /* mem.vmstat.nr_file_pages */
4276 { &_pm_proc_vmstat.nr_file_pages,
4277 {PMDA_PMID(28,41), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4278 PMDA_PMUNITS(0,0,0,0,0,0) }, },
4280 /* mem.vmstat.nr_vmscan_write */
4281 { &_pm_proc_vmstat.nr_vmscan_write,
4282 {PMDA_PMID(28,42), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4283 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4285 /* mem.vmstat.htlb_buddy_alloc_fail */
4286 { &_pm_proc_vmstat.htlb_buddy_alloc_fail,
4287 {PMDA_PMID(28,43), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4288 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4290 /* mem.vmstat.htlb_buddy_alloc_success */
4291 { &_pm_proc_vmstat.htlb_buddy_alloc_success,
4292 {PMDA_PMID(28,44), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4293 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4295 /* mem.vmstat.nr_active_anon */
4296 { &_pm_proc_vmstat.nr_active_anon,
4297 {PMDA_PMID(28,45), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4298 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4300 /* mem.vmstat.nr_active_file */
4301 { &_pm_proc_vmstat.nr_active_file,
4302 {PMDA_PMID(28,46), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4303 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4305 /* mem.vmstat.nr_free_pages */
4306 { &_pm_proc_vmstat.nr_free_pages,
4307 {PMDA_PMID(28,47), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4308 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4310 /* mem.vmstat.nr_inactive_anon */
4311 { &_pm_proc_vmstat.nr_inactive_anon,
4312 {PMDA_PMID(28,48), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4313 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4315 /* mem.vmstat.nr_inactive_file */
4316 { &_pm_proc_vmstat.nr_inactive_file,
4317 {PMDA_PMID(28,49), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4318 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4320 /* mem.vmstat.nr_isolated_anon */
4321 { &_pm_proc_vmstat.nr_isolated_anon,
4322 {PMDA_PMID(28,50), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4323 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4325 /* mem.vmstat.nr_isolated_file */
4326 { &_pm_proc_vmstat.nr_isolated_file,
4327 {PMDA_PMID(28,51), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4328 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4330 /* mem.vmstat.nr_kernel_stack */
4331 { &_pm_proc_vmstat.nr_kernel_stack,
4332 {PMDA_PMID(28,52), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4333 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4335 /* mem.vmstat.nr_mlock */
4336 { &_pm_proc_vmstat.nr_mlock,
4337 {PMDA_PMID(28,53), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4338 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4340 /* mem.vmstat.nr_shmem */
4341 { &_pm_proc_vmstat.nr_shmem,
4342 {PMDA_PMID(28,54), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4343 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4345 /* mem.vmstat.nr_unevictable */
4346 { &_pm_proc_vmstat.nr_unevictable,
4347 {PMDA_PMID(28,55), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4348 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4350 /* mem.vmstat.nr_writeback_temp */
4351 { &_pm_proc_vmstat.nr_writeback_temp,
4352 {PMDA_PMID(28,56), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4353 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4355 /* mem.vmstat.compact_blocks_moved */
4356 { &_pm_proc_vmstat.compact_blocks_moved,
4357 {PMDA_PMID(28,57), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4358 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4360 /* mem.vmstat.compact_fail */
4361 { &_pm_proc_vmstat.compact_fail,
4362 {PMDA_PMID(28,58), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4363 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4365 /* mem.vmstat.compact_pagemigrate_failed */
4366 { &_pm_proc_vmstat.compact_pagemigrate_failed,
4367 {PMDA_PMID(28,59), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4368 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4370 /* mem.vmstat.compact_pages_moved */
4371 { &_pm_proc_vmstat.compact_pages_moved,
4372 {PMDA_PMID(28,60), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4373 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4375 /* mem.vmstat.compact_stall */
4376 { &_pm_proc_vmstat.compact_stall,
4377 {PMDA_PMID(28,61), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4378 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4380 /* mem.vmstat.compact_success */
4381 { &_pm_proc_vmstat.compact_success,
4382 {PMDA_PMID(28,62), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4383 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4385 /* mem.vmstat.pgalloc_dma32 */
4386 { &_pm_proc_vmstat.pgalloc_dma32,
4387 {PMDA_PMID(28,63), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4388 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4390 /* mem.vmstat.pgalloc_movable */
4391 { &_pm_proc_vmstat.pgalloc_movable,
4392 {PMDA_PMID(28,64), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4393 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4395 /* mem.vmstat.pgrefill_dma32 */
4396 { &_pm_proc_vmstat.pgrefill_dma32,
4397 {PMDA_PMID(28,65), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4398 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4400 /* mem.vmstat.pgrefill_movable */
4401 { &_pm_proc_vmstat.pgrefill_movable,
4402 {PMDA_PMID(28,66), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4403 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4405 /* mem.vmstat.pgscan_direct_dma32 */
4406 { &_pm_proc_vmstat.pgscan_direct_dma32,
4407 {PMDA_PMID(28,67), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4408 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4410 /* mem.vmstat.pgscan_direct_movable */
4411 { &_pm_proc_vmstat.pgscan_direct_movable,
4412 {PMDA_PMID(28,68), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4413 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4415 /* mem.vmstat.pgscan_kswapd_dma32 */
4416 { &_pm_proc_vmstat.pgscan_kswapd_dma32,
4417 {PMDA_PMID(28,69), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4418 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4420 /* mem.vmstat.pgscan_kswapd_movable */
4421 { &_pm_proc_vmstat.pgscan_kswapd_movable,
4422 {PMDA_PMID(28,70), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4423 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4425 /* mem.vmstat.pgsteal_dma32 */
4426 { &_pm_proc_vmstat.pgsteal_dma32,
4427 {PMDA_PMID(28,71), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4428 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4430 /* mem.vmstat.pgsteal_movable */
4431 { &_pm_proc_vmstat.pgsteal_movable,
4432 {PMDA_PMID(28,72), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4433 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4435 /* mem.vmstat.thp_fault_alloc */
4436 { &_pm_proc_vmstat.thp_fault_alloc,
4437 {PMDA_PMID(28,73), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4438 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4440 /* mem.vmstat.thp_fault_fallback */
4441 { &_pm_proc_vmstat.thp_fault_fallback,
4442 {PMDA_PMID(28,74), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4443 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4445 /* mem.vmstat.thp_collapse_alloc */
4446 { &_pm_proc_vmstat.thp_collapse_alloc,
4447 {PMDA_PMID(28,75), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4448 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4450 /* mem.vmstat.thp_collapse_alloc_failed */
4451 { &_pm_proc_vmstat.thp_collapse_alloc_failed,
4452 {PMDA_PMID(28,76), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4453 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4455 /* mem.vmstat.thp_split */
4456 { &_pm_proc_vmstat.thp_split,
4457 {PMDA_PMID(28,77), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4458 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4460 /* mem.vmstat.unevictable_pgs_cleared */
4461 { &_pm_proc_vmstat.unevictable_pgs_cleared,
4462 {PMDA_PMID(28,78), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4463 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4465 /* mem.vmstat.unevictable_pgs_culled */
4466 { &_pm_proc_vmstat.unevictable_pgs_culled,
4467 {PMDA_PMID(28,79), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4468 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4470 /* mem.vmstat.unevictable_pgs_mlocked */
4471 { &_pm_proc_vmstat.unevictable_pgs_mlocked,
4472 {PMDA_PMID(28,80), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4473 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4475 /* mem.vmstat.unevictable_pgs_mlockfreed */
4476 { &_pm_proc_vmstat.unevictable_pgs_mlockfreed,
4477 {PMDA_PMID(28,81), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4478 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4480 /* mem.vmstat.unevictable_pgs_munlocked */
4481 { &_pm_proc_vmstat.unevictable_pgs_munlocked,
4482 {PMDA_PMID(28,82), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4483 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4485 /* mem.vmstat.unevictable_pgs_rescued */
4486 { &_pm_proc_vmstat.unevictable_pgs_rescued,
4487 {PMDA_PMID(28,83), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4488 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4490 /* mem.vmstat.unevictable_pgs_scanned */
4491 { &_pm_proc_vmstat.unevictable_pgs_scanned,
4492 {PMDA_PMID(28,84), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4493 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4495 /* mem.vmstat.unevictable_pgs_stranded */
4496 { &_pm_proc_vmstat.unevictable_pgs_stranded,
4497 {PMDA_PMID(28,85), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4498 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4500 /* mem.vmstat.zone_reclaim_failed */
4501 { &_pm_proc_vmstat.zone_reclaim_failed,
4502 {PMDA_PMID(28,86), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4503 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4505 /* mem.vmstat.kswapd_low_wmark_hit_quickly */
4506 { &_pm_proc_vmstat.kswapd_low_wmark_hit_quickly,
4507 {PMDA_PMID(28,87), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4508 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4510 /* mem.vmstat.kswapd_high_wmark_hit_quickly */
4511 { &_pm_proc_vmstat.kswapd_high_wmark_hit_quickly,
4512 {PMDA_PMID(28,88), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4513 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4515 /* mem.vmstat.kswapd_skip_congestion_wait */
4516 { &_pm_proc_vmstat.kswapd_skip_congestion_wait,
4517 {PMDA_PMID(28,89), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4518 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4520 /* mem.vmstat.nr_anon_transparent_hugepages */
4521 { &_pm_proc_vmstat.nr_anon_transparent_hugepages,
4522 {PMDA_PMID(28,90), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4523 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4525 /* mem.vmstat.nr_dirtied */
4526 { &_pm_proc_vmstat.nr_dirtied,
4527 {PMDA_PMID(28,91), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4528 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4530 /* mem.vmstat.nr_dirty_background_threshold */
4531 { &_pm_proc_vmstat.nr_dirty_background_threshold,
4532 {PMDA_PMID(28,92), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4533 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4535 /* mem.vmstat.nr_dirty_threshold */
4536 { &_pm_proc_vmstat.nr_dirty_threshold,
4537 {PMDA_PMID(28,93), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4538 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4540 /* mem.vmstat.nr_written */
4541 { &_pm_proc_vmstat.nr_written,
4542 {PMDA_PMID(28,94), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4543 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4545 /* mem.vmstat.numa_foreign */
4546 { &_pm_proc_vmstat.numa_foreign,
4547 {PMDA_PMID(28,95), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4548 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4550 /* mem.vmstat.numa_hit */
4551 { &_pm_proc_vmstat.numa_hit,
4552 {PMDA_PMID(28,96), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4553 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4555 /* mem.vmstat.numa_interleave */
4556 { &_pm_proc_vmstat.numa_interleave,
4557 {PMDA_PMID(28,97), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4558 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4560 /* mem.vmstat.numa_local */
4561 { &_pm_proc_vmstat.numa_local,
4562 {PMDA_PMID(28,98), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4563 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4565 /* mem.vmstat.numa_miss */
4566 { &_pm_proc_vmstat.numa_miss,
4567 {PMDA_PMID(28,99), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4568 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4570 /* mem.vmstat.numa_other */
4571 { &_pm_proc_vmstat.numa_other,
4572 {PMDA_PMID(28,100), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4573 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4575 /* mem.vmstat.thp_zero_page_alloc */
4576 { &_pm_proc_vmstat.thp_zero_page_alloc,
4577 {PMDA_PMID(28,101), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4578 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4580 /* mem.vmstat.thp_zero_page_alloc_failed */
4581 { &_pm_proc_vmstat.thp_zero_page_alloc_failed,
4582 {PMDA_PMID(28,102), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4583 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4585 /* mem.vmstat.balloon_inflate */
4586 { &_pm_proc_vmstat.balloon_inflate,
4587 {PMDA_PMID(28,103), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4588 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4590 /* mem.vmstat.balloon_deflate */
4591 { &_pm_proc_vmstat.balloon_deflate,
4592 {PMDA_PMID(28,104), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4593 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4595 /* mem.vmstat.balloon_migrate */
4596 { &_pm_proc_vmstat.balloon_migrate,
4597 {PMDA_PMID(28,105), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4598 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4600 /* mem.vmstat.compact_daemon_wake */
4601 { &_pm_proc_vmstat.compact_daemon_wake,
4602 {PMDA_PMID(28,106), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4603 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4605 /* mem.vmstat.compact_free_scanned */
4606 { &_pm_proc_vmstat.compact_free_scanned,
4607 {PMDA_PMID(28,107), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4608 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4610 /* mem.vmstat.compact_migrate_scanned */
4611 { &_pm_proc_vmstat.compact_migrate_scanned,
4612 {PMDA_PMID(28,108), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4613 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4615 /* mem.vmstat.drop_pagecache */
4616 { &_pm_proc_vmstat.drop_pagecache,
4617 {PMDA_PMID(28,109), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4618 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4620 /* mem.vmstat.drop_slab */
4621 { &_pm_proc_vmstat.drop_slab,
4622 {PMDA_PMID(28,110), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4623 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4625 /* mem.vmstat.nr_free_cma */
4626 { &_pm_proc_vmstat.nr_free_cma,
4627 {PMDA_PMID(28,111), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4628 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4630 /* mem.vmstat.nr_pages_scanned */
4631 { &_pm_proc_vmstat.nr_pages_scanned,
4632 {PMDA_PMID(28,112), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4633 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4635 /* mem.vmstat.nr_vmscan_immediate_reclaim */
4636 { &_pm_proc_vmstat.nr_vmscan_immediate_reclaim,
4637 {PMDA_PMID(28,113), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4638 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4640 /* mem.vmstat.numa_pages_migrated */
4641 { &_pm_proc_vmstat.numa_pages_migrated,
4642 {PMDA_PMID(28,114), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4643 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4645 /* mem.vmstat.numa_pte_updates */
4646 { &_pm_proc_vmstat.numa_pte_updates,
4647 {PMDA_PMID(28,115), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4648 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4650 /* mem.vmstat.pglazyfreed */
4651 { &_pm_proc_vmstat.pglazyfreed,
4652 {PMDA_PMID(28,116), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4653 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4655 /* mem.vmstat.pgmigrate_fail */
4656 { &_pm_proc_vmstat.pgmigrate_fail,
4657 {PMDA_PMID(28,117), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4658 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4660 /* mem.vmstat.pgmigrate_success */
4661 { &_pm_proc_vmstat.pgmigrate_success,
4662 {PMDA_PMID(28,118), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4663 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4665 /* mem.vmstat.thp_deferred_split_page */
4666 { &_pm_proc_vmstat.thp_deferred_split_page,
4667 {PMDA_PMID(28,119), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4668 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4670 /* mem.vmstat.thp_split_page */
4671 { &_pm_proc_vmstat.thp_split_page,
4672 {PMDA_PMID(28,120), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4673 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4675 /* mem.vmstat.thp_split_page_failed */
4676 { &_pm_proc_vmstat.thp_split_page_failed,
4677 {PMDA_PMID(28,121), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4678 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4680 /* mem.vmstat.thp_split_pmd */
4681 { &_pm_proc_vmstat.thp_split_pmd,
4682 {PMDA_PMID(28,122), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4683 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4685 /* mem.vmstat.workingset_activate */
4686 { &_pm_proc_vmstat.workingset_activate,
4687 {PMDA_PMID(28,123), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4688 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4690 /* mem.vmstat.workingset_nodereclaim */
4691 { &_pm_proc_vmstat.workingset_nodereclaim,
4692 {PMDA_PMID(28,124), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4693 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4695 /* mem.vmstat.workingset_refault */
4696 { &_pm_proc_vmstat.workingset_refault,
4697 {PMDA_PMID(28,125), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4698 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4700 /* mem.vmstat.compact_isolated */
4701 { &_pm_proc_vmstat.compact_isolated,
4702 {PMDA_PMID(28,126), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4703 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4705 /* mem.vmstat.nr_shmem_hugepages */
4706 { &_pm_proc_vmstat.nr_shmem_hugepages,
4707 {PMDA_PMID(28,127), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4708 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4710 /* mem.vmstat.nr_shmem_pmdmapped */
4711 { &_pm_proc_vmstat.nr_shmem_pmdmapped,
4712 {PMDA_PMID(28,128), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4713 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4715 /* mem.vmstat.nr_zone_inactive_anon */
4716 { &_pm_proc_vmstat.nr_zone_inactive_anon,
4717 {PMDA_PMID(28,129), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4718 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4720 /* mem.vmstat.nr_zone_active_anon */
4721 { &_pm_proc_vmstat.nr_zone_active_anon,
4722 {PMDA_PMID(28,130), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4723 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4725 /* mem.vmstat.nr_zone_inactive_file */
4726 { &_pm_proc_vmstat.nr_zone_inactive_file,
4727 {PMDA_PMID(28,131), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4728 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4730 /* mem.vmstat.nr_zone_active_file */
4731 { &_pm_proc_vmstat.nr_zone_active_file,
4732 {PMDA_PMID(28,132), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4733 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4735 /* mem.vmstat.nr_zone_unevictable */
4736 { &_pm_proc_vmstat.nr_zone_unevictable,
4737 {PMDA_PMID(28,133), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4738 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4740 /* mem.vmstat.nr_zone_write_pending */
4741 { &_pm_proc_vmstat.nr_zone_write_pending,
4742 {PMDA_PMID(28,134), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4743 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4745 /* mem.vmstat.nr_zspages */
4746 { &_pm_proc_vmstat.nr_zspages,
4747 {PMDA_PMID(28,135), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
4748 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4750 /* mem.vmstat.thp_file_alloc */
4751 { &_pm_proc_vmstat.thp_file_alloc,
4752 {PMDA_PMID(28,136), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4753 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4755 /* mem.vmstat.thp_file_mapped */
4756 { &_pm_proc_vmstat.thp_file_mapped,
4757 {PMDA_PMID(28,137), PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_COUNTER,
4758 PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4761 * sysfs_kernel cluster
4763 /* sysfs.kernel.uevent_seqnum */
4764 { &sysfs_kernel.uevent_seqnum,
4765 { PMDA_PMID(CLUSTER_SYSFS_KERNEL,0), PM_TYPE_U64, PM_INDOM_NULL,
4766 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4769 * /proc/interrupts clusters
4771 /* kernel.all.interrupts.errors */
4772 { &irq_err_count,
4773 { PMDA_PMID(CLUSTER_INTERRUPTS, 3), PM_TYPE_U32, PM_INDOM_NULL,
4774 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4776 /* kernel.percpu.intr */
4777 { NULL, { PMDA_PMID(CLUSTER_INTERRUPTS,4), PM_TYPE_U64,
4778 CPU_INDOM, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4780 /* kernel.percpu.interrupts.line[<N>] */
4781 { NULL, { PMDA_PMID(CLUSTER_INTERRUPT_LINES, 0), PM_TYPE_U32,
4782 CPU_INDOM, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4784 /* kernel.percpu.interrupts.[<other>] */
4785 { NULL, { PMDA_PMID(CLUSTER_INTERRUPT_OTHER, 0), PM_TYPE_U32,
4786 CPU_INDOM, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4789 * /proc/softirqs cluster
4792 /* kernel.percpu.softirqs.[<name>] */
4793 { NULL, { PMDA_PMID(CLUSTER_SOFTIRQS, 0), PM_TYPE_U32,
4794 CPU_INDOM, PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4797 * disk.dm cluster
4799 /* disk.dm.read */
4800 { NULL, { PMDA_PMID(CLUSTER_DM,0), KERNEL_ULONG, DM_INDOM,
4801 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4803 /* disk.dm.write */
4804 { NULL, { PMDA_PMID(CLUSTER_DM,1), KERNEL_ULONG, DM_INDOM,
4805 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4807 /* disk.dm.total */
4808 { NULL, { PMDA_PMID(CLUSTER_DM,2), PM_TYPE_U64, DM_INDOM,
4809 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4811 /* disk.dm.blkread */
4812 { NULL, { PMDA_PMID(CLUSTER_DM,3), KERNEL_ULONG, DM_INDOM,
4813 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4815 /* disk.dm.blkwrite */
4816 { NULL, { PMDA_PMID(CLUSTER_DM,4), KERNEL_ULONG, DM_INDOM,
4817 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4819 /* disk.dm.blktotal */
4820 { NULL, { PMDA_PMID(CLUSTER_DM,5), PM_TYPE_U64, DM_INDOM,
4821 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4823 /* disk.dm.read_bytes */
4824 { NULL, { PMDA_PMID(CLUSTER_DM,6), PM_TYPE_U32, DM_INDOM,
4825 PM_SEM_COUNTER, PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
4827 /* disk.dm.write_bytes */
4828 { NULL, { PMDA_PMID(CLUSTER_DM,7), PM_TYPE_U32, DM_INDOM,
4829 PM_SEM_COUNTER, PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
4831 /* disk.dm.total_bytes */
4832 { NULL, { PMDA_PMID(CLUSTER_DM,8), PM_TYPE_U32, DM_INDOM,
4833 PM_SEM_COUNTER, PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
4835 /* disk.dm.read_merge */
4836 { NULL, { PMDA_PMID(CLUSTER_DM,9), KERNEL_ULONG, DM_INDOM,
4837 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4839 /* disk.dm.write_merge */
4840 { NULL, { PMDA_PMID(CLUSTER_DM,10), KERNEL_ULONG, DM_INDOM,
4841 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4843 /* disk.dm.avactive */
4844 { NULL, { PMDA_PMID(CLUSTER_DM,11), PM_TYPE_U32, DM_INDOM,
4845 PM_SEM_COUNTER, PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
4847 /* disk.dm.aveq */
4848 { NULL, { PMDA_PMID(CLUSTER_DM,12), PM_TYPE_U32, DM_INDOM,
4849 PM_SEM_COUNTER, PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
4851 /* hinv.map.dmname */
4852 { NULL, { PMDA_PMID(CLUSTER_DM,13), PM_TYPE_STRING, DM_INDOM,
4853 PM_SEM_DISCRETE, PMDA_PMUNITS(0,0,0,0,0,0) }, },
4855 /* disk.dm.read_rawactive */
4856 { NULL, { PMDA_PMID(CLUSTER_DM,14), PM_TYPE_U32, DM_INDOM,
4857 PM_SEM_COUNTER, PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
4859 /* disk.dm.write_rawactive */
4860 { NULL, { PMDA_PMID(CLUSTER_DM,15), PM_TYPE_U32, DM_INDOM,
4861 PM_SEM_COUNTER, PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
4863 /* disk.dm.write_rawactive */
4864 { NULL, { PMDA_PMID(CLUSTER_DM,16), PM_TYPE_U32, DM_INDOM,
4865 PM_SEM_COUNTER, PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
4868 * disk.md cluster
4870 /* disk.md.read */
4871 { NULL, { PMDA_PMID(CLUSTER_MD,0), KERNEL_ULONG, MD_INDOM,
4872 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4874 /* disk.md.write */
4875 { NULL, { PMDA_PMID(CLUSTER_MD,1), KERNEL_ULONG, MD_INDOM,
4876 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4878 /* disk.md.total */
4879 { NULL, { PMDA_PMID(CLUSTER_MD,2), PM_TYPE_U64, MD_INDOM,
4880 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4882 /* disk.md.blkread */
4883 { NULL, { PMDA_PMID(CLUSTER_MD,3), KERNEL_ULONG, MD_INDOM,
4884 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4886 /* disk.md.blkwrite */
4887 { NULL, { PMDA_PMID(CLUSTER_MD,4), KERNEL_ULONG, MD_INDOM,
4888 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4890 /* disk.md.blktotal */
4891 { NULL, { PMDA_PMID(CLUSTER_MD,5), PM_TYPE_U64, MD_INDOM,
4892 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4894 /* disk.md.read_bytes */
4895 { NULL, { PMDA_PMID(CLUSTER_MD,6), PM_TYPE_U32, MD_INDOM,
4896 PM_SEM_COUNTER, PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
4898 /* disk.md.write_bytes */
4899 { NULL, { PMDA_PMID(CLUSTER_MD,7), PM_TYPE_U32, MD_INDOM,
4900 PM_SEM_COUNTER, PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
4902 /* disk.md.total_bytes */
4903 { NULL, { PMDA_PMID(CLUSTER_MD,8), PM_TYPE_U32, MD_INDOM,
4904 PM_SEM_COUNTER, PMDA_PMUNITS(1,0,0,PM_SPACE_KBYTE,0,0) }, },
4906 /* disk.md.read_merge */
4907 { NULL, { PMDA_PMID(CLUSTER_MD,9), KERNEL_ULONG, MD_INDOM,
4908 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4910 /* disk.md.write_merge */
4911 { NULL, { PMDA_PMID(CLUSTER_MD,10), KERNEL_ULONG, MD_INDOM,
4912 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4914 /* disk.md.avactive */
4915 { NULL, { PMDA_PMID(CLUSTER_MD,11), PM_TYPE_U32, MD_INDOM,
4916 PM_SEM_COUNTER, PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
4918 /* disk.md.aveq */
4919 { NULL, { PMDA_PMID(CLUSTER_MD,12), PM_TYPE_U32, MD_INDOM,
4920 PM_SEM_COUNTER, PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
4922 /* hinv.map.mdname */
4923 { NULL, { PMDA_PMID(CLUSTER_MD,13), PM_TYPE_STRING, MD_INDOM,
4924 PM_SEM_DISCRETE, PMDA_PMUNITS(0,0,0,0,0,0) }, },
4926 /* disk.md.read_rawactive */
4927 { NULL, { PMDA_PMID(CLUSTER_MD,14), PM_TYPE_U32, MD_INDOM,
4928 PM_SEM_COUNTER, PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
4930 /* disk.md.write_rawactive */
4931 { NULL, { PMDA_PMID(CLUSTER_MD,15), PM_TYPE_U32, MD_INDOM,
4932 PM_SEM_COUNTER, PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
4934 /* disk.md.write_rawactive */
4935 { NULL, { PMDA_PMID(CLUSTER_MD,16), PM_TYPE_U32, MD_INDOM,
4936 PM_SEM_COUNTER, PMDA_PMUNITS(0,1,0,0,PM_TIME_MSEC,0) }, },
4938 /* disk.md.status */
4939 { NULL, { PMDA_PMID(CLUSTER_MDADM,0), PM_TYPE_32, MD_INDOM,
4940 PM_SEM_INSTANT, PMDA_PMUNITS(0,0,0,0,0,0) }, },
4943 * network.softnet cluster
4945 /* network.softnet.processed */
4946 { NULL, { PMDA_PMID(CLUSTER_NET_SOFTNET,0), PM_TYPE_U64, PM_INDOM_NULL,
4947 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4949 /* network.softnet.dropped */
4950 { NULL, { PMDA_PMID(CLUSTER_NET_SOFTNET,1), PM_TYPE_U64, PM_INDOM_NULL,
4951 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4953 /* network.softnet.time_squeeze */
4954 { NULL, { PMDA_PMID(CLUSTER_NET_SOFTNET,2), PM_TYPE_U64, PM_INDOM_NULL,
4955 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4957 /* network.softnet.cpu_collision */
4958 { NULL, { PMDA_PMID(CLUSTER_NET_SOFTNET,3), PM_TYPE_U64, PM_INDOM_NULL,
4959 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4961 /* network.softnet.received_rps */
4962 { NULL, { PMDA_PMID(CLUSTER_NET_SOFTNET,4), PM_TYPE_U64, PM_INDOM_NULL,
4963 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4965 /* network.softnet.flow_limit_count */
4966 { NULL, { PMDA_PMID(CLUSTER_NET_SOFTNET,5), PM_TYPE_U64, PM_INDOM_NULL,
4967 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4969 /* network.softnet.percpu.processed */
4970 { NULL, { PMDA_PMID(CLUSTER_NET_SOFTNET,6), PM_TYPE_U64, CPU_INDOM,
4971 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4973 /* network.softnet.percpu.dropped */
4974 { NULL, { PMDA_PMID(CLUSTER_NET_SOFTNET,7), PM_TYPE_U64, CPU_INDOM,
4975 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4977 /* network.softnet.percpu.time_squeeze */
4978 { NULL, { PMDA_PMID(CLUSTER_NET_SOFTNET,8), PM_TYPE_U64, CPU_INDOM,
4979 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4981 /* network.softnet.percpu.cpu_collision */
4982 { NULL, { PMDA_PMID(CLUSTER_NET_SOFTNET,9), PM_TYPE_U64, CPU_INDOM,
4983 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4985 /* network.softnet.percpu.received_rps */
4986 { NULL, { PMDA_PMID(CLUSTER_NET_SOFTNET,10), PM_TYPE_U64, CPU_INDOM,
4987 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4989 /* network.softnet.percpu.flow_limit_count */
4990 { NULL, { PMDA_PMID(CLUSTER_NET_SOFTNET,11), PM_TYPE_U64, CPU_INDOM,
4991 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
4994 * tapedev cluster
4996 /* tape.dev.in_flight */
4997 { NULL, { PMDA_PMID(CLUSTER_TAPEDEV, TAPESTATS_IN_FLIGHT), PM_TYPE_U64, TAPEDEV_INDOM,
4998 PM_SEM_INSTANT, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
5000 /* tape.dev.io_ns */
5001 { NULL, { PMDA_PMID(CLUSTER_TAPEDEV, TAPESTATS_IO_NS), PM_TYPE_U64, TAPEDEV_INDOM,
5002 PM_SEM_COUNTER, PMDA_PMUNITS(0,1,0,0,PM_TIME_NSEC,0) }, },
5004 /* tape.dev.other_cnt */
5005 { NULL, { PMDA_PMID(CLUSTER_TAPEDEV, TAPESTATS_OTHER_CNT), PM_TYPE_U64, TAPEDEV_INDOM,
5006 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
5008 /* tape.dev.read_byte_cnt */
5009 { NULL, { PMDA_PMID(CLUSTER_TAPEDEV, TAPESTATS_READ_BYTE_CNT), PM_TYPE_U64, TAPEDEV_INDOM,
5010 PM_SEM_COUNTER, PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
5012 /* tape.dev.read_cnt */
5013 { NULL, { PMDA_PMID(CLUSTER_TAPEDEV, TAPESTATS_READ_CNT), PM_TYPE_U64, TAPEDEV_INDOM,
5014 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
5016 /* tape.dev.read_ns */
5017 { NULL, { PMDA_PMID(CLUSTER_TAPEDEV, TAPESTATS_READ_NS), PM_TYPE_U64, TAPEDEV_INDOM,
5018 PM_SEM_COUNTER, PMDA_PMUNITS(0,1,0,0,PM_TIME_NSEC,0) }, },
5020 /* tape.dev.resid_cnt */
5021 { NULL, { PMDA_PMID(CLUSTER_TAPEDEV, TAPESTATS_RESID_CNT), PM_TYPE_U64, TAPEDEV_INDOM,
5022 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
5024 /* tape.dev.write_byte_cnt */
5025 { NULL, { PMDA_PMID(CLUSTER_TAPEDEV, TAPESTATS_WRITE_BYTE_CNT), PM_TYPE_U64, TAPEDEV_INDOM,
5026 PM_SEM_COUNTER, PMDA_PMUNITS(1,0,0,PM_SPACE_BYTE,0,0) }, },
5028 /* tape.dev.write_cnt */
5029 { NULL, { PMDA_PMID(CLUSTER_TAPEDEV, TAPESTATS_WRITE_CNT), PM_TYPE_U64, TAPEDEV_INDOM,
5030 PM_SEM_COUNTER, PMDA_PMUNITS(0,0,1,0,0,PM_COUNT_ONE) }, },
5032 /* tape.dev.write_ns */
5033 { NULL, { PMDA_PMID(CLUSTER_TAPEDEV, TAPESTATS_WRITE_NS), PM_TYPE_U64, TAPEDEV_INDOM,
5034 PM_SEM_COUNTER, PMDA_PMUNITS(0,1,0,0,PM_TIME_NSEC,0) }, },
5036 /* hinv.ntape */
5037 { NULL, { PMDA_PMID(CLUSTER_TAPEDEV, TAPESTATS_HINV_NTAPE), PM_TYPE_U32, PM_INDOM_NULL,
5038 PM_SEM_DISCRETE, PMDA_PMUNITS(0,0,0,0,0,0) }, },
5041 typedef struct {
5042 int uid_flag; /* uid attribute received */
5043 int uid; /* uid receieved from PCP_ATTR_* */
5044 } linux_access_t;
5046 typedef struct {
5047 linux_container_t container;
5048 linux_access_t access;
5049 } perctx_t;
5051 static perctx_t *ctxtab;
5052 static int num_ctx;
5054 int linux_test_mode; /* bit field indicating if currently doing QA tests */
5055 char *linux_statspath = ""; /* optional path prefix for all stats files */
5056 char *linux_mdadm = "/sbin/mdadm"; /* program for extracting MD RAID status */
5058 FILE *
5059 linux_statsfile(const char *path, char *buffer, int size)
5061 snprintf(buffer, size, "%s%s", linux_statspath, path);
5062 buffer[size-1] = '\0';
5063 return fopen(buffer, "r");
5066 static linux_access_t *
5067 access_ctx(int ctx)
5069 if (ctx < num_ctx && ctx >= 0)
5070 return &ctxtab[ctx].access;
5071 return NULL;
5074 static linux_container_t *
5075 linux_ctx_container(int ctx)
5077 if (ctx < num_ctx && ctx >= 0 && ctxtab[ctx].container.name)
5078 return &ctxtab[ctx].container;
5079 return NULL;
5082 static int
5083 linux_refresh(pmdaExt *pmda, int *need_refresh, int context)
5085 linux_container_t *cp = linux_ctx_container(context);
5086 linux_access_t *access = access_ctx(context);
5087 int need_refresh_mtab = 0;
5088 int need_net_ioctl = 0;
5089 int ns_fds = 0;
5090 int sts = 0;
5092 if (cp && (sts = container_lookup(rootfd, cp)) < 0)
5093 return sts;
5095 if (need_refresh[CLUSTER_PARTITIONS])
5096 refresh_proc_partitions(INDOM(DISK_INDOM),
5097 INDOM(PARTITIONS_INDOM),
5098 INDOM(DM_INDOM), INDOM(MD_INDOM));
5100 if (need_refresh[CLUSTER_STAT])
5101 refresh_proc_stat(&proc_stat);
5103 if (need_refresh[CLUSTER_CPUINFO])
5104 refresh_proc_cpuinfo();
5106 if (need_refresh[CLUSTER_MEMINFO])
5107 refresh_proc_meminfo(&proc_meminfo);
5109 if (need_refresh[CLUSTER_NUMA_MEMINFO])
5110 refresh_numa_meminfo();
5112 if (need_refresh[CLUSTER_LOADAVG])
5113 refresh_proc_loadavg(&proc_loadavg);
5115 if (need_refresh[CLUSTER_NET_NFS])
5116 refresh_proc_net_rpc(&proc_net_rpc);
5118 if (need_refresh[CLUSTER_NET_SOCKSTAT])
5119 refresh_proc_net_sockstat(&proc_net_sockstat);
5121 if (need_refresh[CLUSTER_NET_SNMP])
5122 refresh_proc_net_snmp(&_pm_proc_net_snmp);
5124 if (need_refresh[CLUSTER_NET_SNMP6])
5125 refresh_proc_net_snmp6(_pm_proc_net_snmp6);
5127 if (need_refresh[CLUSTER_NET_TCP])
5128 refresh_proc_net_tcp(&proc_net_tcp);
5130 if (need_refresh[CLUSTER_NET_NETSTAT])
5131 refresh_proc_net_netstat(&_pm_proc_net_netstat);
5134 * Network interface metrics and namespaces are complicated by a
5135 * need to be in the right namespace at the right time (for /sys
5136 * -> MNTNS, for /proc or ioctl -> NETNS) - and the two have been
5137 * found to be mutually exclusive from the point of view of access
5138 * via the setns(2) syscall. We also have a further complicating
5139 * factor where some values are available *either* by sysfs (newer
5140 * kernels), *or* ioctl (older kernels).
5142 if (need_refresh[CLUSTER_NET_DEV] ||
5143 need_refresh[CLUSTER_NET_ADDR] ||
5144 need_refresh[CLUSTER_FILESYS] ||
5145 need_refresh[CLUSTER_TMPFS] ||
5146 need_refresh[REFRESH_NET_MTU] ||
5147 need_refresh[REFRESH_NET_SPEED] ||
5148 need_refresh[REFRESH_NET_DUPLEX] ||
5149 need_refresh[REFRESH_NET_LINKUP] ||
5150 need_refresh[REFRESH_NET_RUNNING] ||
5151 need_refresh[REFRESH_NETADDR_INET] ||
5152 need_refresh[REFRESH_NETADDR_IPV6] ||
5153 need_refresh[REFRESH_NETADDR_HW]) {
5154 pmInDom netaddr = INDOM(NET_ADDR_INDOM);
5155 pmInDom netdev = INDOM(NET_DEV_INDOM);
5157 if (need_refresh[CLUSTER_NET_ADDR])
5158 clear_net_addr_indom(netaddr);
5159 if (need_refresh[REFRESH_NETADDR_INET])
5160 need_net_ioctl = 1;
5161 if (need_refresh[REFRESH_NETADDR_IPV6])
5162 need_net_ioctl = 1;
5164 if (need_refresh[CLUSTER_NET_DEV]) {
5165 if ((sts = container_nsenter(cp, LINUX_NAMESPACE_NET, &ns_fds)) < 0)
5166 goto done;
5167 refresh_proc_net_dev(netdev, cp);
5168 container_nsleave(cp, LINUX_NAMESPACE_NET);
5171 if ((sts = container_nsenter(cp, LINUX_NAMESPACE_MNT, &ns_fds)) < 0)
5172 goto done;
5173 refresh_net_addr_sysfs(netaddr, need_refresh);
5174 need_net_ioctl |= refresh_net_sysfs(netdev, need_refresh);
5175 if (need_refresh[CLUSTER_FILESYS] || need_refresh[CLUSTER_TMPFS])
5176 refresh_filesys(INDOM(FILESYS_INDOM), INDOM(TMPFS_INDOM), cp);
5177 container_nsleave(cp, LINUX_NAMESPACE_MNT);
5179 if (need_net_ioctl) {
5180 if ((sts = container_nsenter(cp, LINUX_NAMESPACE_NET, &ns_fds)) < 0)
5181 goto done;
5182 refresh_net_addr_ioctl(netaddr, cp, need_refresh);
5183 refresh_net_ioctl(netdev, cp, need_refresh);
5184 container_nsleave(cp, LINUX_NAMESPACE_NET);
5187 if (need_refresh[CLUSTER_NET_ADDR])
5188 store_net_addr_indom(netaddr, cp);
5191 if (need_refresh[CLUSTER_KERNEL_UNAME]) {
5192 if ((sts = container_nsenter(cp, LINUX_NAMESPACE_UTS, &ns_fds)) < 0)
5193 goto done;
5194 uname(&kernel_uname);
5195 container_nsleave(cp, LINUX_NAMESPACE_UTS);
5198 if (need_refresh[CLUSTER_INTERRUPTS] ||
5199 need_refresh[CLUSTER_INTERRUPT_LINES] ||
5200 need_refresh[CLUSTER_INTERRUPT_OTHER])
5201 need_refresh_mtab |= refresh_interrupt_values();
5203 if (need_refresh[CLUSTER_SOFTIRQS])
5204 need_refresh_mtab |= refresh_softirqs_values();
5206 if (need_refresh[CLUSTER_SWAPDEV])
5207 refresh_swapdev(INDOM(SWAPDEV_INDOM));
5209 if (need_refresh[CLUSTER_SCSI])
5210 refresh_proc_scsi(INDOM(SCSI_INDOM));
5212 if (need_refresh[CLUSTER_SLAB]) {
5213 if (access != NULL && (access->uid == 0 && access->uid_flag)) {
5214 proc_slabinfo.permission = 1;
5215 refresh_proc_slabinfo(&proc_slabinfo);
5216 } else
5217 proc_slabinfo.permission = 0;
5220 if (need_refresh[CLUSTER_SEM_LIMITS])
5221 refresh_sem_limits(&sem_limits);
5223 if (need_refresh[CLUSTER_MSG_LIMITS])
5224 refresh_msg_limits(&msg_limits);
5226 if (need_refresh[CLUSTER_SHM_INFO])
5227 refresh_shm_info(&_shm_info);
5229 if (need_refresh[CLUSTER_SEM_INFO])
5230 refresh_sem_info(&_sem_info);
5232 if (need_refresh[CLUSTER_MSG_INFO])
5233 refresh_msg_info(&_msg_info);
5235 if (need_refresh[CLUSTER_SHM_LIMITS])
5236 refresh_shm_limits(&shm_limits);
5238 if (need_refresh[CLUSTER_UPTIME])
5239 refresh_proc_uptime(&proc_uptime);
5241 if (need_refresh[CLUSTER_VFS])
5242 refresh_proc_sys_fs(&proc_sys_fs);
5244 if (need_refresh[CLUSTER_VMSTAT])
5245 refresh_proc_vmstat(&_pm_proc_vmstat);
5247 if (need_refresh[CLUSTER_SYSFS_KERNEL])
5248 refresh_sysfs_kernel(&sysfs_kernel);
5250 if (need_refresh[CLUSTER_NET_SOFTNET])
5251 refresh_proc_net_softnet(&proc_net_softnet);
5253 if (need_refresh[CLUSTER_SHM_STAT])
5254 refresh_shm_stat(INDOM(IPC_STAT_INDOM));
5256 if (need_refresh[CLUSTER_MSG_STAT])
5257 refresh_msg_que(INDOM(IPC_MSG_INDOM));
5259 if (need_refresh[CLUSTER_SEM_STAT])
5260 refresh_sem_array(INDOM(IPC_SEM_INDOM));
5262 if (need_refresh[CLUSTER_BUDDYINFO])
5263 refresh_proc_buddyinfo(&proc_buddyinfo);
5265 if (need_refresh[CLUSTER_ZONEINFO] ||
5266 need_refresh[CLUSTER_ZONEINFO_PROTECTION])
5267 refresh_proc_zoneinfo(INDOM(ZONEINFO_INDOM),
5268 INDOM(ZONEINFO_PROTECTION_INDOM));
5270 if (need_refresh[CLUSTER_KSM_INFO])
5271 refresh_ksm_info(&ksm_info);
5273 if (need_refresh[CLUSTER_TAPEDEV])
5274 refresh_sysfs_tapestats(INDOM(TAPEDEV_INDOM));
5276 done:
5277 if (need_refresh_mtab)
5278 pmdaDynamicMetricTable(pmda);
5279 container_close(cp, ns_fds);
5280 return sts;
5283 static int
5284 linux_instance(pmInDom indom, int inst, char *name, __pmInResult **result, pmdaExt *pmda)
5286 __pmInDom_int *indomp = (__pmInDom_int *)&indom;
5287 int need_refresh[NUM_REFRESHES] = {0};
5288 int sts;
5290 switch (indomp->serial) {
5291 case DISK_INDOM:
5292 case PARTITIONS_INDOM:
5293 case DM_INDOM:
5294 case MD_INDOM:
5295 need_refresh[CLUSTER_PARTITIONS]++;
5296 break;
5297 case CPU_INDOM:
5298 need_refresh[CLUSTER_STAT]++;
5299 break;
5300 case NODE_INDOM:
5301 need_refresh[CLUSTER_NUMA_MEMINFO]++;
5302 break;
5303 case LOADAVG_INDOM:
5304 need_refresh[CLUSTER_LOADAVG]++;
5305 break;
5306 case NET_DEV_INDOM:
5307 need_refresh[CLUSTER_NET_DEV]++;
5308 break;
5309 case NET_ADDR_INDOM:
5310 need_refresh[CLUSTER_NET_ADDR]++;
5311 need_refresh[REFRESH_NETADDR_INET]++;
5312 need_refresh[REFRESH_NETADDR_IPV6]++;
5313 need_refresh[REFRESH_NETADDR_HW]++;
5314 break;
5315 case FILESYS_INDOM:
5316 need_refresh[CLUSTER_FILESYS]++;
5317 break;
5318 case TMPFS_INDOM:
5319 need_refresh[CLUSTER_TMPFS]++;
5320 break;
5321 case SWAPDEV_INDOM:
5322 need_refresh[CLUSTER_SWAPDEV]++;
5323 break;
5324 case NFS_INDOM:
5325 case NFS3_INDOM:
5326 case NFS4_CLI_INDOM:
5327 case NFS4_SVR_INDOM:
5328 need_refresh[CLUSTER_NET_NFS]++;
5329 break;
5330 case SCSI_INDOM:
5331 need_refresh[CLUSTER_SCSI]++;
5332 break;
5333 case SLAB_INDOM:
5334 need_refresh[CLUSTER_SLAB]++;
5335 break;
5336 case ICMPMSG_INDOM:
5337 need_refresh[CLUSTER_NET_SNMP]++;
5338 break;
5339 case IPC_STAT_INDOM:
5340 need_refresh[CLUSTER_SHM_STAT]++;
5341 break;
5342 case IPC_MSG_INDOM:
5343 need_refresh[CLUSTER_MSG_STAT]++;
5344 break;
5345 case IPC_SEM_INDOM:
5346 need_refresh[CLUSTER_SEM_STAT]++;
5347 break;
5348 case BUDDYINFO_INDOM:
5349 need_refresh[CLUSTER_BUDDYINFO]++;
5350 break;
5351 case ZONEINFO_INDOM:
5352 need_refresh[CLUSTER_ZONEINFO]++;
5353 break;
5354 case ZONEINFO_PROTECTION_INDOM:
5355 need_refresh[CLUSTER_ZONEINFO_PROTECTION]++;
5356 break;
5357 case TAPEDEV_INDOM:
5358 need_refresh[CLUSTER_TAPEDEV]++;
5359 break;
5360 /* no default label : pmdaInstance will pick up errors */
5363 if ((sts = linux_refresh(pmda, need_refresh, pmda->e_context)) < 0)
5364 return sts;
5365 return pmdaInstance(indom, inst, name, result, pmda);
5369 * callback provided to pmdaFetch
5372 static int
5373 linux_fetchCallBack(pmdaMetric *mdesc, unsigned int inst, pmAtomValue *atom)
5375 __pmID_int *idp = (__pmID_int *)&(mdesc->m_desc.pmid);
5376 int i;
5377 int sts;
5378 long sl;
5379 percpu_t *cp;
5380 pernode_t *np;
5381 struct filesys *fs;
5382 net_addr_t *addrp;
5383 net_interface_t *netip;
5384 scsi_entry_t *scsi_entry;
5386 if (mdesc->m_user != NULL) {
5388 * The metric value is extracted directly via the address specified
5389 * in metrictab. Note: not all metrics support this - those that
5390 * don't have NULL for the m_user field in their respective
5391 * metrictab slot.
5393 if (idp->cluster == CLUSTER_VMSTAT) {
5394 if (!(_pm_have_proc_vmstat) ||
5395 *(__uint64_t *)mdesc->m_user == (__uint64_t)-1)
5396 return 0; /* no value available on this kernel */
5398 else
5399 if (idp->cluster == CLUSTER_NET_SNMP) {
5400 __uint64_t value;
5402 /* network.icmpmsg has an indom - deal with it now */
5403 if (idp->item == 88 || idp->item == 89) {
5404 if (inst > NR_ICMPMSG_COUNTERS)
5405 return PM_ERR_INST;
5406 value = *((__uint64_t *)mdesc->m_user + inst);
5407 if (value == (__uint64_t)-1)
5408 return 0; /* no value for this instance */
5409 atom->ull = value;
5410 return 1;
5412 if (*(__uint64_t *)mdesc->m_user == (__uint64_t)-1)
5413 if (idp->item != 53) /* tcp.maxconn is special */
5414 return 0; /* no value available on this kernel */
5416 else
5417 if (idp->cluster == CLUSTER_NET_NETSTAT) {
5418 if (*(__uint64_t *)mdesc->m_user == (__uint64_t)-1)
5419 return 0; /* no value available on this kernel */
5421 else
5422 if (idp->cluster == CLUSTER_NET_NFS) {
5424 * check if rpc stats are available
5426 if (idp->item >= 20 && idp->item <= 27 && proc_net_rpc.client.errcode != 0)
5427 /* no values available for client rpc/nfs - this is expected <= 2.0.36 */
5428 return 0;
5429 else
5430 if (idp->item >= 30 && idp->item <= 47 && proc_net_rpc.server.errcode != 0)
5431 /* no values available - expected without /proc/net/rpc/nfsd */
5432 return 0; /* no values available */
5433 if (idp->item >= 51 && idp->item <= 57 && proc_net_rpc.server.errcode != 0)
5434 /* no values available - expected without /proc/net/rpc/nfsd */
5435 return 0; /* no values available */
5437 if (idp->cluster == CLUSTER_SYSFS_KERNEL) {
5438 /* no values available for udev metrics */
5439 if (idp->item == 0 && !sysfs_kernel.valid_uevent_seqnum) {
5440 return 0;
5444 switch (mdesc->m_desc.type) {
5445 case PM_TYPE_32:
5446 atom->l = *(__int32_t *)mdesc->m_user;
5447 break;
5448 case PM_TYPE_U32:
5449 atom->ul = *(__uint32_t *)mdesc->m_user;
5450 break;
5451 case PM_TYPE_64:
5452 atom->ll = *(__int64_t *)mdesc->m_user;
5453 break;
5454 case PM_TYPE_U64:
5455 atom->ull = *(__uint64_t *)mdesc->m_user;
5456 break;
5457 case PM_TYPE_FLOAT:
5458 atom->f = *(float *)mdesc->m_user;
5459 break;
5460 case PM_TYPE_DOUBLE:
5461 atom->d = *(double *)mdesc->m_user;
5462 break;
5463 case PM_TYPE_STRING:
5464 atom->cp = (char *)mdesc->m_user;
5465 break;
5466 default:
5467 return 0;
5470 else
5471 switch (idp->cluster) {
5472 case CLUSTER_STAT:
5474 * All metrics from /proc/stat
5476 switch (idp->item) {
5477 case 0: /* kernel.percpu.cpu.user */
5478 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
5479 return PM_ERR_INST;
5480 _pm_assign_utype(_pm_cputime_size, atom, 1000 * (double)cp->stat.user / hz);
5481 break;
5482 case 1: /* kernel.percpu.cpu.nice */
5483 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
5484 return PM_ERR_INST;
5485 _pm_assign_utype(_pm_cputime_size, atom, 1000 * (double)cp->stat.nice / hz);
5486 break;
5487 case 2: /* kernel.percpu.cpu.sys */
5488 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
5489 return PM_ERR_INST;
5490 _pm_assign_utype(_pm_cputime_size, atom, 1000 * (double)cp->stat.sys / hz);
5491 break;
5492 case 3: /* kernel.percpu.cpu.idle */
5493 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
5494 return PM_ERR_INST;
5495 _pm_assign_utype(_pm_idletime_size, atom, 1000 * (double)cp->stat.idle / hz);
5496 break;
5497 case 30: /* kernel.percpu.cpu.wait.total */
5498 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
5499 return PM_ERR_INST;
5500 _pm_assign_utype(_pm_cputime_size, atom, 1000 * (double)cp->stat.wait / hz);
5501 break;
5502 case 31: /* kernel.percpu.cpu.intr */
5503 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
5504 return PM_ERR_INST;
5505 _pm_assign_utype(_pm_cputime_size, atom,
5506 1000 * ((double)cp->stat.irq + (double)cp->stat.sirq) / hz);
5507 break;
5508 case 56: /* kernel.percpu.cpu.irq.soft */
5509 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
5510 return PM_ERR_INST;
5511 _pm_assign_utype(_pm_cputime_size, atom, 1000 * (double)cp->stat.sirq / hz);
5512 break;
5513 case 57: /* kernel.percpu.cpu.irq.hard */
5514 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
5515 return PM_ERR_INST;
5516 _pm_assign_utype(_pm_cputime_size, atom, 1000 * (double)cp->stat.irq / hz);
5517 break;
5518 case 58: /* kernel.percpu.cpu.steal */
5519 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
5520 return PM_ERR_INST;
5521 _pm_assign_utype(_pm_cputime_size, atom, 1000 * (double)cp->stat.steal / hz);
5522 break;
5523 case 61: /* kernel.percpu.cpu.guest */
5524 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
5525 return PM_ERR_INST;
5526 _pm_assign_utype(_pm_cputime_size, atom, 1000 * (double)cp->stat.guest / hz);
5527 break;
5528 case 76: /* kernel.percpu.cpu.vuser */
5529 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
5530 return PM_ERR_INST;
5531 _pm_assign_utype(_pm_cputime_size, atom,
5532 1000 * ((double)cp->stat.user - (double)cp->stat.guest) / hz);
5533 break;
5534 case 83: /* kernel.percpu.cpu.guest_nice */
5535 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
5536 return PM_ERR_INST;
5537 _pm_assign_utype(_pm_cputime_size, atom,
5538 1000 * (double)cp->stat.guest_nice / hz);
5539 break;
5540 case 84: /* kernel.percpu.cpu.vnice */
5541 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
5542 return PM_ERR_INST;
5543 _pm_assign_utype(_pm_cputime_size, atom,
5544 1000 * ((double)cp->stat.nice - (double)cp->stat.guest_nice) / hz);
5545 break;
5546 case 62: /* kernel.pernode.cpu.user */
5547 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&np) < 0)
5548 return PM_ERR_INST;
5549 _pm_assign_utype(_pm_cputime_size, atom, 1000 * (double)np->stat.user / hz);
5550 break;
5551 case 63: /* kernel.pernode.cpu.nice */
5552 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&np) < 0)
5553 return PM_ERR_INST;
5554 _pm_assign_utype(_pm_cputime_size, atom, 1000 * (double)np->stat.nice / hz);
5555 break;
5556 case 64: /* kernel.pernode.cpu.sys */
5557 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&np) < 0)
5558 return PM_ERR_INST;
5559 _pm_assign_utype(_pm_cputime_size, atom, 1000 * (double)np->stat.sys / hz);
5560 break;
5561 case 65: /* kernel.pernode.cpu.idle */
5562 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&np) < 0)
5563 return PM_ERR_INST;
5564 _pm_assign_utype(_pm_idletime_size, atom, 1000 * (double)np->stat.idle / hz);
5565 break;
5566 case 69: /* kernel.pernode.cpu.wait.total */
5567 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&np) < 0)
5568 return PM_ERR_INST;
5569 _pm_assign_utype(_pm_cputime_size, atom, 1000 * (double)np->stat.wait / hz);
5570 break;
5571 case 66: /* kernel.pernode.cpu.intr */
5572 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&np) < 0)
5573 return PM_ERR_INST;
5574 _pm_assign_utype(_pm_cputime_size, atom,
5575 1000 * ((double)np->stat.irq + (double)np->stat.sirq) / hz);
5576 break;
5577 case 70: /* kernel.pernode.cpu.irq.soft */
5578 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&np) < 0)
5579 return PM_ERR_INST;
5580 _pm_assign_utype(_pm_cputime_size, atom, 1000 * (double)np->stat.sirq / hz);
5581 break;
5582 case 71: /* kernel.pernode.cpu.irq.hard */
5583 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&np) < 0)
5584 return PM_ERR_INST;
5585 _pm_assign_utype(_pm_cputime_size, atom, 1000 * (double)np->stat.irq / hz);
5586 break;
5587 case 67: /* kernel.pernode.cpu.steal */
5588 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&np) < 0)
5589 return PM_ERR_INST;
5590 _pm_assign_utype(_pm_cputime_size, atom, 1000 * (double)np->stat.steal / hz);
5591 break;
5592 case 68: /* kernel.pernode.cpu.guest */
5593 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&np) < 0)
5594 return PM_ERR_INST;
5595 _pm_assign_utype(_pm_cputime_size, atom, 1000 * (double)np->stat.guest / hz);
5596 break;
5597 case 77: /* kernel.pernode.cpu.vuser */
5598 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&np) < 0)
5599 return PM_ERR_INST;
5600 _pm_assign_utype(_pm_cputime_size, atom,
5601 1000 * ((double)np->stat.user - (double)np->stat.guest) / hz);
5602 break;
5603 case 85: /* kernel.pernode.cpu.guest_nice */
5604 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&np) < 0)
5605 return PM_ERR_INST;
5606 _pm_assign_utype(_pm_cputime_size, atom,
5607 1000 * (double)np->stat.guest_nice / hz);
5608 break;
5609 case 86: /* kernel.pernode.cpu.vnice */
5610 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&np) < 0)
5611 return PM_ERR_INST;
5612 _pm_assign_utype(_pm_cputime_size, atom,
5613 1000 * ((double)np->stat.nice - (double)np->stat.guest_nice) / hz);
5614 break;
5616 case 8: /* swap.pagesin */
5617 if (_pm_have_proc_vmstat)
5618 atom->ul = _pm_proc_vmstat.pswpin;
5619 else
5620 atom->ul = proc_stat.swap[0];
5621 break;
5622 case 9: /* swap.pagesout */
5623 if (_pm_have_proc_vmstat)
5624 atom->ul = _pm_proc_vmstat.pswpout;
5625 else
5626 atom->ul = proc_stat.swap[1];
5627 break;
5628 case 10: /* swap.in */
5629 if (_pm_have_proc_vmstat)
5630 return PM_ERR_APPVERSION; /* no swap operation counts in 2.6 */
5631 else
5632 atom->ul = proc_stat.page[0];
5633 break;
5634 case 11: /* swap.out */
5635 if (_pm_have_proc_vmstat)
5636 return PM_ERR_APPVERSION; /* no swap operation counts in 2.6 */
5637 else
5638 atom->ul = proc_stat.page[1];
5639 break;
5640 case 12: /* kernel.all.intr */
5641 _pm_assign_utype(_pm_intr_size, atom, proc_stat.intr);
5642 break;
5643 case 13: /* kernel.all.pswitch */
5644 _pm_assign_utype(_pm_ctxt_size, atom, proc_stat.ctxt);
5645 break;
5646 case 14: /* kernel.all.sysfork */
5647 _pm_assign_ulong(atom, proc_stat.processes);
5648 break;
5649 case 15: /* kernel.all.running */
5650 _pm_assign_ulong(atom, proc_stat.procs_running);
5651 break;
5652 case 16: /* kernel.all.blocked */
5653 _pm_assign_ulong(atom, proc_stat.procs_blocked);
5654 break;
5656 case 20: /* kernel.all.cpu.user */
5657 _pm_assign_utype(_pm_cputime_size, atom,
5658 1000 * (double)proc_stat.all.user / hz);
5659 break;
5660 case 21: /* kernel.all.cpu.nice */
5661 _pm_assign_utype(_pm_cputime_size, atom,
5662 1000 * (double)proc_stat.all.nice / hz);
5663 break;
5664 case 22: /* kernel.all.cpu.sys */
5665 _pm_assign_utype(_pm_cputime_size, atom,
5666 1000 * (double)proc_stat.all.sys / hz);
5667 break;
5668 case 23: /* kernel.all.cpu.idle */
5669 _pm_assign_utype(_pm_idletime_size, atom,
5670 1000 * (double)proc_stat.all.idle / hz);
5671 break;
5672 case 34: /* kernel.all.cpu.intr */
5673 _pm_assign_utype(_pm_cputime_size, atom,
5674 1000 * ((double)proc_stat.all.irq +
5675 (double)proc_stat.all.sirq) / hz);
5676 break;
5677 case 35: /* kernel.all.cpu.wait.total */
5678 _pm_assign_utype(_pm_cputime_size, atom,
5679 1000 * (double)proc_stat.all.wait / hz);
5680 break;
5681 case 53: /* kernel.all.cpu.irq.soft */
5682 _pm_assign_utype(_pm_cputime_size, atom,
5683 1000 * (double)proc_stat.all.sirq / hz);
5684 break;
5685 case 54: /* kernel.all.cpu.irq.hard */
5686 _pm_assign_utype(_pm_cputime_size, atom,
5687 1000 * (double)proc_stat.all.irq / hz);
5688 break;
5689 case 55: /* kernel.all.cpu.steal */
5690 _pm_assign_utype(_pm_cputime_size, atom,
5691 1000 * (double)proc_stat.all.steal / hz);
5692 break;
5693 case 60: /* kernel.all.cpu.guest */
5694 _pm_assign_utype(_pm_cputime_size, atom,
5695 1000 * (double)proc_stat.all.guest / hz);
5696 break;
5697 case 78: /* kernel.all.cpu.vuser */
5698 _pm_assign_utype(_pm_cputime_size, atom,
5699 1000 * ((double)proc_stat.all.user - (double)proc_stat.all.guest)
5700 / hz);
5701 break;
5702 case 81: /* kernel.all.cpu.guest_nice */
5703 _pm_assign_utype(_pm_cputime_size, atom,
5704 1000 * (double)proc_stat.all.guest_nice / hz);
5705 break;
5706 case 82: /* kernel.all.cpu.vnice */
5707 _pm_assign_utype(_pm_cputime_size, atom,
5708 1000 * ((double)proc_stat.all.nice - (double)proc_stat.all.guest_nice)
5709 / hz);
5710 break;
5711 case 19: /* hinv.nnode */
5712 atom->ul = pmdaCacheOp(INDOM(NODE_INDOM), PMDA_CACHE_SIZE_ACTIVE);
5713 break;
5714 case 32: /* hinv.ncpu */
5715 atom->ul = pmdaCacheOp(INDOM(CPU_INDOM), PMDA_CACHE_SIZE_ACTIVE);
5716 break;
5717 case 33: /* hinv.ndisk */
5718 atom->ul = pmdaCacheOp(INDOM(DISK_INDOM), PMDA_CACHE_SIZE_ACTIVE);
5719 break;
5721 case 48: /* kernel.all.hz */
5722 atom->ul = hz;
5723 break;
5725 default:
5727 * Disk metrics used to be fetched from /proc/stat (2.2 kernels)
5728 * but have since moved to /proc/partitions (2.4 kernels) and
5729 * /proc/diskstats (2.6 kernels). We preserve the cluster number
5730 * (middle bits of a PMID) for backward compatibility.
5732 * Note that proc_partitions_fetch() will return PM_ERR_PMID
5733 * if we have tried to fetch an unknown metric.
5735 return proc_partitions_fetch(mdesc, inst, atom);
5737 break;
5739 case CLUSTER_UPTIME: /* uptime */
5740 switch (idp->item) {
5741 case 0:
5743 * kernel.all.uptime (in seconds)
5744 * contributed by "gilly" <gilly@exanet.com>
5745 * modified by Mike Mason" <mmlnx@us.ibm.com>
5747 atom->ul = proc_uptime.uptime;
5748 break;
5749 case 1:
5751 * kernel.all.idletime (in seconds)
5752 * contributed by "Mike Mason" <mmlnx@us.ibm.com>
5754 atom->ul = proc_uptime.idletime;
5755 break;
5756 default:
5757 return PM_ERR_PMID;
5759 break;
5761 case CLUSTER_MEMINFO: /* mem */
5762 switch (idp->item) {
5763 case 0: /* mem.physmem (in kbytes) */
5764 if (!MEMINFO_VALID_VALUE(proc_meminfo.MemTotal))
5765 return 0; /* no values available */
5766 atom->ull = proc_meminfo.MemTotal >> 10;
5767 break;
5768 case 1: /* mem.util.used (in kbytes) */
5769 if (!MEMINFO_VALID_VALUE(proc_meminfo.MemTotal) ||
5770 !MEMINFO_VALID_VALUE(proc_meminfo.MemFree))
5771 return 0; /* no values available */
5772 atom->ull = (proc_meminfo.MemTotal - proc_meminfo.MemFree) >> 10;
5773 break;
5774 case 2: /* mem.util.free (in kbytes) */
5775 if (!MEMINFO_VALID_VALUE(proc_meminfo.MemFree))
5776 return 0; /* no values available */
5777 atom->ull = proc_meminfo.MemFree >> 10;
5778 break;
5779 case 3: /* mem.util.shared (in kbytes) */
5781 * If this metric is exported by the running kernel, it is always
5782 * zero (deprecated). PCP exports it for compatibility with older
5783 * PCP monitoring tools, e.g. pmgsys running on IRIX(TM).
5785 if (!MEMINFO_VALID_VALUE(proc_meminfo.MemShared))
5786 return 0; /* no values available */
5787 atom->ull = proc_meminfo.MemShared >> 10;
5788 break;
5789 case 4: /* mem.util.bufmem (in kbytes) */
5790 if (!MEMINFO_VALID_VALUE(proc_meminfo.Buffers))
5791 return 0; /* no values available */
5792 atom->ull = proc_meminfo.Buffers >> 10;
5793 break;
5794 case 5: /* mem.util.cached (in kbytes) */
5795 if (!MEMINFO_VALID_VALUE(proc_meminfo.Cached))
5796 return 0; /* no values available */
5797 atom->ull = proc_meminfo.Cached >> 10;
5798 break;
5799 case 6: /* swap.length (in bytes) */
5800 if (!MEMINFO_VALID_VALUE(proc_meminfo.SwapTotal))
5801 return 0; /* no values available */
5802 atom->ull = proc_meminfo.SwapTotal;
5803 break;
5804 case 7: /* swap.used (in bytes) */
5805 if (!MEMINFO_VALID_VALUE(proc_meminfo.SwapTotal) ||
5806 !MEMINFO_VALID_VALUE(proc_meminfo.SwapFree))
5807 return 0; /* no values available */
5808 atom->ull = proc_meminfo.SwapTotal - proc_meminfo.SwapFree;
5809 break;
5810 case 8: /* swap.free (in bytes) */
5811 if (!MEMINFO_VALID_VALUE(proc_meminfo.SwapFree))
5812 return 0; /* no values available */
5813 atom->ull = proc_meminfo.SwapFree;
5814 break;
5815 case 9: /* hinv.physmem (in mbytes) */
5816 if (!MEMINFO_VALID_VALUE(proc_meminfo.MemTotal))
5817 return 0; /* no values available */
5818 atom->ul = proc_meminfo.MemTotal >> 20;
5819 break;
5820 case 10: /* mem.freemem (in kbytes) */
5821 if (!MEMINFO_VALID_VALUE(proc_meminfo.MemFree))
5822 return 0; /* no values available */
5823 atom->ull = proc_meminfo.MemFree >> 10;
5824 break;
5825 case 11: /* hinv.pagesize (in bytes) */
5826 atom->ul = 1 << _pm_pageshift;
5827 break;
5828 case 12: /* mem.util.other (in kbytes) */
5829 /* other = used - (cached+buffers) */
5830 if (!MEMINFO_VALID_VALUE(proc_meminfo.MemTotal) ||
5831 !MEMINFO_VALID_VALUE(proc_meminfo.MemFree) ||
5832 !MEMINFO_VALID_VALUE(proc_meminfo.Cached) ||
5833 !MEMINFO_VALID_VALUE(proc_meminfo.Buffers))
5834 return 0; /* no values available */
5835 sl = (proc_meminfo.MemTotal -
5836 proc_meminfo.MemFree -
5837 proc_meminfo.Cached -
5838 proc_meminfo.Buffers) >> 10;
5839 atom->ull = sl >= 0 ? sl : 0;
5840 break;
5841 case 13: /* mem.util.swapCached (in kbytes) */
5842 if (!MEMINFO_VALID_VALUE(proc_meminfo.SwapCached))
5843 return 0; /* no values available */
5844 atom->ull = proc_meminfo.SwapCached >> 10;
5845 break;
5846 case 14: /* mem.util.active (in kbytes) */
5847 if (!MEMINFO_VALID_VALUE(proc_meminfo.Active))
5848 return 0; /* no values available */
5849 atom->ull = proc_meminfo.Active >> 10;
5850 break;
5851 case 15: /* mem.util.inactive (in kbytes) */
5852 if (!MEMINFO_VALID_VALUE(proc_meminfo.Inactive))
5853 return 0; /* no values available */
5854 atom->ull = proc_meminfo.Inactive >> 10;
5855 break;
5856 case 16: /* mem.util.highTotal (in kbytes) */
5857 if (!MEMINFO_VALID_VALUE(proc_meminfo.HighTotal))
5858 return 0; /* no values available */
5859 atom->ull = proc_meminfo.HighTotal >> 10;
5860 break;
5861 case 17: /* mem.util.highFree (in kbytes) */
5862 if (!MEMINFO_VALID_VALUE(proc_meminfo.HighFree))
5863 return 0; /* no values available */
5864 atom->ull = proc_meminfo.HighFree >> 10;
5865 break;
5866 case 18: /* mem.util.lowTotal (in kbytes) */
5867 if (!MEMINFO_VALID_VALUE(proc_meminfo.LowTotal))
5868 return 0; /* no values available */
5869 atom->ull = proc_meminfo.LowTotal >> 10;
5870 break;
5871 case 19: /* mem.util.lowFree (in kbytes) */
5872 if (!MEMINFO_VALID_VALUE(proc_meminfo.LowFree))
5873 return 0; /* no values available */
5874 atom->ull = proc_meminfo.LowFree >> 10;
5875 break;
5876 case 20: /* mem.util.swapTotal (in kbytes) */
5877 if (!MEMINFO_VALID_VALUE(proc_meminfo.SwapTotal))
5878 return 0; /* no values available */
5879 atom->ull = proc_meminfo.SwapTotal >> 10;
5880 break;
5881 case 21: /* mem.util.swapFree (in kbytes) */
5882 if (!MEMINFO_VALID_VALUE(proc_meminfo.SwapFree))
5883 return 0; /* no values available */
5884 atom->ull = proc_meminfo.SwapFree >> 10;
5885 break;
5886 case 22: /* mem.util.dirty (in kbytes) */
5887 if (!MEMINFO_VALID_VALUE(proc_meminfo.Dirty))
5888 return 0; /* no values available */
5889 atom->ull = proc_meminfo.Dirty >> 10;
5890 break;
5891 case 23: /* mem.util.writeback (in kbytes) */
5892 if (!MEMINFO_VALID_VALUE(proc_meminfo.Writeback))
5893 return 0; /* no values available */
5894 atom->ull = proc_meminfo.Writeback >> 10;
5895 break;
5896 case 24: /* mem.util.mapped (in kbytes) */
5897 if (!MEMINFO_VALID_VALUE(proc_meminfo.Mapped))
5898 return 0; /* no values available */
5899 atom->ull = proc_meminfo.Mapped >> 10;
5900 break;
5901 case 25: /* mem.util.slab (in kbytes) */
5902 if (!MEMINFO_VALID_VALUE(proc_meminfo.Slab))
5903 return 0; /* no values available */
5904 atom->ull = proc_meminfo.Slab >> 10;
5905 break;
5906 case 26: /* mem.util.committed_AS (in kbytes) */
5907 if (!MEMINFO_VALID_VALUE(proc_meminfo.Committed_AS))
5908 return 0; /* no values available */
5909 atom->ull = proc_meminfo.Committed_AS >> 10;
5910 break;
5911 case 27: /* mem.util.pageTables (in kbytes) */
5912 if (!MEMINFO_VALID_VALUE(proc_meminfo.PageTables))
5913 return 0; /* no values available */
5914 atom->ull = proc_meminfo.PageTables >> 10;
5915 break;
5916 case 28: /* mem.util.reverseMaps (in kbytes) */
5917 if (!MEMINFO_VALID_VALUE(proc_meminfo.ReverseMaps))
5918 return 0; /* no values available */
5919 atom->ull = proc_meminfo.ReverseMaps >> 10;
5920 break;
5921 case 29: /* mem.util.clean_cache (in kbytes) */
5922 /* clean=cached-(dirty+writeback) */
5923 if (!MEMINFO_VALID_VALUE(proc_meminfo.Cached) ||
5924 !MEMINFO_VALID_VALUE(proc_meminfo.Dirty) ||
5925 !MEMINFO_VALID_VALUE(proc_meminfo.Writeback))
5926 return 0; /* no values available */
5927 sl = (proc_meminfo.Cached -
5928 proc_meminfo.Dirty -
5929 proc_meminfo.Writeback) >> 10;
5930 atom->ull = sl >= 0 ? sl : 0;
5931 break;
5932 case 30: /* mem.util.anonpages */
5933 if (!MEMINFO_VALID_VALUE(proc_meminfo.AnonPages))
5934 return 0; /* no values available */
5935 atom->ull = proc_meminfo.AnonPages >> 10;
5936 break;
5937 case 31: /* mem.util.commitLimit (in kbytes) */
5938 if (!MEMINFO_VALID_VALUE(proc_meminfo.CommitLimit))
5939 return 0; /* no values available */
5940 atom->ull = proc_meminfo.CommitLimit >> 10;
5941 break;
5942 case 32: /* mem.util.bounce */
5943 if (!MEMINFO_VALID_VALUE(proc_meminfo.Bounce))
5944 return 0; /* no values available */
5945 atom->ull = proc_meminfo.Bounce >> 10;
5946 break;
5947 case 33: /* mem.util.NFS_Unstable */
5948 if (!MEMINFO_VALID_VALUE(proc_meminfo.NFS_Unstable))
5949 return 0; /* no values available */
5950 atom->ull = proc_meminfo.NFS_Unstable >> 10;
5951 break;
5952 case 34: /* mem.util.slabReclaimable */
5953 if (!MEMINFO_VALID_VALUE(proc_meminfo.SlabReclaimable))
5954 return 0; /* no values available */
5955 atom->ull = proc_meminfo.SlabReclaimable >> 10;
5956 break;
5957 case 35: /* mem.util.slabUnreclaimable */
5958 if (!MEMINFO_VALID_VALUE(proc_meminfo.SlabUnreclaimable))
5959 return 0; /* no values available */
5960 atom->ull = proc_meminfo.SlabUnreclaimable >> 10;
5961 break;
5962 case 36: /* mem.util.active_anon */
5963 if (!MEMINFO_VALID_VALUE(proc_meminfo.Active_anon))
5964 return 0; /* no values available */
5965 atom->ull = proc_meminfo.Active_anon >> 10;
5966 break;
5967 case 37: /* mem.util.inactive_anon */
5968 if (!MEMINFO_VALID_VALUE(proc_meminfo.Inactive_anon))
5969 return 0; /* no values available */
5970 atom->ull = proc_meminfo.Inactive_anon >> 10;
5971 break;
5972 case 38: /* mem.util.active_file */
5973 if (!MEMINFO_VALID_VALUE(proc_meminfo.Active_file))
5974 return 0; /* no values available */
5975 atom->ull = proc_meminfo.Active_file >> 10;
5976 break;
5977 case 39: /* mem.util.inactive_file */
5978 if (!MEMINFO_VALID_VALUE(proc_meminfo.Inactive_file))
5979 return 0; /* no values available */
5980 atom->ull = proc_meminfo.Inactive_file >> 10;
5981 break;
5982 case 40: /* mem.util.unevictable */
5983 if (!MEMINFO_VALID_VALUE(proc_meminfo.Unevictable))
5984 return 0; /* no values available */
5985 atom->ull = proc_meminfo.Unevictable >> 10;
5986 break;
5987 case 41: /* mem.util.mlocked */
5988 if (!MEMINFO_VALID_VALUE(proc_meminfo.Mlocked))
5989 return 0; /* no values available */
5990 atom->ull = proc_meminfo.Mlocked >> 10;
5991 break;
5992 case 42: /* mem.util.shmem */
5993 if (!MEMINFO_VALID_VALUE(proc_meminfo.Shmem))
5994 return 0; /* no values available */
5995 atom->ull = proc_meminfo.Shmem >> 10;
5996 break;
5997 case 43: /* mem.util.kernelStack */
5998 if (!MEMINFO_VALID_VALUE(proc_meminfo.KernelStack))
5999 return 0; /* no values available */
6000 atom->ull = proc_meminfo.KernelStack >> 10;
6001 break;
6002 case 44: /* mem.util.hugepagesTotal */
6003 if (!MEMINFO_VALID_VALUE(proc_meminfo.HugepagesTotal))
6004 return 0; /* no values available */
6005 atom->ull = proc_meminfo.HugepagesTotal;
6006 break;
6007 case 45: /* mem.util.hugepagesFree */
6008 if (!MEMINFO_VALID_VALUE(proc_meminfo.HugepagesFree))
6009 return 0; /* no values available */
6010 atom->ull = proc_meminfo.HugepagesFree;
6011 break;
6012 case 46: /* mem.util.hugepagesRsvd */
6013 if (!MEMINFO_VALID_VALUE(proc_meminfo.HugepagesRsvd))
6014 return 0; /* no values available */
6015 atom->ull = proc_meminfo.HugepagesRsvd;
6016 break;
6017 case 47: /* mem.util.hugepagesSurp */
6018 if (!MEMINFO_VALID_VALUE(proc_meminfo.HugepagesSurp))
6019 return 0; /* no values available */
6020 atom->ull = proc_meminfo.HugepagesSurp;
6021 break;
6022 case 48: /* mem.util.directMap4k */
6023 if (!MEMINFO_VALID_VALUE(proc_meminfo.directMap4k))
6024 return 0; /* no values available */
6025 atom->ull = proc_meminfo.directMap4k >> 10;
6026 break;
6027 case 49: /* mem.util.directMap2M */
6028 if (!MEMINFO_VALID_VALUE(proc_meminfo.directMap2M))
6029 return 0; /* no values available */
6030 atom->ull = proc_meminfo.directMap2M >> 10;
6031 break;
6032 case 50: /* mem.util.vmallocTotal */
6033 if (!MEMINFO_VALID_VALUE(proc_meminfo.VmallocTotal))
6034 return 0; /* no values available */
6035 atom->ull = proc_meminfo.VmallocTotal >> 10;
6036 break;
6037 case 51: /* mem.util.vmallocUsed */
6038 if (!MEMINFO_VALID_VALUE(proc_meminfo.VmallocUsed))
6039 return 0; /* no values available */
6040 atom->ull = proc_meminfo.VmallocUsed >> 10;
6041 break;
6042 case 52: /* mem.util.vmallocChunk */
6043 if (!MEMINFO_VALID_VALUE(proc_meminfo.VmallocChunk))
6044 return 0; /* no values available */
6045 atom->ull = proc_meminfo.VmallocChunk >> 10;
6046 break;
6047 case 53: /* mem.util.mmap_copy */
6048 if (!MEMINFO_VALID_VALUE(proc_meminfo.MmapCopy))
6049 return 0; /* no values available */
6050 atom->ull = proc_meminfo.MmapCopy >> 10;
6051 break;
6052 case 54: /* mem.util.quicklists */
6053 if (!MEMINFO_VALID_VALUE(proc_meminfo.Quicklists))
6054 return 0; /* no values available */
6055 atom->ull = proc_meminfo.Quicklists >> 10;
6056 break;
6057 case 55: /* mem.util.corrupthardware */
6058 if (!MEMINFO_VALID_VALUE(proc_meminfo.HardwareCorrupted))
6059 return 0; /* no values available */
6060 atom->ull = proc_meminfo.HardwareCorrupted >> 10;
6061 break;
6062 case 56: /* mem.util.anonhugepages */
6063 if (!MEMINFO_VALID_VALUE(proc_meminfo.AnonHugePages))
6064 return 0; /* no values available */
6065 atom->ull = proc_meminfo.AnonHugePages >> 10;
6066 break;
6067 case 57: /* mem.util.directMap1G */
6068 if (!MEMINFO_VALID_VALUE(proc_meminfo.directMap1G))
6069 return 0; /* no values available */
6070 atom->ull = proc_meminfo.directMap1G >> 10;
6071 break;
6072 case 58: /* mem.util.available */
6073 if (!MEMINFO_VALID_VALUE(proc_meminfo.MemAvailable))
6074 return 0; /* no values available */
6075 atom->ull = proc_meminfo.MemAvailable >> 10;
6076 break;
6077 case 59: /* hinv.hugepagesize (in bytes) */
6078 if (!MEMINFO_VALID_VALUE(proc_meminfo.Hugepagesize))
6079 return 0; /* no values available */
6080 atom->ul = proc_meminfo.Hugepagesize;
6081 break;
6082 case 60: /* mem.util.hugepagesTotalBytes */
6083 if (!MEMINFO_VALID_VALUE(proc_meminfo.HugepagesTotal))
6084 return 0; /* no values available */
6085 atom->ull = proc_meminfo.HugepagesTotal * proc_meminfo.Hugepagesize;
6086 break;
6087 case 61: /* mem.util.hugepagesFreeBytes */
6088 if (!MEMINFO_VALID_VALUE(proc_meminfo.HugepagesFree))
6089 return 0; /* no values available */
6090 atom->ull = proc_meminfo.HugepagesFree * proc_meminfo.Hugepagesize;
6091 break;
6092 case 62: /* mem.util.hugepagesRsvdBytes */
6093 if (!MEMINFO_VALID_VALUE(proc_meminfo.HugepagesRsvd))
6094 return 0; /* no values available */
6095 atom->ull = proc_meminfo.HugepagesRsvd * proc_meminfo.Hugepagesize;
6096 break;
6097 case 63: /* mem.util.hugepagesSurpBytes */
6098 if (!MEMINFO_VALID_VALUE(proc_meminfo.HugepagesSurp))
6099 return 0; /* no values available */
6100 atom->ull = proc_meminfo.HugepagesSurp * proc_meminfo.Hugepagesize;
6101 break;
6102 default:
6103 return PM_ERR_PMID;
6105 break;
6107 case CLUSTER_LOADAVG:
6108 switch(idp->item) {
6109 case 0: /* kernel.all.load */
6110 if (inst == 1)
6111 atom->f = proc_loadavg.loadavg[0];
6112 else
6113 if (inst == 5)
6114 atom->f = proc_loadavg.loadavg[1];
6115 else
6116 if (inst == 15)
6117 atom->f = proc_loadavg.loadavg[2];
6118 else
6119 return PM_ERR_INST;
6120 break;
6121 case 1: /* kernel.all.lastpid -- added by "Mike Mason" <mmlnx@us.ibm.com> */
6122 atom->ul = proc_loadavg.lastpid;
6123 break;
6124 case 2: /* kernel.all.runnable */
6125 atom->ul = proc_loadavg.runnable;
6126 break;
6127 case 3: /* kernel.all.nprocs */
6128 atom->ul = proc_loadavg.nprocs;
6129 break;
6130 default:
6131 return PM_ERR_PMID;
6133 break;
6135 case CLUSTER_NET_DEV: /* network.interface */
6136 if (idp->item == 27) { /* hinv.ninterface */
6137 atom->ul = pmdaCacheOp(INDOM(NET_DEV_INDOM), PMDA_CACHE_SIZE_ACTIVE);
6138 break;
6140 sts = pmdaCacheLookup(INDOM(NET_DEV_INDOM), inst, NULL, (void **)&netip);
6141 if (sts < 0)
6142 return sts;
6143 if (idp->item <= 15) {
6144 /* network.interface.{in,out} */
6145 atom->ull = netip->counters[idp->item];
6147 else
6148 switch (idp->item) {
6149 case 16: /* network.interface.total.bytes */
6150 atom->ull = netip->counters[0] + netip->counters[8];
6151 break;
6152 case 17: /* network.interface.total.packets */
6153 atom->ull = netip->counters[1] + netip->counters[9];
6154 break;
6155 case 18: /* network.interface.total.errors */
6156 atom->ull = netip->counters[2] + netip->counters[10];
6157 break;
6158 case 19: /* network.interface.total.drops */
6159 atom->ull = netip->counters[3] + netip->counters[11];
6160 break;
6161 case 20: /* network.interface.total.mcasts */
6163 * NOTE: there is no network.interface.out.mcasts metric
6164 * so this total only includes network.interface.in.mcasts
6166 atom->ull = netip->counters[7];
6167 break;
6168 case 21: /* network.interface.mtu */
6169 if (!netip->ioc.mtu)
6170 return 0;
6171 atom->ul = netip->ioc.mtu;
6172 break;
6173 case 22: /* network.interface.speed */
6174 if (!netip->ioc.speed)
6175 return 0;
6176 atom->f = ((float)netip->ioc.speed * 1000000) / 8 / 1024 / 1024;
6177 break;
6178 case 23: /* network.interface.baudrate */
6179 if (!netip->ioc.speed)
6180 return 0;
6181 atom->ull = ((unsigned long long)netip->ioc.speed * 1000000 / 8);
6182 break;
6183 case 24: /* network.interface.duplex */
6184 if (!netip->ioc.duplex)
6185 return 0;
6186 atom->ul = netip->ioc.duplex;
6187 break;
6188 case 25: /* network.interface.up */
6189 atom->ul = netip->ioc.linkup;
6190 break;
6191 case 26: /* network.interface.running */
6192 atom->ul = netip->ioc.running;
6193 break;
6194 default:
6195 return PM_ERR_PMID;
6197 break;
6199 case CLUSTER_NET_ADDR:
6200 sts = pmdaCacheLookup(INDOM(NET_ADDR_INDOM), inst, NULL, (void **)&addrp);
6201 if (sts < 0)
6202 return sts;
6203 if (sts != PMDA_CACHE_ACTIVE)
6204 return PM_ERR_INST;
6205 switch (idp->item) {
6206 case 0: /* network.interface.inet_addr */
6207 if (addrp->has_inet == 0)
6208 return 0;
6209 atom->cp = addrp->inet;
6210 break;
6211 case 1: /* network.interface.ipv6_addr */
6212 if (addrp->has_ipv6 == 0)
6213 return 0;
6214 atom->cp = addrp->ipv6;
6215 break;
6216 case 2: /* network.interface.ipv6_scope */
6217 if (addrp->has_ipv6 == 0)
6218 return 0;
6219 atom->cp = lookup_ipv6_scope(addrp->ipv6scope);
6220 break;
6221 case 3: /* network.interface.hw_addr */
6222 if (addrp->has_hw == 0)
6223 return 0;
6224 atom->cp = addrp->hw_addr;
6225 break;
6226 default:
6227 return PM_ERR_PMID;
6229 break;
6231 case CLUSTER_FILESYS:
6232 if (idp->item == 0)
6233 atom->ul = pmdaCacheOp(INDOM(FILESYS_INDOM), PMDA_CACHE_SIZE_ACTIVE);
6234 else {
6235 struct statfs *sbuf;
6236 __uint64_t ull, used;
6238 sts = pmdaCacheLookup(INDOM(FILESYS_INDOM), inst, NULL, (void **)&fs);
6239 if (sts < 0)
6240 return sts;
6241 if (sts != PMDA_CACHE_ACTIVE)
6242 return PM_ERR_INST;
6244 sbuf = &fs->stats;
6245 if (!(fs->flags & FSF_FETCHED)) {
6246 if (statfs(fs->path, sbuf) < 0)
6247 return PM_ERR_INST;
6248 fs->flags |= FSF_FETCHED;
6251 switch (idp->item) {
6252 case 1: /* filesys.capacity */
6253 ull = (__uint64_t)sbuf->f_blocks;
6254 atom->ull = ull * sbuf->f_bsize / 1024;
6255 break;
6256 case 2: /* filesys.used */
6257 used = (__uint64_t)(sbuf->f_blocks - sbuf->f_bfree);
6258 atom->ull = used * sbuf->f_bsize / 1024;
6259 break;
6260 case 3: /* filesys.free */
6261 ull = (__uint64_t)sbuf->f_bfree;
6262 atom->ull = ull * sbuf->f_bsize / 1024;
6263 break;
6264 case 4: /* filesys.maxfiles */
6265 atom->ul = sbuf->f_files;
6266 break;
6267 case 5: /* filesys.usedfiles */
6268 atom->ul = sbuf->f_files - sbuf->f_ffree;
6269 break;
6270 case 6: /* filesys.freefiles */
6271 atom->ul = sbuf->f_ffree;
6272 break;
6273 case 7: /* filesys.mountdir */
6274 atom->cp = fs->path;
6275 break;
6276 case 8: /* filesys.full */
6277 used = (__uint64_t)(sbuf->f_blocks - sbuf->f_bfree);
6278 ull = used + (__uint64_t)sbuf->f_bavail;
6279 atom->d = (100.0 * (double)used) / (double)ull;
6280 break;
6281 case 9: /* filesys.blocksize -- added by Mike Mason <mmlnx@us.ibm.com> */
6282 atom->ul = sbuf->f_bsize;
6283 break;
6284 case 10: /* filesys.avail -- added by Mike Mason <mmlnx@us.ibm.com> */
6285 ull = (__uint64_t)sbuf->f_bavail;
6286 atom->ull = ull * sbuf->f_bsize / 1024;
6287 break;
6288 case 11: /* filesys.readonly */
6289 atom->ul = (scan_filesys_options(fs->options, "ro") != NULL);
6290 break;
6291 default:
6292 return PM_ERR_PMID;
6295 break;
6297 case CLUSTER_TMPFS: {
6298 struct statfs *sbuf;
6299 __uint64_t ull, used;
6301 sts = pmdaCacheLookup(INDOM(TMPFS_INDOM), inst, NULL, (void **)&fs);
6302 if (sts < 0)
6303 return sts;
6304 if (sts != PMDA_CACHE_ACTIVE)
6305 return PM_ERR_INST;
6307 sbuf = &fs->stats;
6308 if (!(fs->flags & FSF_FETCHED)) {
6309 if (statfs(fs->path, sbuf) < 0)
6310 return PM_ERR_INST;
6311 fs->flags |= FSF_FETCHED;
6314 switch (idp->item) {
6315 case 1: /* tmpfs.capacity */
6316 ull = (__uint64_t)sbuf->f_blocks;
6317 atom->ull = ull * sbuf->f_bsize / 1024;
6318 break;
6319 case 2: /* tmpfs.used */
6320 used = (__uint64_t)(sbuf->f_blocks - sbuf->f_bfree);
6321 atom->ull = used * sbuf->f_bsize / 1024;
6322 break;
6323 case 3: /* tmpfs.free */
6324 ull = (__uint64_t)sbuf->f_bfree;
6325 atom->ull = ull * sbuf->f_bsize / 1024;
6326 break;
6327 case 4: /* tmpfs.maxfiles */
6328 atom->ul = sbuf->f_files;
6329 break;
6330 case 5: /* tmpfs.usedfiles */
6331 atom->ul = sbuf->f_files - sbuf->f_ffree;
6332 break;
6333 case 6: /* tmpfs.freefiles */
6334 atom->ul = sbuf->f_ffree;
6335 break;
6336 case 7: /* tmpfs.full */
6337 used = (__uint64_t)(sbuf->f_blocks - sbuf->f_bfree);
6338 ull = used + (__uint64_t)sbuf->f_bavail;
6339 atom->d = (100.0 * (double)used) / (double)ull;
6340 break;
6341 default:
6342 return PM_ERR_PMID;
6345 break;
6347 case CLUSTER_SWAPDEV: {
6348 struct swapdev *swap;
6350 sts = pmdaCacheLookup(INDOM(SWAPDEV_INDOM), inst, NULL, (void **)&swap);
6351 if (sts < 0)
6352 return sts;
6353 if (sts != PMDA_CACHE_ACTIVE)
6354 return PM_ERR_INST;
6356 switch (idp->item) {
6357 case 0: /* swapdev.free (kbytes) */
6358 atom->ul = swap->size - swap->used;
6359 break;
6360 case 1: /* swapdev.length (kbytes) */
6361 case 2: /* swapdev.maxswap (kbytes) */
6362 atom->ul = swap->size;
6363 break;
6364 case 3: /* swapdev.vlength (kbytes) */
6365 atom->ul = 0;
6366 break;
6367 case 4: /* swapdev.priority */
6368 atom->l = swap->priority;
6369 break;
6370 default:
6371 return PM_ERR_PMID;
6373 break;
6376 case CLUSTER_NET_NFS:
6377 switch (idp->item) {
6378 case 1: /* nfs.client.calls */
6379 if (proc_net_rpc.client.errcode != 0)
6380 return 0; /* no values available */
6381 for (atom->ul=0, i=0; i < NR_RPC_COUNTERS; i++) {
6382 atom->ul += proc_net_rpc.client.reqcounts[i];
6384 break;
6385 case 50: /* nfs.server.calls */
6386 if (proc_net_rpc.server.errcode != 0)
6387 return 0; /* no values available */
6388 for (atom->ul=0, i=0; i < NR_RPC_COUNTERS; i++) {
6389 atom->ul += proc_net_rpc.server.reqcounts[i];
6391 break;
6392 case 4: /* nfs.client.reqs */
6393 if (proc_net_rpc.client.errcode != 0)
6394 return 0; /* no values available */
6395 if (inst < NR_RPC_COUNTERS)
6396 atom->ul = proc_net_rpc.client.reqcounts[inst];
6397 else
6398 return PM_ERR_INST;
6399 break;
6401 case 12: /* nfs.server.reqs */
6402 if (proc_net_rpc.server.errcode != 0)
6403 return 0; /* no values available */
6404 if (inst < NR_RPC_COUNTERS)
6405 atom->ul = proc_net_rpc.server.reqcounts[inst];
6406 else
6407 return PM_ERR_INST;
6408 break;
6410 case 60: /* nfs3.client.calls */
6411 if (proc_net_rpc.client.errcode != 0)
6412 return 0; /* no values available */
6413 for (atom->ul=0, i=0; i < NR_RPC3_COUNTERS; i++) {
6414 atom->ul += proc_net_rpc.client.reqcounts3[i];
6416 break;
6418 case 62: /* nfs3.server.calls */
6419 if (proc_net_rpc.server.errcode != 0)
6420 return 0; /* no values available */
6421 for (atom->ul=0, i=0; i < NR_RPC3_COUNTERS; i++) {
6422 atom->ul += proc_net_rpc.server.reqcounts3[i];
6424 break;
6426 case 61: /* nfs3.client.reqs */
6427 if (proc_net_rpc.client.errcode != 0)
6428 return 0; /* no values available */
6429 if (inst < NR_RPC3_COUNTERS)
6430 atom->ul = proc_net_rpc.client.reqcounts3[inst];
6431 else
6432 return PM_ERR_INST;
6433 break;
6435 case 63: /* nfs3.server.reqs */
6436 if (proc_net_rpc.server.errcode != 0)
6437 return 0; /* no values available */
6438 if (inst < NR_RPC3_COUNTERS)
6439 atom->ul = proc_net_rpc.server.reqcounts3[inst];
6440 else
6441 return PM_ERR_INST;
6442 break;
6444 case 64: /* nfs4.client.calls */
6445 if (proc_net_rpc.client.errcode != 0)
6446 return 0; /* no values available */
6447 for (atom->ul=0, i=0; i < NR_RPC4_CLI_COUNTERS; i++) {
6448 atom->ul += proc_net_rpc.client.reqcounts4[i];
6450 break;
6452 case 66: /* nfs4.server.calls */
6453 if (proc_net_rpc.server.errcode != 0)
6454 return 0; /* no values available */
6455 for (atom->ul=0, i=0; i < NR_RPC4_SVR_COUNTERS; i++) {
6456 atom->ul += proc_net_rpc.server.reqcounts4[i+1];
6458 break;
6460 case 65: /* nfs4.client.reqs */
6461 if (proc_net_rpc.client.errcode != 0)
6462 return 0; /* no values available */
6463 if (inst < NR_RPC4_CLI_COUNTERS)
6464 atom->ul = proc_net_rpc.client.reqcounts4[inst];
6465 else
6466 return PM_ERR_INST;
6467 break;
6469 case 67: /* nfs4.server.reqs */
6470 if (proc_net_rpc.server.errcode != 0)
6471 return 0; /* no values available */
6472 if (inst && inst <= NR_RPC4_SVR_COUNTERS)
6473 atom->ul = proc_net_rpc.server.reqcounts4[inst];
6474 else
6475 return PM_ERR_INST;
6476 break;
6479 * Note: all other rpc metric values are extracted directly via the
6480 * address specified in the metrictab (see above)
6482 default:
6483 return PM_ERR_PMID;
6485 break;
6487 case CLUSTER_SLAB:
6488 if (proc_slabinfo.permission != 1)
6489 return 0;
6491 if (proc_slabinfo.ncaches == 0)
6492 return 0; /* no values available */
6494 if (inst >= proc_slabinfo.ncaches)
6495 return PM_ERR_INST;
6497 switch(idp->item) {
6498 case 0: /* mem.slabinfo.objects.active */
6499 atom->ull = proc_slabinfo.caches[inst].num_active_objs;
6500 break;
6501 case 1: /* mem.slabinfo.objects.total */
6502 atom->ull = proc_slabinfo.caches[inst].total_objs;
6503 break;
6504 case 2: /* mem.slabinfo.objects.size */
6505 if (proc_slabinfo.caches[inst].seen < 11) /* version 1.1 or later only */
6506 return 0;
6507 atom->ul = proc_slabinfo.caches[inst].object_size;
6508 break;
6509 case 3: /* mem.slabinfo.slabs.active */
6510 if (proc_slabinfo.caches[inst].seen < 11) /* version 1.1 or later only */
6511 return 0;
6512 atom->ul = proc_slabinfo.caches[inst].num_active_slabs;
6513 break;
6514 case 4: /* mem.slabinfo.slabs.total */
6515 if (proc_slabinfo.caches[inst].seen == 11) /* version 1.1 only */
6516 return 0;
6517 atom->ul = proc_slabinfo.caches[inst].total_slabs;
6518 break;
6519 case 5: /* mem.slabinfo.slabs.pages_per_slab */
6520 if (proc_slabinfo.caches[inst].seen < 11) /* version 1.1 or later only */
6521 return 0;
6522 atom->ul = proc_slabinfo.caches[inst].pages_per_slab;
6523 break;
6524 case 6: /* mem.slabinfo.slabs.objects_per_slab */
6525 if (proc_slabinfo.caches[inst].seen != 20) /* version 2.0 only */
6526 return 0;
6527 atom->ul = proc_slabinfo.caches[inst].objects_per_slab;
6528 break;
6529 case 7: /* mem.slabinfo.slabs.total_size */
6530 if (proc_slabinfo.caches[inst].seen < 11) /* version 1.1 or later only */
6531 return 0;
6532 atom->ull = proc_slabinfo.caches[inst].total_size;
6533 break;
6534 default:
6535 return PM_ERR_PMID;
6537 break;
6539 case CLUSTER_PARTITIONS:
6540 return proc_partitions_fetch(mdesc, inst, atom);
6542 case CLUSTER_SCSI:
6543 scsi_entry = NULL;
6544 sts = pmdaCacheLookup(INDOM(SCSI_INDOM), inst, NULL, (void **)&scsi_entry);
6545 if (sts < 0)
6546 return sts;
6547 if (sts == PMDA_CACHE_INACTIVE)
6548 return PM_ERR_INST;
6549 switch (idp->item) {
6550 case 0: /* hinv.map.scsi */
6551 atom->cp = (scsi_entry && scsi_entry->dev_name) ? scsi_entry->dev_name : "";
6552 break;
6553 default:
6554 return PM_ERR_PMID;
6556 break;
6558 case CLUSTER_KERNEL_UNAME:
6559 switch(idp->item) {
6560 case 5: /* pmda.uname */
6561 sprintf(uname_string, "%s %s %s %s %s",
6562 kernel_uname.sysname,
6563 kernel_uname.nodename,
6564 kernel_uname.release,
6565 kernel_uname.version,
6566 kernel_uname.machine);
6567 atom->cp = uname_string;
6568 break;
6570 case 6: /* pmda.version */
6571 atom->cp = pmGetConfig("PCP_VERSION");
6572 break;
6574 case 7: /* kernel.uname.distro ... not from uname(2) */
6575 atom->cp = get_distro_info();
6576 break;
6578 default:
6579 return PM_ERR_PMID;
6581 break;
6583 case CLUSTER_CPUINFO:
6584 if (inst != PM_IN_NULL &&
6585 pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
6586 return PM_ERR_INST;
6587 switch (idp->item) {
6588 case 0: /* hinv.cpu.clock */
6589 if (cp->info.clock == 0.0)
6590 return 0;
6591 atom->f = cp->info.clock;
6592 break;
6593 case 1: /* hinv.cpu.vendor */
6594 i = cp->info.vendor;
6595 if ((atom->cp = linux_strings_lookup(i)) == NULL)
6596 atom->cp = "unknown";
6597 break;
6598 case 2: /* hinv.cpu.model */
6599 if ((i = cp->info.model) < 0)
6600 i = cp->info.model_name;
6601 if ((atom->cp = linux_strings_lookup(i)) == NULL)
6602 atom->cp = "unknown";
6603 break;
6604 case 3: /* hinv.cpu.stepping */
6605 i = cp->info.stepping;
6606 if ((atom->cp = linux_strings_lookup(i)) == NULL)
6607 atom->cp = "unknown";
6608 break;
6609 case 4: /* hinv.cpu.cache */
6610 if (!cp->info.cache)
6611 return 0;
6612 atom->ul = cp->info.cache;
6613 break;
6614 case 5: /* hinv.cpu.bogomips */
6615 if (cp->info.bogomips == 0.0)
6616 return 0;
6617 atom->f = cp->info.bogomips;
6618 break;
6619 case 6: /* hinv.map.cpu_num */
6620 atom->ul = cp->cpuid;
6621 break;
6622 case 7: /* hinv.machine ... not from /proc/stat */
6623 atom->cp = get_machine_info(kernel_uname.machine);
6624 break;
6625 case 8: /* hinv.map.cpu_node */
6626 atom->ul = cp->nodeid;
6627 break;
6628 case 9: /* hinv.cpu.model_name */
6629 if ((i = cp->info.model_name) < 0)
6630 i = cp->info.model;
6631 if ((atom->cp = linux_strings_lookup(i)) == NULL)
6632 atom->cp = "unknown";
6633 break;
6634 case 10: /* hinv.cpu.flags */
6635 i = cp->info.flags;
6636 if ((atom->cp = linux_strings_lookup(i)) == NULL)
6637 atom->cp = "unknown";
6638 break;
6639 case 11: /* hinv.cpu.cache_alignment */
6640 if (!cp->info.cache_align)
6641 return 0;
6642 atom->ul = cp->info.cache_align;
6643 break;
6645 default:
6646 return PM_ERR_PMID;
6648 break;
6650 case CLUSTER_SYSFS_DEVICES:
6651 switch (idp->item) {
6652 case 0: /* hinv.cpu.online */
6653 if (pmdaCacheLookup(INDOM(CPU_INDOM), inst, NULL, NULL) < 0)
6654 return PM_ERR_INST;
6655 atom->ul = refresh_sysfs_online(inst, "cpu");
6656 break;
6657 case 1: /* hinv.node.online */
6658 if (pmdaCacheLookup(INDOM(NODE_INDOM), inst, NULL, NULL) < 0)
6659 return PM_ERR_INST;
6660 atom->ul = refresh_sysfs_online(inst, "node");
6661 break;
6663 default:
6664 return PM_ERR_PMID;
6666 break;
6669 * Cluster added by Wu Liming <wulm.fnst@cn.fujitsu.com>
6671 case CLUSTER_ZONEINFO_PROTECTION: {
6672 unsigned long long *value;
6673 sts = pmdaCacheLookup(INDOM(ZONEINFO_PROTECTION_INDOM), inst, NULL, (void **)&value);
6674 if (sts < 0)
6675 return sts;
6676 if (sts == PMDA_CACHE_INACTIVE)
6677 return PM_ERR_INST;
6678 switch (idp->item) {
6679 case 0: /* mem.zoneinfo.protection */
6680 atom->ull = (__uint64_t)*value;
6682 break;
6685 case CLUSTER_ZONEINFO: {
6686 zoneinfo_entry_t *info;
6688 sts = pmdaCacheLookup(INDOM(ZONEINFO_INDOM), inst, NULL, (void **)&info);
6689 if (sts < 0)
6690 return sts;
6691 if (sts == PMDA_CACHE_INACTIVE)
6692 return PM_ERR_INST;
6693 if (idp->item >= ZONE_VALUES)
6694 return PM_ERR_PMID;
6695 atom->ull = info->values[idp->item];
6696 break;
6699 case CLUSTER_KSM_INFO:
6700 switch (idp->item) {
6701 case 0: /* mem.ksm.full_scans */
6702 _pm_assign_ulong(atom, ksm_info.full_scans);
6703 break;
6704 case 1: /* mem.ksm.merge_across_nodes */
6705 _pm_assign_ulong(atom, ksm_info.merge_across_nodes);
6706 break;
6707 case 2: /* mem.ksm.pages_shared */
6708 _pm_assign_ulong(atom, ksm_info.pages_shared);
6709 break;
6710 case 3: /* mem.ksm.pages_sharing */
6711 _pm_assign_ulong(atom, ksm_info.pages_sharing);
6712 break;
6713 case 4: /* mem.ksm.pages_to_scan */
6714 _pm_assign_ulong(atom, ksm_info.pages_to_scan);
6715 break;
6716 case 5: /* mem.ksm.pages_unshared */
6717 _pm_assign_ulong(atom, ksm_info.pages_unshared);
6718 break;
6719 case 6: /* mem.ksm.pages_volatile */
6720 _pm_assign_ulong(atom, ksm_info.pages_volatile);
6721 break;
6722 case 7: /* mem.ksm.run_state */
6723 _pm_assign_ulong(atom, ksm_info.run);
6724 break;
6725 case 8: /* mem.ksm.sleep_time */
6726 _pm_assign_ulong(atom, ksm_info.sleep_millisecs);
6727 break;
6728 default:
6729 return PM_ERR_PMID;
6731 break;
6733 case CLUSTER_SEM_INFO:
6734 switch (idp->item) {
6735 case 0: /* ipc.sem.used_sem */
6736 atom->ul = _sem_info.semusz;
6737 break;
6738 case 1: /* ipc.sem.tot_sem */
6739 atom->ul = _sem_info.semaem;
6740 break;
6741 default:
6742 return PM_ERR_PMID;
6744 break;
6747 * Cluster added by Wu Liming <wulm.fnst@cn.fujitsu.com>
6749 case CLUSTER_SHM_STAT: {
6751 shm_stat_t *shm_stat;
6753 sts = pmdaCacheLookup(INDOM(IPC_STAT_INDOM), inst, NULL, (void **)&shm_stat);
6754 if (sts < 0)
6755 return sts;
6756 if (sts != PMDA_CACHE_ACTIVE)
6757 return PM_ERR_INST;
6758 switch (idp->item) {
6759 case 0: /* ipc.shm.key */
6760 atom->cp = (char *)shm_stat->shm_key;
6761 break;
6762 case 1: /* ipc.shm.owner */
6763 atom->cp = (char *)shm_stat->shm_owner;
6764 break;
6765 case 2: /* ipc.shm.perms */
6766 atom->ul = shm_stat->shm_perms;
6767 break;
6768 case 3: /* ipc.shm.segsz */
6769 atom->ul = shm_stat->shm_bytes;
6770 break;
6771 case 4: /* ipc.shm.nattch */
6772 atom->ul = shm_stat->shm_nattch;
6773 break;
6774 case 5: /* ipc.shm.status */
6775 atom->cp = (char *)shm_stat->shm_status;
6776 break;
6777 default:
6778 return PM_ERR_PMID;
6780 break;
6783 case CLUSTER_MSG_STAT: {
6785 msg_que_t *msg_que;
6787 sts = pmdaCacheLookup(INDOM(IPC_MSG_INDOM), inst, NULL, (void **)&msg_que);
6788 if (sts < 0)
6789 return sts;
6790 if (sts != PMDA_CACHE_ACTIVE)
6791 return PM_ERR_INST;
6792 switch (idp->item) {
6793 case 0: /* ipc.msg.key */
6794 atom->cp = (char *)msg_que->msg_key;
6795 break;
6796 case 1: /* ipc.msg.owner */
6797 atom->cp = (char *)msg_que->msg_owner;
6798 break;
6799 case 2: /* ipc.msg.perms */
6800 atom->ul = msg_que->msg_perms;
6801 break;
6802 case 3: /* ipc.msg.msgsz */
6803 atom->ul = msg_que->msg_bytes;
6804 break;
6805 case 4: /* ipc.shm.messages */
6806 atom->ul = msg_que->messages;
6807 break;
6808 default:
6809 return PM_ERR_PMID;
6811 break;
6814 case CLUSTER_SEM_STAT: {
6816 sem_array_t *sem_arr;
6818 sts = pmdaCacheLookup(INDOM(IPC_SEM_INDOM), inst, NULL, (void **)&sem_arr);
6819 if (sts < 0)
6820 return sts;
6821 if (sts != PMDA_CACHE_ACTIVE)
6822 return PM_ERR_INST;
6823 switch (idp->item) {
6824 case 0: /* ipc.sem.key */
6825 atom->cp = (char *)sem_arr->sem_key;
6826 break;
6827 case 1: /* ipc.sem.owner */
6828 atom->cp = (char *)sem_arr->sem_owner;
6829 break;
6830 case 2: /* ipc.sem.perms */
6831 atom->ul = sem_arr->sem_perms;
6832 break;
6833 case 3: /* ipc.sem.nsems */
6834 atom->ul = sem_arr->nsems;
6835 break;
6836 default:
6837 return PM_ERR_PMID;
6839 break;
6843 * Cluster added by Mike Mason <mmlnx@us.ibm.com>
6845 case CLUSTER_SEM_LIMITS:
6846 switch (idp->item) {
6847 case 0: /* ipc.sem.max_semmap */
6848 atom->ul = sem_limits.semmap;
6849 break;
6850 case 1: /* ipc.sem.max_semid */
6851 atom->ul = sem_limits.semmni;
6852 break;
6853 case 2: /* ipc.sem.max_sem */
6854 atom->ul = sem_limits.semmns;
6855 break;
6856 case 3: /* ipc.sem.num_undo */
6857 atom->ul = sem_limits.semmnu;
6858 break;
6859 case 4: /* ipc.sem.max_perid */
6860 atom->ul = sem_limits.semmsl;
6861 break;
6862 case 5: /* ipc.sem.max_ops */
6863 atom->ul = sem_limits.semopm;
6864 break;
6865 case 6: /* ipc.sem.max_undoent */
6866 atom->ul = sem_limits.semume;
6867 break;
6868 case 7: /* ipc.sem.sz_semundo */
6869 atom->ul = sem_limits.semusz;
6870 break;
6871 case 8: /* ipc.sem.max_semval */
6872 atom->ul = sem_limits.semvmx;
6873 break;
6874 case 9: /* ipc.sem.max_exit */
6875 atom->ul = sem_limits.semaem;
6876 break;
6877 default:
6878 return PM_ERR_PMID;
6880 break;
6882 case CLUSTER_SHM_INFO:
6883 switch (idp->item) {
6884 case 0: /* ipc.shm.tot */
6885 atom->ul = _shm_info.shm_tot;
6886 break;
6887 case 1: /* ipc.shm.rss */
6888 atom->ul = _shm_info.shm_rss;
6889 break;
6890 case 2: /* ipc.shm.swp */
6891 atom->ul = _shm_info.shm_swp;
6892 break;
6893 case 3: /* ipc.shm.used_ids */
6894 atom->ul = _shm_info.used_ids;
6895 break;
6896 case 4: /* ipc.shm.swap_attempts */
6897 atom->ul = _shm_info.swap_attempts;
6898 break;
6899 case 5: /* ipc.shm.swap_successes */
6900 atom->ul = _shm_info.swap_successes;
6901 break;
6902 default:
6903 return PM_ERR_PMID;
6905 break;
6908 * Cluster added by Wu Liming <wulm.fnst@cn.fujitsu.com>
6910 case CLUSTER_MSG_INFO:
6911 switch (idp->item) {
6912 case 0: /* ipc.msg.used_queues */
6913 atom->ul = _msg_info.msgpool;
6914 break;
6915 case 1: /* ipc.msg.tot_msg */
6916 atom->ul = _msg_info.msgmap;
6917 break;
6918 case 2: /* ipc.msg.tot_bytes */
6919 atom->ul = _msg_info.msgtql;
6920 break;
6921 default:
6922 return PM_ERR_PMID;
6924 break;
6927 * Cluster added by Mike Mason <mmlnx@us.ibm.com>
6929 case CLUSTER_MSG_LIMITS:
6930 switch (idp->item) {
6931 case 0: /* ipc.msg.sz_pool */
6932 atom->ul = msg_limits.msgpool;
6933 break;
6934 case 1: /* ipc.msg.mapent */
6935 atom->ul = msg_limits.msgmap;
6936 break;
6937 case 2: /* ipc.msg.max_msgsz */
6938 atom->ul = msg_limits.msgmax;
6939 break;
6940 case 3: /* ipc.msg.max_defmsgq */
6941 atom->ul = msg_limits.msgmnb;
6942 break;
6943 case 4: /* ipc.msg.max_msgqid */
6944 atom->ul = msg_limits.msgmni;
6945 break;
6946 case 5: /* ipc.msg.sz_msgseg */
6947 atom->ul = msg_limits.msgssz;
6948 break;
6949 case 6: /* ipc.msg.num_smsghdr */
6950 atom->ul = msg_limits.msgtql;
6951 break;
6952 case 7: /* ipc.msg.max_seg */
6953 atom->ul = (unsigned long) msg_limits.msgseg;
6954 break;
6955 default:
6956 return PM_ERR_PMID;
6958 break;
6961 * Cluster added by Mike Mason <mmlnx@us.ibm.com>
6963 case CLUSTER_SHM_LIMITS:
6964 switch (idp->item) {
6965 case 0: /* ipc.shm.max_segsz */
6966 atom->ul = shm_limits.shmmax;
6967 break;
6968 case 1: /* ipc.shm.min_segsz */
6969 atom->ul = shm_limits.shmmin;
6970 break;
6971 case 2: /* ipc.shm.max_seg */
6972 atom->ul = shm_limits.shmmni;
6973 break;
6974 case 3: /* ipc.shm.max_segproc */
6975 atom->ul = shm_limits.shmseg;
6976 break;
6977 case 4: /* ipc.shm.max_shmsys */
6978 atom->ul = shm_limits.shmall;
6979 break;
6980 default:
6981 return PM_ERR_PMID;
6983 break;
6986 * Cluster added by Mike Mason <mmlnx@us.ibm.com>
6988 case CLUSTER_NUSERS:
6990 /* count the number of users */
6991 struct utmp *ut;
6992 atom->ul = 0;
6993 setutent();
6994 while ((ut = getutent())) {
6995 if ((ut->ut_type == USER_PROCESS) && (ut->ut_name[0] != '\0'))
6996 atom->ul++;
6998 endutent();
7000 break;
7002 case CLUSTER_IB: /* deprecated: network.ib, use infiniband PMDA */
7003 return PM_ERR_APPVERSION;
7005 case CLUSTER_NUMA_MEMINFO:
7006 /* NUMA memory metrics from /sys/devices/system/node/nodeX */
7007 sts = pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&np);
7008 if (sts != PMDA_CACHE_ACTIVE)
7009 return PM_ERR_INST;
7011 switch (idp->item) {
7012 case 0: /* mem.numa.util.total */
7013 sts = linux_table_lookup("MemTotal:", np->meminfo, &atom->ull);
7014 break;
7015 case 1: /* mem.numa.util.free */
7016 sts = linux_table_lookup("MemFree:", np->meminfo, &atom->ull);
7017 break;
7018 case 2: /* mem.numa.util.used */
7019 sts = linux_table_lookup("MemUsed:", np->meminfo, &atom->ull);
7020 break;
7021 case 3: /* mem.numa.util.active */
7022 sts = linux_table_lookup("Active:", np->meminfo, &atom->ull);
7023 break;
7024 case 4: /* mem.numa.util.inactive */
7025 sts = linux_table_lookup("Inactive:", np->meminfo, &atom->ull);
7026 break;
7027 case 5: /* mem.numa.util.active_anon */
7028 sts = linux_table_lookup("Active(anon):", np->meminfo, &atom->ull);
7029 break;
7030 case 6: /* mem.numa.util.inactive_anon */
7031 sts = linux_table_lookup("Inactive(anon):", np->meminfo, &atom->ull);
7032 break;
7033 case 7: /* mem.numa.util.active_file */
7034 sts = linux_table_lookup("Active(file):", np->meminfo, &atom->ull);
7035 break;
7036 case 8: /* mem.numa.util.inactive_file */
7037 sts = linux_table_lookup("Inactive(file):", np->meminfo, &atom->ull);
7038 break;
7039 case 9: /* mem.numa.util.highTotal */
7040 sts = linux_table_lookup("HighTotal:", np->meminfo, &atom->ull);
7041 break;
7042 case 10: /* mem.numa.util.highFree */
7043 sts = linux_table_lookup("HighFree:", np->meminfo, &atom->ull);
7044 break;
7045 case 11: /* mem.numa.util.lowTotal */
7046 sts = linux_table_lookup("LowTotal:", np->meminfo, &atom->ull);
7047 break;
7048 case 12: /* mem.numa.util.lowFree */
7049 sts = linux_table_lookup("LowFree:", np->meminfo, &atom->ull);
7050 break;
7051 case 13: /* mem.numa.util.unevictable */
7052 sts = linux_table_lookup("Unevictable:", np->meminfo, &atom->ull);
7053 break;
7054 case 14: /* mem.numa.util.mlocked */
7055 sts = linux_table_lookup("Mlocked:", np->meminfo, &atom->ull);
7056 break;
7057 case 15: /* mem.numa.util.dirty */
7058 sts = linux_table_lookup("Dirty:", np->meminfo, &atom->ull);
7059 break;
7060 case 16: /* mem.numa.util.writeback */
7061 sts = linux_table_lookup("Writeback:", np->meminfo, &atom->ull);
7062 break;
7063 case 17: /* mem.numa.util.filePages */
7064 sts = linux_table_lookup("FilePages:", np->meminfo, &atom->ull);
7065 break;
7066 case 18: /* mem.numa.util.mapped */
7067 sts = linux_table_lookup("Mapped:", np->meminfo, &atom->ull);
7068 break;
7069 case 19: /* mem.numa.util.anonPages */
7070 sts = linux_table_lookup("AnonPages:", np->meminfo, &atom->ull);
7071 break;
7072 case 20: /* mem.numa.util.shmem */
7073 sts = linux_table_lookup("Shmem:", np->meminfo, &atom->ull);
7074 break;
7075 case 21: /* mem.numa.util.kernelStack */
7076 sts = linux_table_lookup("KernelStack:", np->meminfo, &atom->ull);
7077 break;
7078 case 22: /* mem.numa.util.pageTables */
7079 sts = linux_table_lookup("PageTables:", np->meminfo, &atom->ull);
7080 break;
7081 case 23: /* mem.numa.util.NFS_Unstable */
7082 sts = linux_table_lookup("NFS_Unstable:", np->meminfo, &atom->ull);
7083 break;
7084 case 24: /* mem.numa.util.bounce */
7085 sts = linux_table_lookup("Bounce:", np->meminfo, &atom->ull);
7086 break;
7087 case 25: /* mem.numa.util.writebackTmp */
7088 sts = linux_table_lookup("WritebackTmp:", np->meminfo, &atom->ull);
7089 break;
7090 case 26: /* mem.numa.util.slab */
7091 sts = linux_table_lookup("Slab:", np->meminfo, &atom->ull);
7092 break;
7093 case 27: /* mem.numa.util.slabReclaimable */
7094 sts = linux_table_lookup("SReclaimable:", np->meminfo, &atom->ull);
7095 break;
7096 case 28: /* mem.numa.util.slabUnreclaimable */
7097 sts = linux_table_lookup("SUnreclaim:", np->meminfo, &atom->ull);
7098 break;
7099 case 29: /* mem.numa.util.hugepagesTotal */
7100 sts = linux_table_lookup("HugePages_Total:", np->meminfo, &atom->ull);
7101 break;
7102 case 30: /* mem.numa.util.hugepagesFree */
7103 sts = linux_table_lookup("HugePages_Free:", np->meminfo, &atom->ull);
7104 break;
7105 case 31: /* mem.numa.util.hugepagesSurp */
7106 sts = linux_table_lookup("HugePages_Surp:", np->meminfo, &atom->ull);
7107 break;
7108 case 32: /* mem.numa.alloc.hit */
7109 sts = linux_table_lookup("numa_hit", np->memstat, &atom->ull);
7110 break;
7111 case 33: /* mem.numa.alloc.miss */
7112 sts = linux_table_lookup("numa_miss", np->memstat, &atom->ull);
7113 break;
7114 case 34: /* mem.numa.alloc.foreign */
7115 sts = linux_table_lookup("numa_foreign", np->memstat, &atom->ull);
7116 break;
7117 case 35: /* mem.numa.alloc.interleave_hit */
7118 sts = linux_table_lookup("interleave_hit", np->memstat, &atom->ull);
7119 break;
7120 case 36: /* mem.numa.alloc.local_node */
7121 sts = linux_table_lookup("local_node", np->memstat, &atom->ull);
7122 break;
7123 case 37: /* mem.numa.alloc.other_node */
7124 sts = linux_table_lookup("other_node", np->memstat, &atom->ull);
7125 break;
7126 case 38: /* mem.numa.max_bandwidth */
7127 atom->d = np->bandwidth;
7128 sts = (atom->d > 0.0);
7129 break;
7130 case 39: /* mem.numa.util.hugepagesTotalBytes */
7131 if (!MEMINFO_VALID_VALUE(proc_meminfo.Hugepagesize))
7132 return 0; /* no values available */
7133 sts = linux_table_lookup("HugePages_Total:", np->meminfo, &atom->ull);
7134 atom->ull *= proc_meminfo.Hugepagesize;
7135 break;
7136 case 40: /* mem.numa.util.hugepagesFreeBytes */
7137 if (!MEMINFO_VALID_VALUE(proc_meminfo.Hugepagesize))
7138 return 0; /* no values available */
7139 sts = linux_table_lookup("HugePages_Free:", np->meminfo, &atom->ull);
7140 atom->ull *= proc_meminfo.Hugepagesize;
7141 break;
7142 case 41: /* mem.numa.util.hugepagesSurpBytes */
7143 if (!MEMINFO_VALID_VALUE(proc_meminfo.Hugepagesize))
7144 return 0; /* no values available */
7145 sts = linux_table_lookup("HugePages_Surp:", np->meminfo, &atom->ull);
7146 atom->ull *= proc_meminfo.Hugepagesize;
7147 break;
7149 default:
7150 return PM_ERR_PMID;
7152 return sts;
7154 case CLUSTER_INTERRUPT_LINES:
7155 case CLUSTER_INTERRUPT_OTHER:
7156 case CLUSTER_INTERRUPTS:
7157 case CLUSTER_SOFTIRQS:
7158 return interrupts_fetch(idp->cluster, idp->item, inst, atom);
7160 case CLUSTER_DM:
7161 case CLUSTER_MD:
7162 case CLUSTER_MDADM:
7163 return proc_partitions_fetch(mdesc, inst, atom);
7165 case CLUSTER_NET_SOFTNET:
7166 switch (idp->item) {
7167 case 0: /* network.softnet.processed */
7168 if (!(proc_net_softnet.flags & SN_PROCESSED))
7169 return PM_ERR_APPVERSION;
7170 atom->ull = proc_net_softnet.processed;
7171 break;
7172 case 1: /* network.softnet.dropped */
7173 if (!(proc_net_softnet.flags & SN_DROPPED))
7174 return PM_ERR_APPVERSION;
7175 atom->ull = proc_net_softnet.dropped;
7176 break;
7177 case 2: /* network.softnet.time_squeeze */
7178 if (!(proc_net_softnet.flags & SN_TIME_SQUEEZE))
7179 return PM_ERR_APPVERSION;
7180 atom->ull = proc_net_softnet.time_squeeze;
7181 break;
7182 case 3: /* network.softnet.cpu_collision */
7183 if (!(proc_net_softnet.flags & SN_CPU_COLLISION))
7184 return PM_ERR_APPVERSION;
7185 atom->ull = proc_net_softnet.cpu_collision;
7186 break;
7187 case 4: /* network.softnet.received_rps */
7188 if (!(proc_net_softnet.flags & SN_RECEIVED_RPS))
7189 return PM_ERR_APPVERSION;
7190 atom->ull = proc_net_softnet.received_rps;
7191 break;
7192 case 5: /* network.softnet.flow_limit_count */
7193 if (!(proc_net_softnet.flags & SN_FLOW_LIMIT_COUNT))
7194 return PM_ERR_APPVERSION;
7195 atom->ull = proc_net_softnet.flow_limit_count;
7196 break;
7197 case 6: /* network.softnet.percpu.processed */
7198 if (!(proc_net_softnet.flags & SN_PROCESSED))
7199 return PM_ERR_APPVERSION;
7200 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
7201 return PM_ERR_INST;
7202 atom->ull = cp->softnet->processed;
7203 break;
7204 case 7: /* network.softnet.percpu.dropped */
7205 if (!(proc_net_softnet.flags & SN_DROPPED))
7206 return PM_ERR_APPVERSION;
7207 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
7208 return PM_ERR_INST;
7209 atom->ull = cp->softnet->dropped;
7210 break;
7211 case 8: /* network.softnet.percpu.time_squeeze */
7212 if (!(proc_net_softnet.flags & SN_TIME_SQUEEZE))
7213 return PM_ERR_APPVERSION;
7214 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
7215 return PM_ERR_INST;
7216 atom->ull = cp->softnet->time_squeeze;
7217 break;
7218 case 9: /* network.softnet.percpu.cpu_collision */
7219 if (!(proc_net_softnet.flags & SN_CPU_COLLISION))
7220 return PM_ERR_APPVERSION;
7221 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
7222 return PM_ERR_INST;
7223 atom->ull = cp->softnet->cpu_collision;
7224 break;
7225 case 10: /* network.softnet.percpu.received_rps */
7226 if (!(proc_net_softnet.flags & SN_RECEIVED_RPS))
7227 return PM_ERR_APPVERSION;
7228 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
7229 return PM_ERR_INST;
7230 atom->ull = cp->softnet->received_rps;
7231 break;
7232 case 11: /* network.softnet.percpu.flow_limit_count */
7233 if (!(proc_net_softnet.flags & SN_FLOW_LIMIT_COUNT))
7234 return PM_ERR_APPVERSION;
7235 if (pmdaCacheLookup(mdesc->m_desc.indom, inst, NULL, (void **)&cp) < 0)
7236 return PM_ERR_INST;
7237 atom->ull = cp->softnet->flow_limit_count;
7238 break;
7239 default:
7240 return PM_ERR_PMID;
7242 break;
7244 case CLUSTER_BUDDYINFO:
7245 if (inst >= proc_buddyinfo.nbuddys)
7246 return PM_ERR_INST;
7247 switch (idp->item) {
7248 case 0:
7249 _pm_assign_ulong(atom, proc_buddyinfo.buddys[inst].value);
7250 break;
7251 case 1:
7252 atom->ull = proc_buddyinfo.buddys[inst].value << _pm_pageshift;
7253 atom->ull /= 1024; /* convert to kilobytes */
7254 break;
7255 default:
7256 return PM_ERR_PMID;
7258 break;
7260 case CLUSTER_TAPEDEV:
7261 if (idp->item == TAPESTATS_HINV_NTAPE) {
7262 /* hinv.ntape */
7263 atom->ul = pmdaCacheOp(INDOM(TAPEDEV_INDOM), PMDA_CACHE_SIZE_ACTIVE);
7265 else {
7267 * tape.dev.* counters are direct indexed by item, see sysfs_tapestats.h
7269 tapedev_t *tape = NULL;
7271 if (idp->item >= TAPESTATS_COUNT)
7272 return PM_ERR_PMID;
7273 sts = pmdaCacheLookup(INDOM(TAPEDEV_INDOM), inst, NULL, (void **)&tape);
7274 if (sts < 0)
7275 return sts;
7276 if (sts != PMDA_CACHE_ACTIVE || tape == NULL)
7277 return PM_ERR_INST;
7278 atom->ull = tape->counts[idp->item];
7280 break;
7282 default: /* unknown cluster */
7283 return PM_ERR_PMID;
7286 return 1;
7290 static int
7291 linux_fetch(int numpmid, pmID pmidlist[], pmResult **resp, pmdaExt *pmda)
7293 int i, sts, need_refresh[NUM_REFRESHES] = {0};
7295 for (i = 0; i < numpmid; i++) {
7296 __pmID_int *idp = (__pmID_int *)&(pmidlist[i]);
7298 if (idp->cluster >= NUM_CLUSTERS)
7299 continue;
7301 switch (idp->cluster) {
7302 case CLUSTER_STAT:
7303 case CLUSTER_DM:
7304 case CLUSTER_MD:
7305 case CLUSTER_MDADM:
7306 if (is_partitions_metric(pmidlist[i]))
7307 need_refresh[CLUSTER_PARTITIONS]++;
7308 else if (idp->item != 48) /* hz */
7309 need_refresh[idp->cluster]++;
7310 /* In 2.6 kernels, swap.{pagesin,pagesout} are in /proc/vmstat */
7311 if (_pm_have_proc_vmstat && idp->cluster == CLUSTER_STAT) {
7312 if (idp->item >= 8 && idp->item <= 11)
7313 need_refresh[CLUSTER_VMSTAT]++;
7315 break;
7317 case CLUSTER_CPUINFO:
7318 case CLUSTER_INTERRUPT_LINES:
7319 case CLUSTER_INTERRUPT_OTHER:
7320 case CLUSTER_INTERRUPTS:
7321 case CLUSTER_SOFTIRQS:
7322 case CLUSTER_SYSFS_DEVICES:
7323 case CLUSTER_NET_SOFTNET:
7324 need_refresh[idp->cluster]++;
7325 need_refresh[CLUSTER_STAT]++;
7326 break;
7328 case CLUSTER_NUMA_MEMINFO:
7329 need_refresh[idp->cluster]++;
7330 need_refresh[CLUSTER_MEMINFO]++;
7331 break;
7333 case CLUSTER_NET_DEV:
7334 need_refresh[idp->cluster]++;
7335 switch (idp->item) {
7336 case 21: /* network.interface.mtu */
7337 need_refresh[REFRESH_NET_MTU]++;
7338 break;
7339 case 22: /* network.interface.speed */
7340 case 23: /* network.interface.baudrate */
7341 need_refresh[REFRESH_NET_SPEED]++;
7342 break;
7343 case 24: /* network.interface.duplex */
7344 need_refresh[REFRESH_NET_DUPLEX]++;
7345 break;
7346 case 25: /* network.interface.up */
7347 need_refresh[REFRESH_NET_LINKUP]++;
7348 break;
7349 case 26: /* network.interface.running */
7350 need_refresh[REFRESH_NET_RUNNING]++;
7351 break;
7353 break;
7355 case CLUSTER_NET_ADDR:
7356 need_refresh[idp->cluster]++;
7357 switch (idp->item) {
7358 case 0: /* network.interface.ipv4_addr */
7359 need_refresh[REFRESH_NETADDR_INET]++;
7360 break;
7361 case 1: /* network.interface.ipv6_addr */
7362 case 2: /* network.interface.ipv6_scope */
7363 need_refresh[REFRESH_NETADDR_IPV6]++;
7364 break;
7365 case 3: /* network.interface.hw_addr */
7366 need_refresh[REFRESH_NETADDR_HW]++;
7367 break;
7369 break;
7371 default:
7372 need_refresh[idp->cluster]++;
7373 break;
7377 if ((sts = linux_refresh(pmda, need_refresh, pmda->e_context)) < 0)
7378 return sts;
7379 return pmdaFetch(numpmid, pmidlist, resp, pmda);
7382 static int
7383 linux_text(int ident, int type, char **buf, pmdaExt *pmda)
7385 if ((type & PM_TEXT_PMID) == PM_TEXT_PMID) {
7386 int sts = pmdaDynamicLookupText(ident, type, buf, pmda);
7387 if (sts != -ENOENT)
7388 return sts;
7390 return pmdaText(ident, type, buf, pmda);
7393 static int
7394 linux_pmid(const char *name, pmID *pmid, pmdaExt *pmda)
7396 pmdaNameSpace *tree = pmdaDynamicLookupName(pmda, name);
7397 return pmdaTreePMID(tree, name, pmid);
7400 static int
7401 linux_name(pmID pmid, char ***nameset, pmdaExt *pmda)
7403 pmdaNameSpace *tree = pmdaDynamicLookupPMID(pmda, pmid);
7404 return pmdaTreeName(tree, pmid, nameset);
7407 static int
7408 linux_children(const char *name, int flag, char ***kids, int **sts, pmdaExt *pmda)
7410 pmdaNameSpace *tree = pmdaDynamicLookupName(pmda, name);
7411 return pmdaTreeChildren(tree, name, flag, kids, sts);
7414 static void
7415 linux_grow_ctxtab(int ctx)
7417 /* expand and initialize the per client context table */
7418 ctxtab = (perctx_t *)realloc(ctxtab, (ctx+1)*sizeof(ctxtab[0]));
7419 if (ctxtab == NULL) {
7420 __pmNoMem("grow_ctxtab", (ctx+1)*sizeof(ctxtab[0]), PM_FATAL_ERR);
7421 /*NOTREACHED*/
7423 while (num_ctx <= ctx) {
7424 memset(&ctxtab[num_ctx], 0, sizeof(perctx_t));
7425 num_ctx++;
7427 memset(&ctxtab[ctx], 0, sizeof(perctx_t));
7430 static void
7431 linux_end_context(int ctx)
7433 if (ctx >= 0 && ctx < num_ctx) {
7434 if (ctxtab[ctx].container.name)
7435 free(ctxtab[ctx].container.name);
7436 if (ctxtab[ctx].container.netfd)
7437 close(ctxtab[ctx].container.netfd);
7438 memset(&ctxtab[ctx], 0, sizeof(perctx_t));
7442 static int
7443 linux_attribute(int ctx, int attr, const char *value, int len, pmdaExt *pmda)
7445 int id = -1;
7446 if (attr == PCP_ATTR_USERID || attr == PCP_ATTR_CONTAINER ) {
7447 if (ctx >= num_ctx)
7448 linux_grow_ctxtab(ctx);
7450 if (attr == PCP_ATTR_USERID) {
7451 ctxtab[ctx].access.uid_flag = 1;
7452 ctxtab[ctx].access.uid = id = atoi(value);
7454 if (attr == PCP_ATTR_CONTAINER) {
7455 if (ctxtab[ctx].container.name)
7456 free(ctxtab[ctx].container.name);
7457 if ((ctxtab[ctx].container.name = strdup(value)) == NULL)
7458 return -ENOMEM;
7459 ctxtab[ctx].container.length = len;
7460 ctxtab[ctx].container.netfd = -1;
7461 ctxtab[ctx].container.pid = 0;
7463 return pmdaAttribute(ctx, attr, value, len, pmda);
7466 pmInDom
7467 linux_indom(int serial)
7469 return indomtab[serial].it_indom;
7472 pmdaIndom *
7473 linux_pmda_indom(int serial)
7475 return &indomtab[serial];
7479 * Helper routines for accessing a generic static string dictionary
7482 char *
7483 linux_strings_lookup(int index)
7485 char *value;
7486 pmInDom dict = INDOM(STRINGS_INDOM);
7488 if (pmdaCacheLookup(dict, index, &value, NULL) == PMDA_CACHE_ACTIVE)
7489 return value;
7490 return NULL;
7494 linux_strings_insert(const char *buf)
7496 pmInDom dict = INDOM(STRINGS_INDOM);
7497 return pmdaCacheStore(dict, PMDA_CACHE_ADD, buf, NULL);
7501 * Initialise the agent (both daemon and DSO).
7504 void
7505 __PMDA_INIT_CALL
7506 linux_init(pmdaInterface *dp)
7508 int i, major, minor, point;
7509 size_t nmetrics, nindoms;
7510 char *envpath;
7511 __pmID_int *idp;
7513 /* optional overrides of some globals for testing */
7514 if ((envpath = getenv("LINUX_HERTZ")) != NULL) {
7515 linux_test_mode |= LINUX_TEST_MODE;
7516 hz = atoi(envpath);
7517 } else
7518 hz = sysconf(_SC_CLK_TCK);
7519 if ((envpath = getenv("LINUX_NCPUS")) != NULL) {
7520 linux_test_mode |= (LINUX_TEST_MODE|LINUX_TEST_NCPUS);
7521 _pm_ncpus = atoi(envpath);
7522 } else
7523 _pm_ncpus = sysconf(_SC_NPROCESSORS_CONF);
7524 if ((envpath = getenv("LINUX_PAGESIZE")) != NULL) {
7525 linux_test_mode |= LINUX_TEST_MODE;
7526 _pm_pageshift = ffs(atoi(envpath)) - 1;
7527 } else
7528 _pm_pageshift = ffs(getpagesize()) - 1;
7529 if ((envpath = getenv("LINUX_STATSPATH")) != NULL) {
7530 linux_test_mode |= (LINUX_TEST_MODE|LINUX_TEST_STATSPATH);
7531 linux_statspath = envpath;
7533 if ((envpath = getenv("LINUX_MDADM")) != NULL) {
7534 linux_test_mode |= LINUX_TEST_MODE;
7535 linux_mdadm = envpath;
7537 if (getenv("PCP_QA_ESTIMATE_MEMAVAILABLE") != NULL)
7538 linux_test_mode |= (LINUX_TEST_MODE|LINUX_TEST_MEMINFO);
7540 if (_isDSO) {
7541 char helppath[MAXPATHLEN];
7542 int sep = __pmPathSeparator();
7543 snprintf(helppath, sizeof(helppath), "%s%c" "linux" "%c" "help",
7544 pmGetConfig("PCP_PMDAS_DIR"), sep, sep);
7545 pmdaDSO(dp, PMDA_INTERFACE_6, "linux DSO", helppath);
7546 } else {
7547 if (username)
7548 __pmSetProcessIdentity(username);
7551 if (dp->status != 0)
7552 return;
7553 dp->comm.flags |= (PDU_FLAG_AUTH|PDU_FLAG_CONTAINER);
7555 dp->version.six.instance = linux_instance;
7556 dp->version.six.fetch = linux_fetch;
7557 dp->version.six.text = linux_text;
7558 dp->version.six.pmid = linux_pmid;
7559 dp->version.six.name = linux_name;
7560 dp->version.six.children = linux_children;
7561 dp->version.six.attribute = linux_attribute;
7562 dp->version.six.ext->e_endCallBack = linux_end_context;
7563 pmdaSetFetchCallBack(dp, linux_fetchCallBack);
7565 proc_slabinfo.indom = &indomtab[SLAB_INDOM];
7566 proc_buddyinfo.indom = &indomtab[BUDDYINFO_INDOM];
7569 * Figure out kernel version. The precision of certain metrics
7570 * (e.g. percpu time counters) has changed over kernel versions.
7571 * See include/linux/kernel_stat.h for all the various flavours.
7573 uname(&kernel_uname);
7574 _pm_ctxt_size = 8;
7575 _pm_intr_size = 8;
7576 _pm_cputime_size = 8;
7577 _pm_idletime_size = 8;
7578 if (sscanf(kernel_uname.release, "%d.%d.%d", &major, &minor, &point) == 3) {
7579 if (major < 2 || (major == 2 && minor <= 4)) { /* 2.4 and earlier */
7580 _pm_ctxt_size = 4;
7581 _pm_intr_size = 4;
7582 _pm_cputime_size = 4;
7583 _pm_idletime_size = sizeof(unsigned long);
7585 else if (major == 2 && minor == 6 &&
7586 point >= 0 && point <= 4) { /* 2.6.0->.4 */
7587 _pm_cputime_size = 4;
7588 _pm_idletime_size = 4;
7591 for (i = 0; i < sizeof(metrictab)/sizeof(pmdaMetric); i++) {
7592 idp = (__pmID_int *)&(metrictab[i].m_desc.pmid);
7593 if (idp->cluster == CLUSTER_STAT) {
7594 switch (idp->item) {
7595 case 0: /* kernel.percpu.cpu.user */
7596 case 1: /* kernel.percpu.cpu.nice */
7597 case 2: /* kernel.percpu.cpu.sys */
7598 case 20: /* kernel.all.cpu.user */
7599 case 21: /* kernel.all.cpu.nice */
7600 case 22: /* kernel.all.cpu.sys */
7601 case 30: /* kernel.percpu.cpu.wait.total */
7602 case 31: /* kernel.percpu.cpu.intr */
7603 case 34: /* kernel.all.cpu.intr */
7604 case 35: /* kernel.all.cpu.wait.total */
7605 case 53: /* kernel.all.cpu.irq.soft */
7606 case 54: /* kernel.all.cpu.irq.hard */
7607 case 55: /* kernel.all.cpu.steal */
7608 case 56: /* kernel.percpu.cpu.irq.soft */
7609 case 57: /* kernel.percpu.cpu.irq.hard */
7610 case 58: /* kernel.percpu.cpu.steal */
7611 case 60: /* kernel.all.cpu.guest */
7612 case 78: /* kernel.all.cpu.vuser */
7613 case 81: /* kernel.all.cpu.guest_nice */
7614 case 82: /* kernel.all.cpu.vnice */
7615 case 61: /* kernel.percpu.cpu.guest */
7616 case 76: /* kernel.percpu.cpu.vuser */
7617 case 83: /* kernel.percpu.cpu.guest_nice */
7618 case 84: /* kernel.percpu.cpu.vnice */
7619 case 62: /* kernel.pernode.cpu.user */
7620 case 63: /* kernel.pernode.cpu.nice */
7621 case 64: /* kernel.pernode.cpu.sys */
7622 case 69: /* kernel.pernode.cpu.wait.total */
7623 case 66: /* kernel.pernode.cpu.intr */
7624 case 70: /* kernel.pernode.cpu.irq.soft */
7625 case 71: /* kernel.pernode.cpu.irq.hard */
7626 case 67: /* kernel.pernode.cpu.steal */
7627 case 68: /* kernel.pernode.cpu.guest */
7628 case 77: /* kernel.pernode.cpu.vuser */
7629 case 85: /* kernel.pernode.cpu.guest_nice */
7630 case 86: /* kernel.pernode.cpu.vnice */
7631 _pm_metric_type(metrictab[i].m_desc.type, _pm_cputime_size);
7632 break;
7633 case 3: /* kernel.percpu.cpu.idle */
7634 case 23: /* kernel.all.cpu.idle */
7635 case 65: /* kernel.pernode.cpu.idle */
7636 _pm_metric_type(metrictab[i].m_desc.type, _pm_idletime_size);
7637 break;
7638 case 12: /* kernel.all.intr */
7639 _pm_metric_type(metrictab[i].m_desc.type, _pm_intr_size);
7640 break;
7641 case 13: /* kernel.all.pswitch */
7642 _pm_metric_type(metrictab[i].m_desc.type, _pm_ctxt_size);
7643 break;
7646 if (metrictab[i].m_desc.type == PM_TYPE_NOSUPPORT)
7647 fprintf(stderr, "Bad kernel metric descriptor type (%u.%u)\n",
7648 idp->cluster, idp->item);
7651 nindoms = sizeof(indomtab)/sizeof(indomtab[0]);
7652 nmetrics = sizeof(metrictab)/sizeof(metrictab[0]);
7654 proc_vmstat_init();
7655 interrupts_init(metrictab, nmetrics);
7657 rootfd = pmdaRootConnect(NULL);
7658 pmdaSetFlags(dp, PMDA_EXT_FLAG_HASHED);
7659 pmdaInit(dp, indomtab, nindoms, metrictab, nmetrics);
7661 /* string metrics use the pmdaCache API for value indexing */
7662 pmdaCacheOp(INDOM(STRINGS_INDOM), PMDA_CACHE_STRINGS);
7664 /* dynamic metrics using the pmdaCache API for name<->item mapping */
7665 pmdaCacheOp(INDOM(INTERRUPT_NAMES_INDOM), PMDA_CACHE_STRINGS);
7666 pmdaCacheResize(INDOM(INTERRUPT_NAMES_INDOM), (1 << 10)-1);
7667 pmdaCacheOp(INDOM(SOFTIRQS_NAMES_INDOM), PMDA_CACHE_STRINGS);
7668 pmdaCacheResize(INDOM(SOFTIRQS_NAMES_INDOM), (1 << 10)-1);
7671 pmLongOptions longopts[] = {
7672 PMDA_OPTIONS_HEADER("Options"),
7673 PMOPT_DEBUG,
7674 PMDAOPT_DOMAIN,
7675 PMDAOPT_LOGFILE,
7676 PMDAOPT_USERNAME,
7677 PMOPT_HELP,
7678 PMDA_OPTIONS_END
7681 pmdaOptions opts = {
7682 .short_options = "D:d:l:U:?",
7683 .long_options = longopts,
7687 * Set up the agent if running as a daemon.
7690 main(int argc, char **argv)
7692 int sep = __pmPathSeparator();
7693 pmdaInterface dispatch;
7694 char helppath[MAXPATHLEN];
7696 _isDSO = 0;
7697 __pmSetProgname(argv[0]);
7699 snprintf(helppath, sizeof(helppath), "%s%c" "linux" "%c" "help",
7700 pmGetConfig("PCP_PMDAS_DIR"), sep, sep);
7701 pmdaDaemon(&dispatch, PMDA_INTERFACE_6, pmProgname, LINUX, "linux.log", helppath);
7703 pmdaGetOptions(argc, argv, &opts, &dispatch);
7704 if (opts.errors) {
7705 pmdaUsageMessage(&opts);
7706 exit(1);
7708 if (opts.username)
7709 username = opts.username;
7711 pmdaOpenLog(&dispatch);
7712 linux_init(&dispatch);
7713 pmdaConnect(&dispatch);
7714 pmdaMain(&dispatch);
7715 exit(0);