memset(u, 0, sizeof(*u));
}
-static gauge_t usage_global_rate(usage_t *u, state_t state) {
- usage_finalize(u);
-
- return u->global[state].has_rate ? u->global[state].rate : NAN;
-}
-
static gauge_t usage_rate(usage_t *u, size_t cpu, state_t state) {
usage_finalize(u);
+ usage_state_t us;
if (cpu == CPU_ALL) {
- return usage_global_rate(u, state);
- }
-
- size_t index = (cpu * STATE_MAX) + state;
- if (index >= u->states_num) {
- return NAN;
+ us = u->global[state];
+ } else {
+ size_t index = (cpu * STATE_MAX) + state;
+ if (index >= u->states_num) {
+ return -1;
+ }
+ us = u->states[index];
}
- usage_state_t us = u->states[index];
return us.has_rate ? us.rate : NAN;
}
usage_finalize(u);
gauge_t global_rate =
- usage_global_rate(u, STATE_ACTIVE) + usage_global_rate(u, STATE_IDLE);
+ usage_rate(u, CPU_ALL, STATE_ACTIVE) + usage_rate(u, CPU_ALL, STATE_IDLE);
return usage_rate(u, cpu, state) / global_rate;
}
return ret;
}
-DEF_TEST(usage_global_rate) {
+DEF_TEST(usage_rate_CPU_ALL) {
usage_t usage = {0};
cdtime_t t0 = TIME_T_TO_CDTIME_T(100);
// Unable to calculate a rate with a single data point.
EXPECT_EQ_DOUBLE(NAN, usage_rate(&usage, 0, STATE_USER));
EXPECT_EQ_DOUBLE(NAN, usage_rate(&usage, 1, STATE_USER));
- EXPECT_EQ_DOUBLE(NAN, usage_global_rate(&usage, STATE_USER));
- EXPECT_EQ_DOUBLE(NAN, usage_global_rate(&usage, STATE_ACTIVE));
+ EXPECT_EQ_DOUBLE(NAN, usage_rate(&usage, CPU_ALL, STATE_USER));
+ EXPECT_EQ_DOUBLE(NAN, usage_rate(&usage, CPU_ALL, STATE_ACTIVE));
cdtime_t t1 = t0 + TIME_T_TO_CDTIME_T(10);
derive_t cpu0_t1 = cpu0_t0 + 300;
EXPECT_EQ_DOUBLE(want_cpu0_rate, usage_rate(&usage, 0, STATE_USER));
EXPECT_EQ_DOUBLE(want_cpu1_rate, usage_rate(&usage, 1, STATE_USER));
- EXPECT_EQ_DOUBLE(want_global_rate, usage_global_rate(&usage, STATE_USER));
- EXPECT_EQ_DOUBLE(want_global_rate, usage_global_rate(&usage, STATE_ACTIVE));
+ EXPECT_EQ_DOUBLE(want_global_rate, usage_rate(&usage, CPU_ALL, STATE_USER));
+ EXPECT_EQ_DOUBLE(want_global_rate, usage_rate(&usage, CPU_ALL, STATE_ACTIVE));
usage_reset(&usage);
return 0;
RUN_TEST(usage_rate);
RUN_TEST(usage_ratio);
RUN_TEST(usage_count);
- RUN_TEST(usage_global_rate);
+ RUN_TEST(usage_rate_CPU_ALL);
END_TEST;
}