.f_json_print = json_print_ktables_stats,
.f_svg_print = svg_print_ktables_stats,
.f_raw_print = raw_print_ktables_stats,
+ .f_pcp_print = pcp_print_ktables_stats,
.f_count_new = NULL,
.item_list = NULL,
.desc = "Kernel tables statistics",
#endif /* HAVE_PCP */
}
+/*
+ ***************************************************************************
+ * Define PCP metrics for kernel tables statistics.
+ ***************************************************************************
+ */
+void pcp_def_ktables_metrics(void)
+{
+#ifdef HAVE_PCP
+ pmiAddMetric("vfs.dentry.count",
+ PM_IN_NULL, PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
+ pmiUnits(0, 0, 1, 0, 0, PM_COUNT_ONE));
+
+ pmiAddMetric("vfs.files.count",
+ PM_IN_NULL, PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
+ pmiUnits(0, 0, 1, 0, 0, PM_COUNT_ONE));
+
+ pmiAddMetric("vfs.inodes.count",
+ PM_IN_NULL, PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
+ pmiUnits(0, 0, 1, 0, 0, PM_COUNT_ONE));
+
+ pmiAddMetric("kernel.all.pty",
+ PM_IN_NULL, PM_TYPE_U64, PM_INDOM_NULL, PM_SEM_INSTANT,
+ pmiUnits(0, 0, 1, 0, 0, PM_COUNT_ONE));
+#endif /* HAVE_PCP */
+}
+
/*
***************************************************************************
* Define PCP metrics for queue and load statistics.
void pcp_def_paging_metrics(void);
void pcp_def_io_metrics(void);
void pcp_def_memory_metrics(struct activity *);
+void pcp_def_ktables_metrics(void);
void pcp_def_queue_metrics(void);
#endif /* _PCP_DEF_METRICS_H */
#endif /* HAVE_PCP */
}
+/*
+ ***************************************************************************
+ * Display kernel tables statistics in PCP format.
+ *
+ * IN:
+ * @a Activity structure with statistics.
+ * @curr Index in array for current sample statistics.
+ * @itv Interval of time in 1/100th of a second.
+ * @record_hdr Record header for current sample.
+ ***************************************************************************
+ */
+__print_funct_t pcp_print_ktables_stats(struct activity *a, int curr, unsigned long long itv,
+ struct record_header *record_hdr)
+{
+#ifdef HAVE_PCP
+ char buf[64];
+ struct stats_ktables
+ *skc = (struct stats_ktables *) a->buf[curr];
+
+ snprintf(buf, sizeof(buf), "%llu", skc->dentry_stat);
+ pmiPutValue("vfs.dentry.count", NULL, buf);
+
+ snprintf(buf, sizeof(buf), "%llu", skc->file_used);
+ pmiPutValue("vfs.files.count", NULL, buf);
+
+ snprintf(buf, sizeof(buf), "%llu", skc->inode_used);
+ pmiPutValue("vfs.inodes.count", NULL, buf);
+
+ snprintf(buf, sizeof(buf), "%llu", skc->pty_nr);
+ pmiPutValue("kernel.all.pty", NULL, buf);
+#endif /* HAVE_PCP */
+}
+
/*
***************************************************************************
* Display queue and load statistics in PCP format
(struct activity *, int, unsigned long long, struct record_header *);
__print_funct_t pcp_print_memory_stats
(struct activity *, int, unsigned long long, struct record_header *);
+__print_funct_t pcp_print_ktables_stats
+ (struct activity *, int, unsigned long long, struct record_header *);
__print_funct_t pcp_print_queue_stats
(struct activity *, int, unsigned long long, struct record_header *);
pcp_def_memory_metrics(act[p]);
break;
+ case A_KTABLES:
+ pcp_def_ktables_metrics();
+ break;
+
case A_QUEUE:
pcp_def_queue_metrics();
break;