cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state \
; sleep 10 ; cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state
2664000 463368
1998000 59724070
2664000 463385
1998000 59725054
The sum of counters change is 1001, which produces reported value near
to 100.1%. I got calculated ds[0] = 100.100053 and such value produces gap on
charts.
Added limit to avoid such.
gauge_t g;
if (value_to_rate(&g, (value_t){.derive = time}, DS_TYPE_DERIVE, now,
&(cpu_data[cpu].time_state[state_index])) == 0) {
+ /*
+ * Due to some inaccuracy reported value can be a bit greatrer than 100.1.
+ * That produces gaps on charts.
+ */
+ if (g > 100.1)
+ g = 100.1;
cpufreq_submit(cpu, "percent", state, &(value_t){.gauge = g});
}
state_index++;