~rdoering/ubuntu/karmic/erlang/fix-535090

« back to all changes in this revision

Viewing changes to debian/manpages/erl.1

  • Committer: Bazaar Package Importer
  • Author(s): Sergei Golovan
  • Date: 2009-06-17 08:49:38 UTC
  • Revision ID: james.westby@ubuntu.com-20090617084938-fi9tdo3zw95o2ckl
Tags: 1:13.b.1-dfsg-2
* Updated manpages for section 1.
* Applied patch by James Henstridge, which sets ERL_COMPILE_FLAGS based on
  DEB_BUILD_OPTIONS. By default slim runtime without debug info is built.
  To remove slim option set DEB_BUILD_OPTION to 'nostrip', to add debug_info
  compiler option set DEB_BUILD_OPTION to 'debug'. Or it may be set to
  'nostrip,debug' to return to the previous level ob debug information
  (closes: #532757).
* Added a few words about building Erlang packages with debug info included
  to README.Debian.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
.TH erl 1 "erts  5.7.1" "Ericsson AB" "USER COMMANDS"
 
1
.TH erl 1 "erts  5.7.2" "Ericsson AB" "USER COMMANDS"
2
2
.SH NAME
3
3
erl \- The Erlang Emulator
4
4
.SH DESCRIPTION
443
443
.RE
444
444
.TP 4
445
445
.B
 
446
\fI+sFlag Value\fR:
 
447
Scheduling specific flags\&.
 
448
.RS 4
 
449
.LP
 
450
 
 
451
.RS 2
 
452
.TP 4
 
453
.B
 
454
+sbt BindType:
 
455
 
 
456
.RS 4
 
457
.LP
 
458
Set scheduler bind type\&. Currently valid \fIBindType\fRs: 
 
459
.LP
 
460
 
 
461
.RS 2
 
462
.TP 4
 
463
.B
 
464
\fIu\fR:
 
465
Same as erlang:system_flag(scheduler_bind_type, unbound)\&. 
 
466
.TP 4
 
467
.B
 
468
\fIns\fR:
 
469
Same as erlang:system_flag(scheduler_bind_type, no_spread)\&. 
 
470
.TP 4
 
471
.B
 
472
\fIts\fR:
 
473
Same as erlang:system_flag(scheduler_bind_type, thread_spread)\&. 
 
474
.TP 4
 
475
.B
 
476
\fIps\fR:
 
477
Same as erlang:system_flag(scheduler_bind_type, processor_spread)\&. 
 
478
.TP 4
 
479
.B
 
480
\fInnts\fR:
 
481
Same as erlang:system_flag(scheduler_bind_type, no_node_thread_spread)\&. 
 
482
.TP 4
 
483
.B
 
484
\fInnps\fR:
 
485
Same as erlang:system_flag(scheduler_bind_type, no_node_processor_spread)\&. 
 
486
.TP 4
 
487
.B
 
488
\fItnnps\fR:
 
489
Same as erlang:system_flag(scheduler_bind_type, thread_no_node_processor_spread)\&. 
 
490
.TP 4
 
491
.B
 
492
\fIdb\fR:
 
493
Same as erlang:system_flag(scheduler_bind_type, default_bind)\&. 
 
494
.RE
 
495
.LP
 
496
 
 
497
.LP
 
498
Binding of schedulers are currently only supported on newer Linux and Solaris systems\&.
 
499
.LP
 
500
 
 
501
.LP
 
502
If no CPU topology is available when the \fI+sbt\fR flag is processed and \fIBindType\fR is any other type than \fIu\fR, the runtime system will fail to start\&. CPU topology can be defined using the +sct flag\&. Note that the \fI+sct\fR flag may have to be passed before the \fI+sbt\fR flag on the command line (in case no CPU topology has been automatically detected)\&.
 
503
.LP
 
504
 
 
505
.LP
 
506
For more information, see erlang:system_flag(scheduler_bind_type, SchedulerBindType)\&. 
 
507
.RE
 
508
.TP 4
 
509
.B
 
510
\fI+sct CpuTopology\fR:
 
511
 
 
512
.RS 4
 
513
.RS 2
 
514
.TP 2
 
515
*
 
516
\fI<Id> = integer(); when 0 =< <Id> =< 65535\fR
 
517
.TP 2
 
518
*
 
519
\fI<IdRange> = <Id>-<Id>\fR
 
520
.TP 2
 
521
*
 
522
\fI<IdOrIdRange> = <Id> | <IdRange>\fR
 
523
.TP 2
 
524
*
 
525
\fI<IdList> = <IdOrIdRange>, <IdOrIdRange> | <IdOrIdRange>\fR
 
526
.TP 2
 
527
*
 
528
\fI<LogicalIds> = L<IdList>\fR
 
529
.TP 2
 
530
*
 
531
\fI<ThreadIds> = T<IdList> | t<IdList>\fR
 
532
.TP 2
 
533
*
 
534
\fI<CoreIds> = C<IdList> | c<IdList>\fR
 
535
.TP 2
 
536
*
 
537
\fI<ProcessorIds> = P<IdList> | p<IdList>\fR
 
538
.TP 2
 
539
*
 
540
\fI<NodeIds> = N<IdList> | n<IdList>\fR
 
541
.TP 2
 
542
*
 
543
\fI<IdDefs> = <LogicalIds><ThreadIds><CoreIds><ProcessorIds><NodeIds>\fR
 
544
.TP 2
 
545
*
 
546
\fICpuTopology = <IdDefs>:<IdDefs> | <IdDefs>\fR
 
547
.RE
 
548
.LP
 
549
 
 
550
.LP
 
551
Upper-case letters signify real identifiers and lower-case letters signify fake identifiers only used for description of the topology\&. Identifiers passed as real identifiers may be used by the runtime system when trying to access specific hardware and if they are not correct the behavior is undefined\&. Faked logical CPU identifiers are not accepted since there is no point in defining the CPU topology without real logical CPU identifiers\&. Thread, core, processor, and node identifiers may be left out\&. If left out, thread id defaults to \fIt0\fR, core id defaults to \fIc0\fR, processor id defaults to \fIp0\fR, and node id will be left undefined\&. Either all processors or no processors should have node identifiers defined\&. 
 
552
.LP
 
553
 
 
554
.LP
 
555
Both increasing and decreasing \fI<IdRange>\fRs are allowed\&.
 
556
.LP
 
557
 
 
558
.LP
 
559
NUMA node identifiers are system wide\&. That is, each NUMA node on the system have to have a unique identifier\&. Processor identifiers are also system wide\&. Core identifiers are processor wide\&. Thread identifiers are core wide\&.
 
560
.LP
 
561
 
 
562
.LP
 
563
The order of the identifier types imply the hierarchy of the CPU topology\&. Currently, the only valid order is: logical, thread, core, processor, node\&. That is, thread is part of a core which is part of a processor which is part of a NUMA node\&. This will, however, change in the future, since multiple NUMA nodes can be part of a processor, but this is not supported yet\&. 
 
564
.LP
 
565
 
 
566
.LP
 
567
If a list of identifiers is used in an \fI<IdDefs>\fR:
 
568
.LP
 
569
 
 
570
.RS 2
 
571
.TP 2
 
572
*
 
573
\fI<LogicalIds>\fR have to be a list of identifiers\&.
 
574
.TP 2
 
575
*
 
576
At least one other identifier type apart from \fI<LogicalIds>\fR also have to have a list of identifiers\&.
 
577
.TP 2
 
578
*
 
579
All lists of identifiers have to produce the same amount of identifiers\&.
 
580
.RE
 
581
.LP
 
582
 
 
583
.LP
 
584
A simple example\&. A single quad core processor may be described this way:
 
585
.LP
 
586
 
 
587
 
 
588
.nf
 
589
% erl +sct L0-3c0-3
 
590
 
 
591
1> erlang:system_info(cpu_topology)\&.
 
592
 
 
593
[{processor,[{core,{logical,0}},
 
594
             {core,{logical,1}},
 
595
             {core,{logical,2}},
 
596
             {core,{logical,3}}]}]
 
597
 
 
598
.fi
 
599
.LP
 
600
 
 
601
.LP
 
602
A little more complicated example\&. Two quad core processors\&. Each processor in its own NUMA node\&. The ordering of logical processors is a little weird\&. This in order to give a better example of identifier lists:
 
603
.LP
 
604
 
 
605
 
 
606
.nf
 
607
% erl +sct L0-1,3-2c0-3p0N0:L7,4,6-5c0-3p1N1
 
608
 
 
609
1> erlang:system_info(cpu_topology)\&.
 
610
 
 
611
[{node,[{processor,[{core,{logical,0}},
 
612
                    {core,{logical,1}},
 
613
                    {core,{logical,3}},
 
614
                    {core,{logical,2}}]}]},
 
615
 {node,[{processor,[{core,{logical,7}},
 
616
                    {core,{logical,4}},
 
617
                    {core,{logical,6}},
 
618
                    {core,{logical,5}}]}]}]
 
619
 
 
620
.fi
 
621
.LP
 
622
 
 
623
.LP
 
624
As long as real identifiers are correct it is okay to pass a CPU topology that is not a correct description of the CPU topology\&. When used with care this can actually be very useful\&. This in order to trick the emulator to bind its schedulers as you want\&. For example, if you want to run multiple Erlang runtime systems on the same machine, you want to reduce the amount of schedulers used and manipulate the CPU topology so that they bind to different logical CPUs\&. An example, with two Erlang runtime systems on a quad core machine:
 
625
.LP
 
626
 
 
627
 
 
628
.nf
 
629
% erl +sct L0-3c0-3 +sbt db +S3:2 -detached -noinput -noshell -sname one
 
630
 
 
631
% erl +sct L3-0c0-3 +sbt db +S3:2 -detached -noinput -noshell -sname two
 
632
 
 
633
 
 
634
.fi
 
635
.LP
 
636
 
 
637
.LP
 
638
In this example each runtime system have two schedulers each online, and all schedulers online will run on different cores\&. If we change to one scheduler online on one runtime system, and three schedulers online on the other, all schedulers online will still run on different cores\&.
 
639
.LP
 
640
 
 
641
.LP
 
642
Note that a faked CPU topology that does not reflect how the real CPU topology looks like is likely to decrease the performance of the runtime system\&.
 
643
.LP
 
644
 
 
645
.LP
 
646
For more information, see erlang:system_flag(cpu_topology, CpuTopology)\&.
 
647
.RE
 
648
.RE
 
649
.RE
 
650
.TP 4
 
651
.B
446
652
\fI+T Level\fR:
447
653
 
448
654
.RS 4