Alternate Channel Storage Backends

Full details: http://s.asterisk.net/dc679ec3

The previous proof-of-concept showed that the cpp_map_name_id alternate
storage backed performed better than all the others so this final PR
adds only that option.  You still need to enable it in menuselect under
the "Alternate Channel Storage Backends" category.

To select which one is used at runtime, set the "channel_storage_backend"
option in asterisk.conf to one of the values described in
asterisk.conf.sample.  The default remains "ao2_legacy".

UpgradeNote: With this release, you can now select an alternate channel
storage backend based on C++ Maps.  Using the new backend may increase
performance and reduce the chances of deadlocks on heavily loaded systems.
For more information, see http://s.asterisk.net/dc679ec3
This commit is contained in:
George Joseph
2024-12-31 11:27:02 -07:00
parent 6657e9766d
commit 1a3d09e345
16 changed files with 2020 additions and 414 deletions

View File

@@ -245,6 +245,7 @@ int daemon(int, int); /* defined in libresolv of all places */
#include "asterisk/utf8.h"
#include "../defaults.h"
#include "channelstorage.h"
/*** DOCUMENTATION
<managerEvent language="en_US" name="FullyBooted">
@@ -578,6 +579,8 @@ static char *handle_show_settings(struct ast_cli_entry *e, int cmd, struct ast_c
ast_cli(a->fd, " RTP dynamic payload types: %u-%u\n",
AST_RTP_PT_FIRST_DYNAMIC, AST_RTP_MAX_PT - 1);
}
ast_cli(a->fd, " Channel storage backend: %s\n",
ast_channel_get_current_storage_driver_name());
ast_cli(a->fd, " Shell on remote consoles: %s\n",
ast_option_disable_remote_console_shell ? "Disabled" : "Enabled");