X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=src%2Ffreebsd_sysctl.c;h=d24407827f0dfeb312851c8373c9ec6659c8a1cf;hb=bb22adc2c47d51c8e0f8ad7c7a95c66e9e53760b;hp=174be91f69851a3187128ac4447addcb2e7e26bf;hpb=8af280907530e1bcfffd4c8ed38fb311de64f0ab;p=netdata.git diff --git a/src/freebsd_sysctl.c b/src/freebsd_sysctl.c index 174be91f..d2440782 100644 --- a/src/freebsd_sysctl.c +++ b/src/freebsd_sysctl.c @@ -326,8 +326,13 @@ int do_kern_cp_times(int update_every, usec_t dt) { RRDDIM *rd_interrupt; RRDDIM *rd_idle; } *all_cpu_charts = NULL; + static int old_number_of_cpus = 0; - all_cpu_charts = reallocz(all_cpu_charts, sizeof(struct cpu_chart) * number_of_cpus); + if(unlikely(number_of_cpus > old_number_of_cpus)) { + all_cpu_charts = reallocz(all_cpu_charts, sizeof(struct cpu_chart) * number_of_cpus); + memset(&all_cpu_charts[old_number_of_cpus], 0, sizeof(struct softnet_chart) * (number_of_cpus - old_number_of_cpus)); + old_number_of_cpus = number_of_cpus; + } for (i = 0; i < number_of_cpus; i++) { if (unlikely(!all_cpu_charts[i].st)) { @@ -1277,7 +1282,7 @@ int do_net_isr(int update_every, usec_t dt) { return 1; } else { netisr_stats = reallocz(netisr_stats, (number_of_cpus + 1) * sizeof(struct netisr_stats)); - bzero(netisr_stats, (number_of_cpus + 1) * sizeof(struct netisr_stats)); + memset(netisr_stats, 0, (number_of_cpus + 1) * sizeof(struct netisr_stats)); for (i = 0; i < num_netisr_workstreams; i++) { for (n = 0; n < num_netisr_works; n++) { if (netisr_workstream[i].snws_wsid == netisr_work[n].snw_wsid) { @@ -1344,8 +1349,13 @@ int do_net_isr(int update_every, usec_t dt) { RRDDIM *rd_qdrops; RRDDIM *rd_queued; } *all_softnet_charts = NULL; + static int old_number_of_cpus = 0; - all_softnet_charts = reallocz(all_softnet_charts, sizeof(struct softnet_chart) * number_of_cpus); + if(unlikely(number_of_cpus > old_number_of_cpus)) { + all_softnet_charts = reallocz(all_softnet_charts, sizeof(struct softnet_chart) * number_of_cpus); + memset(&all_softnet_charts[old_number_of_cpus], 0, sizeof(struct softnet_chart) * (number_of_cpus - old_number_of_cpus)); + old_number_of_cpus = number_of_cpus; + } for (i = 0; i < number_of_cpus ;i++) { snprintfz(all_softnet_charts[i].netisr_cpuid, MAX_INT_DIGITS + 17, "cpu%d_softnet_stat", i); @@ -3458,7 +3468,7 @@ int do_kern_devstat(int update_every, usec_t dt) { dstat = devstat_data + sizeof(long); // skip generation number for (i = 0; i < numdevs; i++) { - if (unlikely(!do_system_io)) { + if (likely(do_system_io)) { if (((dstat[i].device_type & DEVSTAT_TYPE_MASK) == DEVSTAT_TYPE_DIRECT) || ((dstat[i].device_type & DEVSTAT_TYPE_MASK) == DEVSTAT_TYPE_STORARRAY)) { total_disk_kbytes_read += dstat[i].bytes[DEVSTAT_READ] / KILO_FACTOR; total_disk_kbytes_write += dstat[i].bytes[DEVSTAT_WRITE] / KILO_FACTOR; @@ -3864,11 +3874,10 @@ int do_kern_devstat(int update_every, usec_t dt) { // -------------------------------------------------------------------- - if (unlikely(!do_system_io)) { + if (likely(do_system_io)) { static RRDSET *st = NULL; static RRDDIM *rd_in = NULL, *rd_out = NULL; - st = rrdset_find_bytype_localhost("system", "io"); if (unlikely(!st)) { st = rrdset_create_localhost("system", "io",