]> granicus.if.org Git - sysstat/commitdiff
sadf: PCP: Add support for A_KTABLES activity
authorSebastien GODARD <sysstat@users.noreply.github.com>
Wed, 20 Mar 2019 16:29:20 +0000 (17:29 +0100)
committerSebastien GODARD <sysstat@users.noreply.github.com>
Wed, 20 Mar 2019 16:29:20 +0000 (17:29 +0100)
Add metrics displayed by "sar -v" (kernel tables statistics) to PCP
archive.

Signed-off-by: Sebastien GODARD <sysstat@users.noreply.github.com>
activity.c
pcp_def_metrics.c
pcp_def_metrics.h
pcp_stats.c
pcp_stats.h
sadf_misc.c

index f41f19bec71f9dc52a9f5bbcc23b1ada00727ca4..4f4c854380c3f9f589f06838d2977e5e0a72f372 100644 (file)
@@ -417,6 +417,7 @@ struct activity ktables_act = {
        .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",
index 61f71e3e0828ea218b08672539c9d86ae53d2e45..99350cfed9e2044e0b1b6a3c91ed4a6d5ca5bc43 100644 (file)
@@ -389,6 +389,32 @@ void pcp_def_memory_metrics(struct activity *a)
 #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.
index f9c22645ca680ef8fa0696dd4a30c10d6d8a287e..2148fce4ae5eb27a1decd00548002aca55d2fb28 100644 (file)
@@ -19,6 +19,7 @@ void pcp_def_swap_metrics(void);
 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 */
index 1e82a602596324427e6928947ef68334062459c5..13bda77b5b58175a83343ba7eb8d46ab6bd3a24d 100644 (file)
@@ -483,6 +483,39 @@ __print_funct_t pcp_print_memory_stats(struct activity *a, int curr, unsigned lo
 #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
index 01e2074b311a7d749cb7189a114c24798106f5aa..dc06461f824e0e509feaa1e5becd049f7cf0d6d0 100644 (file)
@@ -27,6 +27,8 @@ __print_funct_t pcp_print_io_stats
        (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 *);
 
index 0147a37b5ff8b1f545be19dc2306cf1a56ddd81b..1ee69c0bc70802cc35a3ee21f35657e0155d5ba9 100644 (file)
@@ -525,6 +525,10 @@ __printf_funct_t print_pcp_statistics(int *tab, int action, struct activity *act
                                        pcp_def_memory_metrics(act[p]);
                                        break;
 
+                               case A_KTABLES:
+                                       pcp_def_ktables_metrics();
+                                       break;
+
                                case A_QUEUE:
                                        pcp_def_queue_metrics();
                                        break;