runtime.running = 1;
runtime.tipping_point = 1000000;
+ runtime.timer_affinity = -1;
runtime.initiated = switch_time_now();
-
+
switch_scheduler_add_task(switch_epoch_time_now(NULL), heartbeat_callback, "heartbeat", "core", 0, NULL, SSHF_NONE | SSHF_NO_DEL);
switch_uuid_get(&uuid);
switch_core_session_limit(atoi(val));
} else if (!strcasecmp(var, "tipping-point") && !zstr(val)) {
runtime.tipping_point = atoi(val);
+ } else if (!strcasecmp(var, "timer-affinity") && !zstr(val)) {
+ if (!strcasecmp(val, "disabled")) {
+ runtime.timer_affinity = -1;
+ } else {
+ runtime.timer_affinity = atoi(val);
+ }
} else if (!strcasecmp(var, "rtp-start-port") && !zstr(val)) {
switch_rtp_set_start_port((switch_port_t) atoi(val));
} else if (!strcasecmp(var, "rtp-end-port") && !zstr(val)) {
SWITCH_DECLARE(void) switch_cond_next(void)
{
- if (session_manager.session_count > 1000) {
+ if (session_manager.session_count > runtime.tipping_point) {
os_yield();
return;
}
int fwd_errs = 0, rev_errs = 0;
#ifdef HAVE_CPU_SET_MACROS
- cpu_set_t set;
- CPU_ZERO(&set);
- CPU_SET(0, &set);
- sched_setaffinity(0, sizeof(set), &set);
+ if (runtime.timer_affinity > -1) {
+ cpu_set_t set;
+ CPU_ZERO(&set);
+ CPU_SET(0, &set);
+ sched_setaffinity(runtime.timer_affinity, sizeof(set), &set);
+ }
#endif
switch_time_sync();