529
539
erts_fprintf(stderr, "-l turn on auto load tracing\n");
531
541
erts_fprintf(stderr, "-M<X> <Y> memory allocator switches,\n");
532
erts_fprintf(stderr, " see the erts_alloc(3) man page for more info.\n");
542
erts_fprintf(stderr, " see the erts_alloc(3) documentation for more info.\n");
534
544
erts_fprintf(stderr, "-P number set maximum number of processes on this node,\n");
535
545
erts_fprintf(stderr, " valid range is [%d-%d]\n",
539
549
ERTS_MIN_COMPAT_REL, this_rel_num());
541
551
erts_fprintf(stderr, "-r force ets memory block to be moved on realloc\n");
542
erts_fprintf(stderr, "-s <opt> set scheduling option, valid options are:\n");
543
erts_fprintf(stderr, " [srq|mrq]\n");
552
erts_fprintf(stderr, "-sbt type set scheduler bind type, valid types are:\n");
553
erts_fprintf(stderr, " u|ns|ts|ps|nnts|nnps|tnnps|db\n");
554
erts_fprintf(stderr, "-sct cput set cpu topology,\n");
555
erts_fprintf(stderr, " see the erl(1) documentation for more info.\n");
544
556
erts_fprintf(stderr, "-S n1:n2 set number of schedulers (n1), and number of\n");
545
557
erts_fprintf(stderr, " schedulers online (n2), valid range for both\n");
546
558
erts_fprintf(stderr, " numbers are [1-%d]\n",
969
982
(void) get_arg(argv[i]+2, argv[i+1], &i);
973
arg = get_arg(argv[i]+2, argv[i+1], &i);
974
if (sys_strcmp("mrq", arg) == 0)
988
char *sub_param = argv[i]+2;
989
if (has_prefix("bt", sub_param)) {
990
arg = get_arg(sub_param+2, argv[i+1], &i);
991
res = erts_init_scheduler_bind_type(arg);
992
if (res != ERTS_INIT_SCHED_BIND_TYPE_SUCCESS) {
994
case ERTS_INIT_SCHED_BIND_TYPE_NOT_SUPPORTED:
995
estr = "not supported";
997
case ERTS_INIT_SCHED_BIND_TYPE_ERROR_NO_CPU_TOPOLOGY:
998
estr = "no cpu topology available";
1000
case ERTS_INIT_SCHED_BIND_TYPE_ERROR_NO_BAD_TYPE:
1001
estr = "invalid type";
1004
estr = "undefined error";
1007
erts_fprintf(stderr,
1008
"setting scheduler bind type '%s' failed: %s\n",
1014
else if (has_prefix("ct", sub_param)) {
1015
arg = get_arg(sub_param+2, argv[i+1], &i);
1016
res = erts_init_cpu_topology(arg);
1017
if (res != ERTS_INIT_CPU_TOPOLOGY_OK) {
1019
case ERTS_INIT_CPU_TOPOLOGY_INVALID_ID:
1020
estr = "invalid identifier";
1022
case ERTS_INIT_CPU_TOPOLOGY_INVALID_ID_RANGE:
1023
estr = "invalid identifier range";
1025
case ERTS_INIT_CPU_TOPOLOGY_INVALID_HIERARCHY:
1026
estr = "invalid hierarchy";
1028
case ERTS_INIT_CPU_TOPOLOGY_INVALID_ID_TYPE:
1029
estr = "invalid identifier type";
1031
case ERTS_INIT_CPU_TOPOLOGY_INVALID_NODES:
1032
estr = "invalid nodes declaration";
1034
case ERTS_INIT_CPU_TOPOLOGY_MISSING_LID:
1035
estr = "missing logical identifier";
1037
case ERTS_INIT_CPU_TOPOLOGY_NOT_UNIQUE_LIDS:
1038
estr = "not unique logical identifiers";
1040
case ERTS_INIT_CPU_TOPOLOGY_NOT_UNIQUE_ENTITIES:
1041
estr = "not unique entities";
1043
case ERTS_INIT_CPU_TOPOLOGY_MISSING:
1044
estr = "missing cpu topology";
1047
estr = "undefined error";
1050
erts_fprintf(stderr,
1051
"bad cpu topology '%s': %s\n",
1057
else if (sys_strcmp("pnt", sub_param) == 0)
1058
erts_init_enable_processor_node_topology();
1059
else if (sys_strcmp("mrq", sub_param) == 0)
975
1060
use_multi_run_queue = 1;
976
else if (sys_strcmp("srq", arg) == 0)
1061
else if (sys_strcmp("srq", sub_param) == 0)
977
1062
use_multi_run_queue = 0;
978
else if (sys_strcmp("nsp", arg) == 0)
1063
else if (sys_strcmp("nsp", sub_param) == 0)
979
1064
erts_use_sender_punish = 0;
981
erts_fprintf(stderr, "bad scheduling option %s\n", arg);
1066
erts_fprintf(stderr, "bad scheduling option %s\n", argv[i]);
987
1072
arg = get_arg(argv[i]+2, argv[i+1], &i);