From 6d091447b179aacc0ee47cd65e8805a774898d1d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 4 Oct 2007 21:35:50 +0000 Subject: [PATCH] add sps count to the status output git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5804 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/include/private/switch_core_pvt.h | 1 + src/include/switch_types.h | 1 + src/mod/applications/mod_commands/mod_commands.c | 8 +++++++- src/softtimer.c | 3 ++- src/switch_core.c | 3 +++ 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/include/private/switch_core_pvt.h b/src/include/private/switch_core_pvt.h index e71f3dd622..3c61fb0d8d 100644 --- a/src/include/private/switch_core_pvt.h +++ b/src/include/private/switch_core_pvt.h @@ -156,6 +156,7 @@ struct switch_runtime { switch_mutex_t *throttle_mutex; uint32_t sps_total; int32_t sps; + int32_t sps_last; switch_log_level_t hard_log_level; }; diff --git a/src/include/switch_types.h b/src/include/switch_types.h index bed0669ac1..2b3be5aaee 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -1008,6 +1008,7 @@ typedef enum { SCSC_CHECK_RUNNING, SCSC_LOGLEVEL, SCSC_SPS, + SCSC_LAST_SPS, SCSC_RECLAIM } switch_session_ctl_t; diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c index 8af5eef69f..021e3f82f3 100644 --- a/src/mod/applications/mod_commands/mod_commands.c +++ b/src/mod/applications/mod_commands/mod_commands.c @@ -44,6 +44,7 @@ SWITCH_STANDARD_API(status_function) uint8_t html = 0; switch_core_time_duration_t duration; char *http = NULL; + int sps, last_sps; if (session) { return SWITCH_STATUS_FALSE; @@ -68,7 +69,9 @@ SWITCH_STANDARD_API(status_function) duration.mms == 1 ? "" : "s"); stream->write_function(stream, "%"SWITCH_SIZE_T_FMT" sessions since startup\n", switch_core_session_id() - 1 ); - stream->write_function(stream, "%d sessions\n", switch_core_session_count()); + switch_core_session_ctl(SCSC_LAST_SPS, &last_sps); + switch_core_session_ctl(SCSC_SPS, &sps); + stream->write_function(stream, "%d session(s) %d/%d\n", switch_core_session_count(), last_sps, sps); if (html) { stream->write_function(stream, "\n"); @@ -130,6 +133,9 @@ SWITCH_STANDARD_API(ctl_function) } switch_core_session_ctl(SCSC_LOGLEVEL, &arg); stream->write_function(stream, "log level: %s [%d]\n", switch_log_level2str(arg), arg); + } else if (!strcasecmp(argv[0], "last_sps")) { + switch_core_session_ctl(SCSC_LAST_SPS, &arg); + stream->write_function(stream, "last sessions per second: %d\n", arg); } else if (!strcasecmp(argv[0], "sps")) { if (argc > 1) { arg = atoi(argv[1]); diff --git a/src/softtimer.c b/src/softtimer.c index a493bd7b2a..bc389ff35e 100644 --- a/src/softtimer.c +++ b/src/softtimer.c @@ -206,7 +206,7 @@ SWITCH_MODULE_RUNTIME_FUNCTION(softtimer_runtime) uint32_t current_ms = 0; uint32_t x, tick = 0; switch_time_t ts = 0; - + memset(&globals, 0, sizeof(globals)); switch_mutex_init(&globals.mutex, SWITCH_MUTEX_NESTED, module_pool); @@ -229,6 +229,7 @@ SWITCH_MODULE_RUNTIME_FUNCTION(softtimer_runtime) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Over Session Rate of %d!\n", runtime.sps_total); } switch_mutex_lock(runtime.throttle_mutex); + runtime.sps_last = runtime.sps_total - runtime.sps; runtime.sps = runtime.sps_total; switch_mutex_unlock(runtime.throttle_mutex); tick = 0; diff --git a/src/switch_core.c b/src/switch_core.c index 4e2a0c9b3f..0fcc499766 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -657,6 +657,9 @@ SWITCH_DECLARE(int32_t) switch_core_session_ctl(switch_session_ctl_t cmd, int32_ } *val = runtime.hard_log_level; break; + case SCSC_LAST_SPS: + *val = runtime.sps_last; + break; case SCSC_SPS: switch_mutex_lock(runtime.throttle_mutex); if (*val > 0) {