fix(freebsd.plugin): fix sysctl arcstats.p fails on FreeBSD 14 (#18748)
Ilya Mashchenko committed
Oct 10, 2024 at 17:12 UTC
d4afd7533be7dabee3fef22895ac5313ab5e8f02
4 files changed
+14
-1
src/collectors/freebsd.plugin/freebsd_kstat_zfs.c
+9
@@ -43,6 +43,8 @@ int do_kstat_zfs_misc_arcstats(int update_every, usec_t dt) {
43
int hash_chains[5];
44
int hash_chain_max[5];
45
int p[5];
46
+ int pd[5];
47
+ int pm[5];
48
int c[5];
49
int c_min[5];
50
int c_max[5];
@@ -145,7 +147,14 @@ int do_kstat_zfs_misc_arcstats(int update_every, usec_t dt) {
147
GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.hash_collisions", mibs.hash_collisions, arcstats.hash_collisions);
148
GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.hash_chains", mibs.hash_chains, arcstats.hash_chains);
149
GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.hash_chain_max", mibs.hash_chain_max, arcstats.hash_chain_max);
150
+
151
+#if __FreeBSD_version >= 1400000
152
+ GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.pd", mibs.pd, arcstats.pd);
153
+ GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.pm", mibs.pm, arcstats.pm);
154
+#else
155
GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.p", mibs.p, arcstats.p);
156
+#endif
157
+
158
GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.c", mibs.c, arcstats.c);
159
GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.c_min", mibs.c_min, arcstats.c_min);
160
GETSYSCTL_SIMPLE("kstat.zfs.misc.arcstats.c_max", mibs.c_max, arcstats.c_max);
src/collectors/proc.plugin/proc_spl_kstat_zfs.c
+2
@@ -54,6 +54,8 @@ int do_proc_spl_kstat_zfs_arcstats(int update_every, usec_t dt) {
54
arl_expect(arl_base, "hash_chains", &arcstats.hash_chains);
55
arl_expect(arl_base, "hash_chain_max", &arcstats.hash_chain_max);
56
arl_expect(arl_base, "p", &arcstats.p);
57
+ arl_expect(arl_base, "pd", &arcstats.pd);
58
+ arl_expect(arl_base, "pm", &arcstats.pd);
59
arl_expect(arl_base, "c", &arcstats.c);
60
arl_expect(arl_base, "c_min", &arcstats.c_min);
61
arl_expect(arl_base, "c_max", &arcstats.c_max);
src/collectors/proc.plugin/zfs_common.c
+1
-1
@@ -560,7 +560,7 @@ void generate_charts_arc_summary(const char *plugin, const char *module, int upd
560
//unsigned long long anon_hits = arcstats.hits - (arcstats.mfu_hits + arcstats.mru_hits + arcstats.mfu_ghost_hits + arcstats.mru_ghost_hits);
561
562
unsigned long long arc_size = arcstats.size;
563
- unsigned long long mru_size = arcstats.p;
563
+ unsigned long long mru_size = arcstats.p > 0 ? arcstats.p : arcstats.pd + arcstats.pm;
564
//unsigned long long target_min_size = arcstats.c_min;
565
//unsigned long long target_max_size = arcstats.c_max;
566
unsigned long long target_size = arcstats.c;
src/collectors/proc.plugin/zfs_common.h
+2
@@ -41,6 +41,8 @@ struct arcstats {
41
unsigned long long hash_chains;
42
unsigned long long hash_chain_max;
43
unsigned long long p;
44
+ unsigned long long pd;
45
+ unsigned long long pm;
46
unsigned long long c;
47
unsigned long long c_min;
48
unsigned long long c_max;