fix(freebsd.plugin): fix wired/cached/avail memory calculation on FreeBSD with ZFS (#13183)
Ilya Mashchenko committed
Jun 21, 2022 at 13:26 UTC
1e07dbe8f851857f68b407d3dcf7f007f519f4c7
1 file changed
+4
-4
collectors/freebsd.plugin/freebsd_sysctl.c
+4
-4
@@ -1044,9 +1044,9 @@ int do_system_ram(int update_every, usec_t dt) {
1044
rrddim_set_by_pointer(st, rd_free, vmmeter_data.v_free_count);
1045
rrddim_set_by_pointer(st, rd_active, vmmeter_data.v_active_count);
1046
rrddim_set_by_pointer(st, rd_inactive, vmmeter_data.v_inactive_count);
1047
- rrddim_set_by_pointer(st, rd_wired, vmmeter_data.v_wire_count * system_pagesize - zfs_arcstats_shrinkable_cache_size_bytes);
1047
+ rrddim_set_by_pointer(st, rd_wired, (unsigned long long)vmmeter_data.v_wire_count * (unsigned long long)system_pagesize - zfs_arcstats_shrinkable_cache_size_bytes);
1048
#if __FreeBSD_version < 1200016
1049
- rrddim_set_by_pointer(st, rd_cache, vmmeter_data.v_cache_count * system_pagesize + zfs_arcstats_shrinkable_cache_size_bytes);
1049
+ rrddim_set_by_pointer(st, rd_cache, (unsigned long long)vmmeter_data.v_cache_count * (unsigned long long)system_pagesize + zfs_arcstats_shrinkable_cache_size_bytes);
1050
#else
1051
rrddim_set_by_pointer(st, rd_cache, zfs_arcstats_shrinkable_cache_size_bytes);
1052
#endif
@@ -1077,9 +1077,9 @@ int do_system_ram(int update_every, usec_t dt) {
1077
else rrdset_next(st_mem_available);
1078
1079
#if __FreeBSD_version < 1200016
1080
- rrddim_set_by_pointer(st_mem_available, rd_avail, vmmeter_data.v_inactive_count + vmmeter_data.v_free_count + (vmmeter_data.v_cache_count * system_pagesize + zfs_arcstats_shrinkable_cache_size_bytes));
1080
+ rrddim_set_by_pointer(st_mem_available, rd_avail, vmmeter_data.v_inactive_count + vmmeter_data.v_free_count + vmmeter_data.v_cache_count + zfs_arcstats_shrinkable_cache_size_bytes / system_pagesize);
1081
#else
1082
- rrddim_set_by_pointer(st_mem_available, rd_avail, vmmeter_data.v_inactive_count + vmmeter_data.v_free_count + zfs_arcstats_shrinkable_cache_size_bytes);
1082
+ rrddim_set_by_pointer(st_mem_available, rd_avail, vmmeter_data.v_inactive_count + vmmeter_data.v_free_count + zfs_arcstats_shrinkable_cache_size_bytes / system_pagesize);
1083
#endif
1084
1085
rrdset_done(st_mem_available);