From a675393bb778b2e2ac4b726be56f6a75ea6de88c Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 15 Aug 2006 17:52:12 +0000 Subject: [PATCH] performance tweaks git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@2298 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/include/switch_types.h | 2 +- src/switch.c | 2 ++ src/switch_core.c | 5 +++-- src/switch_log.c | 33 +++++++++++++++++---------------- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/include/switch_types.h b/src/include/switch_types.h index af6fdba253..46d5fc61d3 100644 --- a/src/include/switch_types.h +++ b/src/include/switch_types.h @@ -86,7 +86,7 @@ struct switch_directories { typedef struct switch_directories switch_directories; SWITCH_DECLARE_DATA extern switch_directories SWITCH_GLOBAL_dirs; -#define SWITCH_THREAD_STACKSIZE 512 * 1024 +#define SWITCH_THREAD_STACKSIZE 384 * 1024 #define SWITCH_RECCOMMENDED_BUFFER_SIZE 2048 #define SWITCH_MAX_CODECS 30 #define SWITCH_MAX_STATE_HANDLERS 30 diff --git a/src/switch.c b/src/switch.c index 51cac5af3a..3c07f8722e 100644 --- a/src/switch.c +++ b/src/switch.c @@ -225,5 +225,7 @@ int main(int argc, char *argv[]) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Tearing down environment.\n"); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Exiting Now.\n"); switch_core_destroy(); + + return 0; } diff --git a/src/switch_core.c b/src/switch_core.c index 9391098bea..744f3e3bb4 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -3118,7 +3118,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_destroy(void) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Closing Event Engine.\n"); switch_event_shutdown(); - switch_log_shutdown(); + switch_queue_push(runtime.sql_queue, NULL); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Waiting for unfinished SQL transactions\n"); @@ -3128,7 +3128,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_destroy(void) switch_core_db_close(runtime.db); switch_core_db_close(runtime.event_db); switch_xml_destroy(); - + switch_log_shutdown(); + switch_yield(10000); if (runtime.memory_pool) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Unallocating memory pool.\n"); apr_pool_destroy(runtime.memory_pool); diff --git a/src/switch_log.c b/src/switch_log.c index 0938ff8e8a..9490e7d398 100644 --- a/src/switch_log.c +++ b/src/switch_log.c @@ -118,7 +118,7 @@ static void *SWITCH_THREAD_FUNC log_thread(switch_thread_t *thread, void *obj) assert(obj == NULL || obj != NULL); THREAD_RUNNING = 1; - for(;;) { + while(LOG_QUEUE) { void *pop = NULL; switch_log_node_t *node = NULL; switch_log_binding_t *binding; @@ -128,6 +128,7 @@ static void *SWITCH_THREAD_FUNC log_thread(switch_thread_t *thread, void *obj) } if (!pop) { + LOG_QUEUE = NULL; break; } @@ -222,23 +223,23 @@ SWITCH_DECLARE(void) switch_log_printf(switch_text_channel_t channel, char *file switch_event_fire(&event); } } else { - if (level == SWITCH_LOG_CONSOLE || !THREAD_RUNNING) { + if (level == SWITCH_LOG_CONSOLE || !LOG_QUEUE || !THREAD_RUNNING) { fprintf(handle, data); - } - - if (level <= MAX_LEVEL) { - switch_log_node_t *node = malloc(sizeof(*node)); - node->data = data; - node->file = strdup(filep); - node->func = strdup(func); - node->line = line; - node->level = level; - node->content = content; - node->timestamp = now; - switch_queue_push(LOG_QUEUE, node); - } else { free(data); - } + } else if (level <= MAX_LEVEL) { + switch_log_node_t *node; + + if ((node = malloc(sizeof(*node)))) { + node->data = data; + node->file = strdup(filep); + node->func = strdup(func); + node->line = line; + node->level = level; + node->content = content; + node->timestamp = now; + switch_queue_push(LOG_QUEUE, node); + } + } } }