@cryptotaxi247 / netdata-1 / commits / c77539436

Correctly track last num vcpus in xenstat_plugin (#8720)

Rushikesh Jadhav committed May 26, 2020 at 01:33 UTC c77539436203fd2646a9ac4de7f51d58a9cd4ea1
1 file changed +8 -6
collectors/xenstat.plugin/xenstat_plugin.c
+8 -6
@@ -137,6 +137,7 @@ struct domain_metrics {
137 unsigned int shutdown;
138 unsigned int crashed;
139 unsigned int dying;
140 + unsigned int cur_vcpus;
141
142 unsigned long long cpu_ns;
143 unsigned long long cur_mem;
@@ -247,23 +248,18 @@ static struct domain_metrics *domain_metrics_free(struct domain_metrics *d) {
248 }
249
250 static int vcpu_metrics_collect(struct domain_metrics *d, xenstat_domain *domain) {
250 - static unsigned int last_num_vcpus = 0;
251 unsigned int num_vcpus = 0;
252 xenstat_vcpu *vcpu = NULL;
253 struct vcpu_metrics *vcpu_m = NULL, *last_vcpu_m = NULL;
254
255 num_vcpus = xenstat_domain_num_vcpus(domain);
256 - if(unlikely(num_vcpus != last_num_vcpus)) {
257 - d->num_vcpus_changed = 1;
258 - last_num_vcpus = num_vcpus;
259 - }
256
257 for(vcpu_m = d->vcpu_root; vcpu_m ; vcpu_m = vcpu_m->next)
258 vcpu_m->updated = 0;
259
260 vcpu_m = d->vcpu_root;
261
266 - unsigned int i;
262 + unsigned int i, num_online_vcpus=0;
263 for(i = 0; i < num_vcpus; i++) {
264 if(unlikely(!vcpu_m)) {
265 vcpu_m = callocz(1, sizeof(struct vcpu_metrics));
@@ -282,6 +278,7 @@ static int vcpu_metrics_collect(struct domain_metrics *d, xenstat_domain *domain
278 }
279
280 vcpu_m->online = xenstat_vcpu_online(vcpu);
281 + if(likely(vcpu_m->online)) { num_online_vcpus++; }
282 vcpu_m->ns = xenstat_vcpu_ns(vcpu);
283
284 vcpu_m->updated = 1;
@@ -290,6 +287,11 @@ static int vcpu_metrics_collect(struct domain_metrics *d, xenstat_domain *domain
287 vcpu_m = vcpu_m->next;
288 }
289
290 + if(unlikely(num_online_vcpus != d->cur_vcpus)) {
291 + d->num_vcpus_changed = 1;
292 + d->cur_vcpus = num_online_vcpus;
293 + }
294 +
295 return 0;
296 }
297