I just upgraded from collectd-5.4.2 to 5.5.0 on my mac and the cpu plugin
stopped working. The error in the log was "cpu plugin: processor_info returned
only 4 elements..”.
The complaint is correct, osx only reports 4 cpu states: user, nice, system and
idle. Version 5.4.2 correctly handles this, but 5.5.0 is broken.
The code in cpu.c is incorrectly expecting the processor_info system call to
return the wrong number of states (COLLECTD_CPU_STATE_MAX vs CPU_STATE_MAX).
It’s also expecting the indexes into the array to match it’s internal indexes
(COLLECTD_CPU_STATE_USER vs CPU_STATE_USER, COLLECTD_CPU_STATE_NICE vs
CPU_STATE_NICE, etc.).
I’ve made the following changes to make it work on osx, but I’m not sure if
this breaks it on any other platform:
*** collectd-5.5.0.orig/src/cpu.c Tue Mar 10 10:14:45 2015
--- collectd-5.5.0/src/cpu.c Fri May 29 11:04:56 2015
***************
*** 582,597 ****
continue;
}
! if (cpu_info_len < COLLECTD_CPU_STATE_MAX)
{
ERROR ("cpu plugin: processor_info returned only %i
elements..", cpu_info_len);
continue;
}
! cpu_stage (cpu, COLLECTD_CPU_STATE_USER, (derive_t)
cpu_info.cpu_ticks[COLLECTD_CPU_STATE_USER], now);
! cpu_stage (cpu, COLLECTD_CPU_STATE_NICE, (derive_t)
cpu_info.cpu_ticks[COLLECTD_CPU_STATE_NICE], now);
! cpu_stage (cpu, COLLECTD_CPU_STATE_SYSTEM, (derive_t)
cpu_info.cpu_ticks[COLLECTD_CPU_STATE_SYSTEM], now);
! cpu_stage (cpu, COLLECTD_CPU_STATE_IDLE, (derive_t)
cpu_info.cpu_ticks[COLLECTD_CPU_STATE_IDLE], now);
}
/* }}} #endif PROCESSOR_CPU_LOAD_INFO */
--- 582,597 ----
continue;
}
! if (cpu_info_len < CPU_STATE_MAX)
{
ERROR ("cpu plugin: processor_info returned only %i
elements..", cpu_info_len);
continue;
}
! cpu_stage (cpu, COLLECTD_CPU_STATE_USER, (derive_t)
cpu_info.cpu_ticks[CPU_STATE_USER], now);
! cpu_stage (cpu, COLLECTD_CPU_STATE_NICE, (derive_t)
cpu_info.cpu_ticks[CPU_STATE_NICE], now);
! cpu_stage (cpu, COLLECTD_CPU_STATE_SYSTEM, (derive_t)
cpu_info.cpu_ticks[CPU_STATE_SYSTEM], now);
! cpu_stage (cpu, COLLECTD_CPU_STATE_IDLE, (derive_t)
cpu_info.cpu_ticks[CPU_STATE_IDLE], now);
}
/* }}} #endif PROCESSOR_CPU_LOAD_INFO */
_______________________________________________
collectd mailing list
[email protected]
http://mailman.verplant.org/listinfo/collectd