freetdm: fix cpu monitor inconsistent messages, variable names etc

changed parameter name from cpu_reset_alarm_threshold to cpu_clear_alarm_threshold
         (old parameter name still valid for backwards compatibility in configuration files)
This commit is contained in:
Moises Silva 2011-12-01 12:13:12 -05:00
parent 16c2da1369
commit 3432dccfc2
2 changed files with 31 additions and 22 deletions

View File

@ -13,7 +13,7 @@ cpu_monitoring_interval => 1000
cpu_set_alarm_threshold => 80 cpu_set_alarm_threshold => 80
; At what CPU percentage stop the CPU alarm ; At what CPU percentage stop the CPU alarm
cpu_reset_alarm_threshold => 70 cpu_clear_alarm_threshold => 70
; Which action to take when the CPU alarm is raised ; Which action to take when the CPU alarm is raised
; it can be warn and/or reject calls ; it can be warn and/or reject calls

View File

@ -223,7 +223,7 @@ typedef struct {
uint32_t interval; uint32_t interval;
uint8_t alarm_action_flags; uint8_t alarm_action_flags;
uint8_t set_alarm_threshold; uint8_t set_alarm_threshold;
uint8_t reset_alarm_threshold; uint8_t clear_alarm_threshold;
ftdm_interrupt_t *interrupt; ftdm_interrupt_t *interrupt;
} cpu_monitor_t; } cpu_monitor_t;
@ -4834,14 +4834,15 @@ static ftdm_status_t load_config(void)
} else { } else {
ftdm_log(FTDM_LOG_ERROR, "Invalid cpu alarm set threshold %s\n", val); ftdm_log(FTDM_LOG_ERROR, "Invalid cpu alarm set threshold %s\n", val);
} }
} else if (!strncasecmp(var, "cpu_reset_alarm_threshold", sizeof("cpu_reset_alarm_threshold")-1)) { } else if (!strncasecmp(var, "cpu_reset_alarm_threshold", sizeof("cpu_reset_alarm_threshold")-1) ||
!strncasecmp(var, "cpu_clear_alarm_threshold", sizeof("cpu_clear_alarm_threshold")-1)) {
intparam = atoi(val); intparam = atoi(val);
if (intparam > 0 && intparam < 100) { if (intparam > 0 && intparam < 100) {
globals.cpu_monitor.reset_alarm_threshold = (uint8_t)intparam; globals.cpu_monitor.clear_alarm_threshold = (uint8_t)intparam;
if (globals.cpu_monitor.reset_alarm_threshold > globals.cpu_monitor.set_alarm_threshold) { if (globals.cpu_monitor.clear_alarm_threshold > globals.cpu_monitor.set_alarm_threshold) {
globals.cpu_monitor.reset_alarm_threshold = globals.cpu_monitor.set_alarm_threshold - 10; globals.cpu_monitor.clear_alarm_threshold = globals.cpu_monitor.set_alarm_threshold - 10;
ftdm_log(FTDM_LOG_ERROR, "Cpu alarm reset threshold must be lower than set threshold" ftdm_log(FTDM_LOG_ERROR, "Cpu alarm clear threshold must be lower than set threshold, "
", setting threshold to %d\n", globals.cpu_monitor.reset_alarm_threshold); "setting clear threshold to %d\n", globals.cpu_monitor.clear_alarm_threshold);
} }
} else { } else {
ftdm_log(FTDM_LOG_ERROR, "Invalid cpu alarm reset threshold %s\n", val); ftdm_log(FTDM_LOG_ERROR, "Invalid cpu alarm reset threshold %s\n", val);
@ -5581,28 +5582,32 @@ static void *ftdm_cpu_monitor_run(ftdm_thread_t *me, void *obj)
{ {
cpu_monitor_t *monitor = (cpu_monitor_t *)obj; cpu_monitor_t *monitor = (cpu_monitor_t *)obj;
struct ftdm_cpu_monitor_stats *cpu_stats = ftdm_new_cpu_monitor(); struct ftdm_cpu_monitor_stats *cpu_stats = ftdm_new_cpu_monitor();
ftdm_log(FTDM_LOG_DEBUG, "CPU monitor thread is now running\n");
if (!cpu_stats) { if (!cpu_stats) {
return NULL; goto done;
} }
monitor->running = 1; monitor->running = 1;
while(ftdm_running()) { while (ftdm_running()) {
double time; double idle_time = 0.0;
if (ftdm_cpu_get_system_idle_time(cpu_stats, &time)) { int cpu_usage = 0;
if (ftdm_cpu_get_system_idle_time(cpu_stats, &idle_time)) {
break; break;
} }
cpu_usage = (int)(100 - idle_time);
if (monitor->alarm) { if (monitor->alarm) {
if ((int)time >= (100 - monitor->set_alarm_threshold)) { if (cpu_usage <= monitor->clear_alarm_threshold) {
ftdm_log(FTDM_LOG_DEBUG, "CPU alarm is OFF (cpu usage:%d)\n", (int) (100-time)); ftdm_log(FTDM_LOG_DEBUG, "CPU alarm is now OFF (cpu usage: %d)\n", cpu_usage);
monitor->alarm = 0; monitor->alarm = 0;
} } else if (monitor->alarm_action_flags & FTDM_CPU_ALARM_ACTION_WARN) {
if (monitor->alarm && (monitor->alarm_action_flags & FTDM_CPU_ALARM_ACTION_WARN)) { ftdm_log(FTDM_LOG_WARNING, "CPU alarm is still ON (cpu usage: %d)\n", cpu_usage);
ftdm_log(FTDM_LOG_WARNING, "CPU alarm is ON (cpu usage:%d)\n", (int) (100-time));
} }
} else { } else {
if ((int)time <= (100-monitor->reset_alarm_threshold)) { if (cpu_usage >= monitor->set_alarm_threshold) {
ftdm_log(FTDM_LOG_DEBUG, "CPU alarm is ON (cpu usage:%d)\n", (int) (100-time)); ftdm_log(FTDM_LOG_WARNING, "CPU alarm is now ON (cpu usage: %d)\n", cpu_usage);
monitor->alarm = 1; monitor->alarm = 1;
} }
} }
@ -5611,7 +5616,11 @@ static void *ftdm_cpu_monitor_run(ftdm_thread_t *me, void *obj)
ftdm_delete_cpu_monitor(cpu_stats); ftdm_delete_cpu_monitor(cpu_stats);
monitor->running = 0; monitor->running = 0;
done:
ftdm_log(FTDM_LOG_DEBUG, "CPU monitor thread is now terminating\n");
return NULL; return NULL;
#ifdef __WINDOWS__ #ifdef __WINDOWS__
UNREFERENCED_PARAMETER(me); UNREFERENCED_PARAMETER(me);
#endif #endif
@ -5714,7 +5723,7 @@ FT_DECLARE(ftdm_status_t) ftdm_global_configuration(void)
globals.cpu_monitor.interval = 1000; globals.cpu_monitor.interval = 1000;
globals.cpu_monitor.alarm_action_flags = 0; globals.cpu_monitor.alarm_action_flags = 0;
globals.cpu_monitor.set_alarm_threshold = 80; globals.cpu_monitor.set_alarm_threshold = 80;
globals.cpu_monitor.reset_alarm_threshold = 70; globals.cpu_monitor.clear_alarm_threshold = 70;
if (load_config() != FTDM_SUCCESS) { if (load_config() != FTDM_SUCCESS) {
globals.running = 0; globals.running = 0;
@ -5723,10 +5732,10 @@ FT_DECLARE(ftdm_status_t) ftdm_global_configuration(void)
} }
if (globals.cpu_monitor.enabled) { if (globals.cpu_monitor.enabled) {
ftdm_log(FTDM_LOG_INFO, "CPU Monitor is running interval:%d lo-thres:%d hi-thres:%d\n", ftdm_log(FTDM_LOG_INFO, "CPU Monitor is running interval:%d set-thres:%d clear-thres:%d\n",
globals.cpu_monitor.interval, globals.cpu_monitor.interval,
globals.cpu_monitor.set_alarm_threshold, globals.cpu_monitor.set_alarm_threshold,
globals.cpu_monitor.reset_alarm_threshold); globals.cpu_monitor.clear_alarm_threshold);
if (ftdm_cpu_monitor_start() != FTDM_SUCCESS) { if (ftdm_cpu_monitor_start() != FTDM_SUCCESS) {
return FTDM_FAIL; return FTDM_FAIL;