taskprocessor: Enable subsystems and overload by subsystem
To prevent one subsystem's taskprocessors from causing others to stall, new capabilities have been added to taskprocessors. * Any taskprocessor name that has a '/' will have the part before the '/' saved as its "subsystem". Examples: "sorcery/acl-0000006a" and "sorcery/aor-00000019" will be grouped to subsystem "sorcery". "pjsip/distributor-00000025" and "pjsip/distributor-00000026" will bn grouped to subsystem "pjsip". Taskprocessors with no '/' have an empty subsystem. * When a taskprocessor enters high-water alert status and it has a non-empty subsystem, the subsystem alert count will be incremented. * When a taskprocessor leaves high-water alert status and it has a non-empty subsystem, the subsystem alert count will be decremented. * A new api ast_taskprocessor_get_subsystem_alert() has been added that returns the number of taskprocessors in alert for the subsystem. * A new CLI command "core show taskprocessor alerted subsystems" has been added. * A new unit test was addded. REMINDER: The taskprocessor code itself doesn't take any action based on high-water alerts or overloading. It's up to taskprocessor users to check and take action themselves. Currently only the pjsip distributor does this. * A new pjsip/global option "taskprocessor_overload_trigger" has been added that allows the user to select the trigger mechanism the distributor uses to pause accepting new requests. "none": Don't pause on any overload condition. "global": Pause on ANY taskprocessor overload (the default and current behavior) "pjsip_only": Pause only on pjsip taskprocessor overloads. * The core pjsip pool was renamed from "SIP" to "pjsip" so it can be properly grouped into the "pjsip" subsystem. * stasis taskprocessor names were changed to "stasis" as the subsystem. * Sorcery core taskprocessor names were changed to "sorcery" to match the object taskprocessors. Change-Id: I8c19068bb2fc26610a9f0b8624bdf577a04fcd56
Showing
- CHANGES 9 additions, 0 deletionsCHANGES
- configs/samples/pjsip.conf.sample 11 additions, 0 deletionsconfigs/samples/pjsip.conf.sample
- contrib/ast-db-manage/config/versions/f3c0b8695b66_taskprocessor_overload_trigger.py 42 additions, 0 deletions...g/versions/f3c0b8695b66_taskprocessor_overload_trigger.py
- include/asterisk/taskprocessor.h 13 additions, 0 deletionsinclude/asterisk/taskprocessor.h
- main/sorcery.c 1 addition, 1 deletionmain/sorcery.c
- main/stasis.c 2 additions, 2 deletionsmain/stasis.c
- main/taskprocessor.c 198 additions, 3 deletionsmain/taskprocessor.c
- main/threadpool.c 5 additions, 2 deletionsmain/threadpool.c
- res/res_pjsip.c 21 additions, 1 deletionres/res_pjsip.c
- res/res_pjsip/config_global.c 58 additions, 0 deletionsres/res_pjsip/config_global.c
- res/res_pjsip/include/res_pjsip_private.h 10 additions, 0 deletionsres/res_pjsip/include/res_pjsip_private.h
- res/res_pjsip/pjsip_distributor.c 7 additions, 1 deletionres/res_pjsip/pjsip_distributor.c
- tests/test_taskprocessor.c 146 additions, 0 deletionstests/test_taskprocessor.c
Loading
Please register or sign in to comment