aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/erl_init.c
diff options
context:
space:
mode:
authorRickard Green <[email protected]>2013-06-11 17:30:47 +0200
committerRickard Green <[email protected]>2013-06-11 18:33:38 +0200
commit4c9a66c4ba3bbbd6136f3a284fc1accbc0e9cea2 (patch)
treef6ecb789473b7d15fad43b3c0838d8784a9aaf3b /erts/emulator/beam/erl_init.c
parent9919508b2cc177ec4afdb53bb9d20563973461f8 (diff)
downloadotp-4c9a66c4ba3bbbd6136f3a284fc1accbc0e9cea2.tar.gz
otp-4c9a66c4ba3bbbd6136f3a284fc1accbc0e9cea2.tar.bz2
otp-4c9a66c4ba3bbbd6136f3a284fc1accbc0e9cea2.zip
erts: Add the +sfwi system flag
+sfwi Interval Set scheduler forced wakeup interval. All run queues will be scanned each Interval milliseconds. While there are sleeping schedulers in the system, one scheduler will be woken for each non-empty run queue found. An Interval of zero disables this feature, which also is the default. This feature has been introduced as a temporary workaround for lengthy executing native code, and native code that do not bump reductions properly in OTP. When these bugs have be fixed the +sfwi flag will be removed.
Diffstat (limited to 'erts/emulator/beam/erl_init.c')
-rw-r--r--erts/emulator/beam/erl_init.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/erts/emulator/beam/erl_init.c b/erts/emulator/beam/erl_init.c
index b3a3c3d403..da5aa34ea6 100644
--- a/erts/emulator/beam/erl_init.c
+++ b/erts/emulator/beam/erl_init.c
@@ -1479,6 +1479,22 @@ erl_start(int argc, char **argv)
("suggested scheduler thread stack size %d kilo words\n",
erts_sched_thread_suggested_stack_size));
}
+ else if (has_prefix("fwi", sub_param)) {
+ long val;
+ arg = get_arg(sub_param+3, argv[i+1], &i);
+ errno = 0;
+ val = strtol(arg, NULL, 10);
+ if (errno != 0 || val < 0) {
+ erts_fprintf(stderr,
+ "bad scheduler forced wakeup "
+ "interval %s\n",
+ arg);
+ erts_usage();
+ }
+#ifdef ERTS_SMP
+ erts_runq_supervision_interval = val;
+#endif
+ }
else {
erts_fprintf(stderr, "bad scheduling option %s\n", argv[i]);
erts_usage();