likely/unlikely optimization for statsd flushes
Costa Tsaousis (ktsaou) committed
Apr 16, 2018 at 18:06 UTC
21b6ddd57a8feb5461ff8af49b4204692c0d4eba
1 file changed
+9
-9
src/statsd.c
+9
-9
@@ -1649,14 +1649,14 @@ static inline void statsd_flush_gauge(STATSD_METRIC *m) {
1649
debug(D_STATSD, "flushing gauge metric '%s'", m->name);
1650
1651
int updated = 0;
1652
- if(m->count && !m->reset) {
1652
+ if(unlikely(!m->reset && m->count)) {
1653
m->last = (collected_number) (m->gauge.value * statsd.decimal_detail);
1654
1655
m->reset = 1;
1656
updated = 1;
1657
}
1658
1659
- if(m->options & STATSD_METRIC_OPTION_PRIVATE_CHART_ENABLED && (updated || !(m->options & STATSD_METRIC_OPTION_SHOW_GAPS_WHEN_NOT_COLLECTED)))
1659
+ if(unlikely(m->options & STATSD_METRIC_OPTION_PRIVATE_CHART_ENABLED && (updated || !(m->options & STATSD_METRIC_OPTION_SHOW_GAPS_WHEN_NOT_COLLECTED))))
1660
statsd_private_chart_gauge(m);
1661
}
1662
@@ -1664,14 +1664,14 @@ static inline void statsd_flush_counter_or_meter(STATSD_METRIC *m, const char *d
1664
debug(D_STATSD, "flushing %s metric '%s'", dim, m->name);
1665
1666
int updated = 0;
1667
- if(m->count && !m->reset) {
1667
+ if(unlikely(!m->reset && m->count)) {
1668
m->last = m->counter.value;
1669
1670
m->reset = 1;
1671
updated = 1;
1672
}
1673
1674
- if(m->options & STATSD_METRIC_OPTION_PRIVATE_CHART_ENABLED && (updated || !(m->options & STATSD_METRIC_OPTION_SHOW_GAPS_WHEN_NOT_COLLECTED)))
1674
+ if(unlikely(m->options & STATSD_METRIC_OPTION_PRIVATE_CHART_ENABLED && (updated || !(m->options & STATSD_METRIC_OPTION_SHOW_GAPS_WHEN_NOT_COLLECTED))))
1675
statsd_private_chart_counter_or_meter(m, dim, family);
1676
}
1677
@@ -1687,14 +1687,14 @@ static inline void statsd_flush_set(STATSD_METRIC *m) {
1687
debug(D_STATSD, "flushing set metric '%s'", m->name);
1688
1689
int updated = 0;
1690
- if(m->count && !m->reset) {
1690
+ if(unlikely(!m->reset && m->count)) {
1691
m->last = (collected_number)m->set.unique;
1692
1693
m->reset = 1;
1694
updated = 1;
1695
}
1696
1697
- if(m->options & STATSD_METRIC_OPTION_PRIVATE_CHART_ENABLED && (updated || !(m->options & STATSD_METRIC_OPTION_SHOW_GAPS_WHEN_NOT_COLLECTED)))
1697
+ if(unlikely(m->options & STATSD_METRIC_OPTION_PRIVATE_CHART_ENABLED && (updated || !(m->options & STATSD_METRIC_OPTION_SHOW_GAPS_WHEN_NOT_COLLECTED))))
1698
statsd_private_chart_set(m);
1699
}
1700
@@ -1720,7 +1720,7 @@ static inline void statsd_flush_timer_or_histogram(STATSD_METRIC *m, const char
1720
}
1721
1722
int updated = 0;
1723
- if(m->count && !m->reset && m->histogram.ext->used > 0) {
1723
+ if(unlikely(!m->reset && m->count && m->histogram.ext->used > 0)) {
1724
size_t len = m->histogram.ext->used;
1725
LONG_DOUBLE *series = m->histogram.ext->values;
1726
sort_series(series, len);
@@ -1746,7 +1746,7 @@ static inline void statsd_flush_timer_or_histogram(STATSD_METRIC *m, const char
1746
updated = 1;
1747
}
1748
1749
- if(m->options & STATSD_METRIC_OPTION_PRIVATE_CHART_ENABLED && (updated || !(m->options & STATSD_METRIC_OPTION_SHOW_GAPS_WHEN_NOT_COLLECTED)))
1749
+ if(unlikely(m->options & STATSD_METRIC_OPTION_PRIVATE_CHART_ENABLED && (updated || !(m->options & STATSD_METRIC_OPTION_SHOW_GAPS_WHEN_NOT_COLLECTED))))
1750
statsd_private_chart_timer_or_histogram(m, dim, family, units);
1751
1752
netdata_mutex_unlock(&m->histogram.ext->mutex);
@@ -2051,7 +2051,7 @@ static inline void statsd_flush_index_metrics(STATSD_INDEX *index, void (*flush_
2051
}
2052
2053
if(unlikely(!(m->options & STATSD_METRIC_OPTION_PRIVATE_CHART_CHECKED))) {
2054
- if(statsd.private_charts >= statsd.max_private_charts_hard) {
2054
+ if(unlikely(statsd.private_charts >= statsd.max_private_charts_hard)) {
2055
debug(D_STATSD, "STATSD: metric '%s' will not be charted, because the hard limit of the maximum number of charts has been reached.", m->name);
2056
info("STATSD: metric '%s' will not be charted, because the hard limit of the maximum number of charts (%zu) has been reached. Increase the number of charts by editing netdata.conf, [statsd] section.", m->name, statsd.max_private_charts);
2057
m->options &= ~STATSD_METRIC_OPTION_PRIVATE_CHART_ENABLED;