From e5875001247e6a6ac4f474157a51a8c54f94ae49 Mon Sep 17 00:00:00 2001 From: Hans Bolinder Date: Thu, 14 Mar 2013 16:01:25 +0100 Subject: Convert XML files to UTF-8 --- erts/doc/src/erl.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index a68e62d051..814b904de3 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -1,4 +1,4 @@ - + -- cgit v1.2.3 From 69e01c0f5d332d34b95575203ae9d7829b9a45fa Mon Sep 17 00:00:00 2001 From: Steve Vinoski Date: Tue, 20 Aug 2013 21:09:47 -0400 Subject: add erl option to set schedulers by percentages For applications where measurements show enhanced performance from the use of a non-default number of emulator scheduler threads, having to accurately set the right number of scheduler threads across multiple hosts each with different numbers of logical processors is difficult because the erl +S option requires absolute numbers of scheduler threads and scheduler threads online to be specified. To address this issue, add a +SP option to erl, similar to the existing +S option but allowing the number of scheduler threads and scheduler threads online to be set as percentages of logical processors configured and logical processors available, respectively. For example, "+SP 50:25" sets the number of scheduler threads to 50% of the logical processors configured, and the number of scheduler threads online to 25% of the logical processors available. The +SP option also interacts with any settings specified with the +S option, such that the combination of options "+S 4:4 +SP 50:50" (in either order) results in 2 scheduler threads and 2 scheduler threads online. Add documentation for the +SP option. Add tests for the +SP option to scheduler_SUITE. Add tests and documentation for two existing features of the +S option: +S 0:0 resets the scheduler thread count and scheduler threads online count to their defaults, and specifying negative numbers for +S results in those values being subtracted from the default values for the host. --- erts/doc/src/erl.xml | 50 +++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 39 insertions(+), 11 deletions(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index 70569b1c6c..c16b45856d 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -748,19 +748,47 @@ -

Sets the amount of scheduler threads to create and scheduler - threads to set online when SMP support has been enabled. - Valid range for both values are 1-1024. If the - Erlang runtime system is able to determine the amount - of logical processors configured and logical processors available, - Schedulers will default to logical processors configured, - and SchedulersOnline will default to logical processors - available; otherwise, the default values will be 1. Schedulers - may be omitted if :SchedulerOnline is not and vice versa. The - amount of schedulers online can be changed at run time via +

Sets the number of scheduler threads to create and scheduler + threads to set online when SMP support has been enabled. The maximum for + both values is 1024. If the Erlang runtime system is able to determine the + amount of logical processors configured and logical processors available, + Schedulers will default to logical processors configured, and + SchedulersOnline will default to logical processors available; + otherwise, the default values will be 1. Schedulers may be omitted + if :SchedulerOnline is not and vice versa. The number of schedulers + online can be changed at run time via erlang:system_flag(schedulers_online, SchedulersOnline).

-

This flag will be ignored if the emulator doesn't have +

If Schedulers or SchedulersOnline is specified as a + negative number, the value is subtracted from the default number of + logical processors configured or logical processors available, respectively. +

+

Specifying the value 0 for Schedulers or SchedulersOnline + resets the number of scheduler threads or scheduler threads online respectively + to its default value. +

+

This option is ignored if the emulator doesn't have + SMP support enabled (see the -smp + flag).

+
+ + +

Similar to +S but uses percentages to set the + number of scheduler threads to create, based on logical processors configured, + and scheduler threads to set online, based on logical processors available, when + SMP support has been enabled. Specified values must be greater than 0. For example, + +SP 50:25 sets the number of scheduler threads to 50% of the logical processors + configured and the number of scheduler threads online to 25% of the logical processors available. + SchedulersPercentage may be omitted if :SchedulersOnlinePercentage is + not and vice versa. The number of schedulers online can be changed at run time via + erlang:system_flag(schedulers_online, SchedulersOnline). +

+

This option interacts with +S settings. + For example, on a system with 8 logical cores configured and 8 logical cores + available, the combination of the options +S 4:4 +SP 50:25 (in either order) + results in 2 scheduler threads (50% of 4) and 1 scheduler thread online (25% of 4). +

+

This option is ignored if the emulator doesn't have SMP support enabled (see the -smp flag).

-- cgit v1.2.3 From 75a79e6547fd66c2194d6f488c30ad888a715f4b Mon Sep 17 00:00:00 2001 From: Steve Vinoski Date: Wed, 4 Sep 2013 10:21:47 -0400 Subject: add system_info(ets_limit) Add system_info(ets_limit) to provide a way to retrieve the runtime's maximum number of ETS tables. Add tests and documentation for it too. Also repair the alphabetical order of system_info/1 argument descriptions in the documentation and in the erlang.erl clauses. Add new preloaded erlang.erl due to that change. Also ensure all system_info/1 clauses are represented in the erlang.xml source documentation -- a couple had been inadvertently dropped in previous commits when other clauses were added. --- erts/doc/src/erl.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index c16b45856d..528a2d95aa 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -524,7 +524,7 @@

Calling erlang:halt/1 with a string argument will still produce a crash dump.

- +

Set max number of ETS tables.

-- cgit v1.2.3 From f265dc315485734adda7e7a8a88f6b4c02211477 Mon Sep 17 00:00:00 2001 From: "Brian L. Troutwine" Date: Mon, 9 Dec 2013 09:31:38 -0800 Subject: Clean up some awkward wording around the +spp flag. This issue was pointed out by lpgauth in #erlounge. While the intention is clear, the original wording was a bit dodgy. I'm no grammarian--though I am a native speaker--so it's quite possible the new wording I've introduced is not impeachable. Should be idiomatic, though. Signed-off-by: Brian L. Troutwine --- erts/doc/src/erl.xml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index bf0d132955..34c9d8ea61 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -1126,18 +1126,18 @@ +spp Bool

Set default scheduler hint for port parallelism. If set to - true, the VM will schedule port tasks when it by this can - improve the parallelism in the system. If set to false, - the VM will try to perform port tasks immediately and by this - improve latency at the expense of parallelism. If this - flag has not been passed, the default scheduler hint for port - parallelism is currently false. The default used can be - inspected in runtime by calling - erlang:system_info(port_parallelism). + true, the VM will schedule port tasks when doing so will + improve parallelism in the system. If set to false, the VM + will try to perform port tasks immediately, improving latency at the + expense of parallelism. If this flag has not been passed, the + default scheduler hint for port parallelism is currently + false. The default used can be inspected in runtime by + calling erlang:system_info(port_parallelism). The default can be overriden on port creation by passing the parallelism - option to - open_port/2

. + option to open_port/2

.
-- cgit v1.2.3 From e7ea832a4a3a8ba2f94ce02a47ca34b60277cb0a Mon Sep 17 00:00:00 2001 From: Rickard Green Date: Thu, 16 Jan 2014 23:41:47 +0100 Subject: Add support for scheduler utilization balancing For more information see documentation of the new command line argument +sub --- erts/doc/src/erl.xml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index bf0d132955..2aa247e293 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -941,6 +941,10 @@ when schedulers frequently run out of work. When disabled, the frequency with which schedulers run out of work will not be taken into account by the load balancing logic. +
  +scl false is similar to + +sub true with the difference + that +sub true also will balance scheduler utilization + between schedulers.

+sct CpuTopology @@ -1087,6 +1091,29 @@ documentation of the +sbt flag.

+ +sub true|false + +

Enable or disable + scheduler + utilization balancing of load. By default scheduler + utilization balancing is disabled and instead scheduler + compaction of load is enabled which will strive for a load + distribution which causes as many scheduler threads as possible + to be fully loaded (i.e., not run out of work). When scheduler + utilization balancing is enabled the system will instead try to + balance scheduler utilization between schedulers. That is, + strive for equal scheduler utilization on all schedulers. +
   +sub true is only supported on + systems where the runtime system detects and use a monotonically + increasing high resolution clock. On other systems, the runtime + system will fail to start. +
   +sub true implies + +scl false. The difference + between +sub true and +scl false is that + +scl false will not try to balance the scheduler + utilization. +

+
+sws very_eager|eager|medium|lazy|very_lazy

-- cgit v1.2.3 From c1c03ae4ee50e58b7669ea88ec4d29c6b2b67c7b Mon Sep 17 00:00:00 2001 From: Steve Vinoski Date: Thu, 9 Jan 2014 21:22:45 -0500 Subject: initial support for dirty schedulers and dirty NIFs Add initial support for dirty schedulers. There are two types of dirty schedulers: CPU schedulers and I/O schedulers. By default, there are as many dirty CPU schedulers as there are normal schedulers and as many dirty CPU schedulers online as normal schedulers online. There are 10 dirty I/O schedulers (similar to the choice of 10 as the default for async threads). By default, dirty schedulers are disabled and conditionally compiled out. To enable them, you must pass --enable-dirty-schedulers to the top-level configure script when building Erlang/OTP. Current dirty scheduler support requires the emulator to be built with SMP support. This restriction will be lifted in the future. You can specify the number of dirty schedulers with the command-line options +SDcpu (for dirty CPU schedulers) and +SDio (for dirty I/O schedulers). The +SDcpu option is similar to the +S option in that it takes two numbers separated by a colon: C1:C2, where C1 specifies the number of dirty schedulers available and C2 specifies the number of dirty schedulers online. The +SDPcpu option allows numbers of dirty CPU schedulers available and dirty CPU schedulers online to be specified as percentages, similar to the existing +SP option for normal schedulers. The number of dirty CPU schedulers created and dirty CPU schedulers online may not exceed the number of normal schedulers created and normal schedulers online, respectively. The +SDio option takes only a single number specifying the number of dirty I/O schedulers available and online. There is no support yet for programmatically changing at run time the number of dirty CPU schedulers online via erlang:system_flag/2. Also, changing the number of normal schedulers online via erlang:system_flag(schedulers_online, NewSchedulersOnline) should ensure that there are no more dirty CPU schedulers than normal schedulers, but this is not yet implemented. You can retrieve the number of dirty schedulers by passing dirty_cpu_schedulers, dirty_cpu_schedulers_online, or dirty_io_schedulers to erlang:system_info/1. Currently only NIFs are able to access dirty scheduler functionality. Neither drivers nor BIFs currently support dirty schedulers. This restriction will be addressed in the future. If dirty scheduler support is present in the runtime, the initial status line Erlang prints before presenting its interactive prompt will include the indicator "[ds:C1:C2:I]" where "ds" indicates "dirty schedulers", "C1" indicates the number of dirty CPU schedulers available, "C2" indicates the number of dirty CPU schedulers online, and "I" indicates the number of dirty I/O schedulers. Document The dirty NIF API in the erl_nif man page. The API closely follows Rickard Green's presentation slides from his talk "Future Extensions to the Native Interface", presented at the 2011 Erlang Factory held in the San Francisco Bay Area. Rickard's slides are available online at http://bit.ly/1m34UHB . Document the new erl command-line options, the additions to erlang:system_info/1, and also add the erlang:system_flag/2 dirty scheduler documentation even though it's not yet implemented. To determine whether the dirty NIF API is available, native code can check to see whether the C preprocessor macro ERL_NIF_DIRTY_SCHEDULER_SUPPORT is defined. To check if dirty schedulers are available at run time, native code can call the boolean enif_have_dirty_schedulers() function, and Erlang code can call erlang:system_info(dirty_cpu_schedulers), which raises badarg if no dirty scheduler support is available. Add a simple dirty NIF test to the emulator NIF suite. --- erts/doc/src/erl.xml | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index e737727941..27a23174d5 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -792,6 +792,54 @@ SMP support enabled (see the -smp flag).

+ + +

Sets the number of dirty CPU scheduler threads to create and dirty + CPU scheduler threads to set online when threading support has been + enabled. The maximum for both values is 1024, and each value is further + limited by the settings for normal schedulers: the number of dirty CPU + scheduler threads created cannot exceed the number of normal scheduler + threads created, and the number of dirty CPU scheduler threads online + cannot exceed the number of normal scheduler threads online (see the + +S and +SP + flags for more details). By default, the number of dirty CPU scheduler + threads created equals the number of normal scheduler threads created, + and the number of dirty CPU scheduler threads online equals the number + of normal scheduler threads online. DirtyCPUSchedulers may be + omitted if :DirtyCPUSchedulersOnline is not and vice versa. The + number of dirty CPU schedulers online can be changed at run time via + erlang:system_flag(dirty_cpu_schedulers_online, DirtyCPUSchedulersOnline). +

+

This option is ignored if the emulator doesn't have threading support + enabled. Currently, this option is experimental and is supported only + if the emulator was configured and built with support for dirty schedulers + enabled (it's disabled by default). +

+
+ + +

Similar to +SDcpu but uses percentages to set the + number of dirty CPU scheduler threads to create and number of dirty CPU scheduler threads + to set online when threading support has been enabled. Specified values must be greater + than 0. For example, +SDPcpu 50:25 sets the number of dirty CPU scheduler threads + to 50% of the logical processors configured and the number of dirty CPU scheduler threads + online to 25% of the logical processors available. DirtyCPUSchedulersPercentage may + be omitted if :DirtyCPUSchedulersOnlinePercentage is not and vice versa. The + number of dirty CPU schedulers online can be changed at run time via + erlang:system_flag(dirty_cpu_schedulers_online, DirtyCPUSchedulersOnline). +

+

This option interacts with +SDcpu settings. + For example, on a system with 8 logical cores configured and 8 logical cores available, + the combination of the options +SDcpu 4:4 +SDPcpu 50:25 (in either order) results + in 2 dirty CPU scheduler threads (50% of 4) and 1 dirty CPU scheduler thread online (25% of 4). +

+

This option is ignored if the emulator doesn't have threading support + enabled. Currently, this option is experimental and is supported only + if the emulator was configured and built with support for dirty schedulers + enabled (it's disabled by default). +

+
+

Scheduling specific flags.

-- cgit v1.2.3 From 0cc9753f7f873bbcf8a528e05ab0adbd5c8fc79c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Gustavsson?= Date: Mon, 27 Jan 2014 13:10:54 +0100 Subject: Change the default file name encoding mode to +fnaw --- erts/doc/src/erl.xml | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index e737727941..6428a24209 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -535,12 +535,15 @@
-

The VM works with file names as if they are encoded using the ISO-latin-1 encoding, disallowing Unicode characters with codepoints beyond 255. This is default on operating systems that have transparent file naming, i.e. all Unixes except MacOSX.

+

The VM works with file names as if they are encoded using the ISO-latin-1 encoding, disallowing Unicode characters with codepoints beyond 255.

See STDLIB User's Guide for more infomation about unicode file names.

-

The VM works with file names as if they are encoded using UTF-8 (or some other system specific Unicode encoding). This is the default on operating systems that enforce Unicode encoding, i.e. Windows and MacOSX.

+

The VM works with file names as if they are encoded using + UTF-8 (or some other system specific Unicode encoding). This + is the default on operating systems that enforce Unicode + encoding, i.e. Windows and MacOS X.

The +fnu switch can be followed by w, i, or e to control the way wrongly encoded file names are to be reported. w means that a warning is @@ -556,7 +559,12 @@ -

Selection between +fnl and +fnu is done based on the current locale settings in the OS, meaning that if you have set your terminal for UTF-8 encoding, the filesystem is expected to use the same encoding for file names (use with care).

+

Selection between +fnl and +fnu is done based + on the current locale settings in the OS, meaning that if you + have set your terminal for UTF-8 encoding, the filesystem is + expected to use the same encoding for file names. This is + default on all operating systems except MacOS X and + Windows.

The +fna switch can be followed by w, i, or e. This will have effect if the locale settings cause the behavior of +fnu to be selected. -- cgit v1.2.3 From a9fd7c1ffbb2b3509821b6655f460e27f70c2892 Mon Sep 17 00:00:00 2001 From: Vlad Dumitrescu Date: Fri, 21 Mar 2014 21:24:28 +0100 Subject: Specify that +fn* flags affect even command-line parameters and environment variables --- erts/doc/src/erl.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index 4aa3033f40..9724a1345a 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -536,7 +536,7 @@

The VM works with file names as if they are encoded using the ISO-latin-1 encoding, disallowing Unicode characters with codepoints beyond 255.

-

See STDLIB User's Guide for more infomation about unicode file names.

+

See STDLIB User's Guide for more infomation about unicode file names. Note that this value also applies to command-line parameters and environment variables (see STDLIB User's Guide).

@@ -555,7 +555,7 @@ encountered. w is the default. Note that file:read_link/1 will always return an error if the link points to an invalid file name.

-

See STDLIB User's Guide for more infomation about unicode file names.

+

See STDLIB User's Guide for more infomation about unicode file names. Note that this value also applies to command-line parameters and environment variables (see STDLIB User's Guide).

@@ -572,7 +572,7 @@ settings cause the behavior of +fnl to be selected, then w, i, or e will not have any effect.

-

See STDLIB User's Guide for more infomation about unicode file names.

+

See STDLIB User's Guide for more infomation about unicode file names. Note that this value also applies to command-line parameters and environment variables (see STDLIB User's Guide).

-- cgit v1.2.3 From e492b43c3e4366e865e5f1c34d0834df2a91d490 Mon Sep 17 00:00:00 2001 From: Eiichi Tsukata Date: Wed, 23 Apr 2014 21:46:21 +0900 Subject: Add erlang:system_info(tolerant_timeofday) Add erlang:system_info(tolerant_timeofday), an API to check whether compensation for sudden changes of system time is enabled or not. --- erts/doc/src/erl.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index 9724a1345a..f8f4d14436 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -495,7 +495,7 @@ , not (). Note also that is used instead of on Windows.

- +

Disable compensation for sudden changes of system time.

Normally, will not immediately reflect @@ -510,6 +510,9 @@ reflect the current system time. Note that timers are based on . If the system time jumps, timers then time out at the wrong time.

+

NOTE: You can check whether the adjustment is enabled or + disabled by calling + erlang:system_info(tolerant_timeofday).

-- cgit v1.2.3 From 864ebdc6264d134b1face2cd6b400b992b31e6e5 Mon Sep 17 00:00:00 2001 From: Steve Vinoski Date: Sat, 21 Jun 2014 17:22:34 -0400 Subject: add missing description for erl +SDio option Add explanatory text for the erl +SDio option, which is used to set the number of dirty I/O schedulers. --- erts/doc/src/erl.xml | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index 9724a1345a..1a4a955d8b 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -848,6 +848,19 @@

+ +

Sets the number of dirty I/O scheduler threads to create when threading + support has been enabled. The valid range is 0-1024. By default, the number + of dirty I/O scheduler threads created is 10, same as the default number of + threads in the async thread pool + . +

+

This option is ignored if the emulator doesn't have threading support + enabled. Currently, this option is experimental and is supported only + if the emulator was configured and built with support for dirty schedulers + enabled (it's disabled by default). +

+

Scheduling specific flags.

-- cgit v1.2.3 From 5e72adfd8b56f50416d66a018028e2e6895032e0 Mon Sep 17 00:00:00 2001 From: Rickard Green Date: Thu, 14 Aug 2014 21:32:53 +0200 Subject: Fix +swct doc --- erts/doc/src/erl.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index 5bde285311..f856b9ab86 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -1186,7 +1186,7 @@ utilization.

- +sws very_eager|eager|medium|lazy|very_lazy + +swct very_eager|eager|medium|lazy|very_lazy

Set scheduler wake cleanup threshold. Default is medium. -- cgit v1.2.3 From 6084a42a24fca52a5de2bc487c0cd2be46dcc21f Mon Sep 17 00:00:00 2001 From: Rickard Green Date: Tue, 26 Aug 2014 17:26:31 +0200 Subject: Introduce support for eager check I/O scheduling --- erts/doc/src/erl.xml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index 528a2d95aa..967226056e 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -1065,6 +1065,23 @@

For more information, see erlang:system_info(cpu_topology).

+ +secio true|false + +

Enable or disable eager check I/O scheduling. The default + is currently false, but will most likely be changed + to true in OTP 18. The behaviour before this flag + was introduced corresponds to +secio false.

+

The flag effects when schedulers will check for I/O + operations possible to execute, and when such I/O operations + will execute. As the name of the parameter implies, + schedulers will be more eager to check for I/O when + true is passed. This however also implies that + execution of outstanding I/O operation will not be + prioritized to the same extent as when false is + passed.

+

erlang:system_info(eager_check_io) + returns the value of this parameter used when starting the VM.

+
+sfwi Interval

Set scheduler forced wakeup interval. All run queues will -- cgit v1.2.3 From cb604704efd28fafd0f8edce03db00f7fef53909 Mon Sep 17 00:00:00 2001 From: Rickard Green Date: Tue, 23 Sep 2014 18:06:44 +0200 Subject: Change default to "eager check I/O" Conflicts: erts/emulator/beam/erl_process.c --- erts/doc/src/erl.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index 141754e4f9..f3ada61f3e 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -1144,9 +1144,9 @@ +secio true|false

Enable or disable eager check I/O scheduling. The default - is currently false, but will most likely be changed - to true in OTP 18. The behaviour before this flag - was introduced corresponds to +secio false.

+ is currently true. The default was changed from false + to true as of erts version 7.0. The behaviour before this + flag was introduced corresponds to +secio false.

The flag effects when schedulers will check for I/O operations possible to execute, and when such I/O operations will execute. As the name of the parameter implies, -- cgit v1.2.3 From 0aa4dc4f66815aa4b40e8b3b2d8b9a24c180debe Mon Sep 17 00:00:00 2001 From: Steve Vinoski Date: Fri, 17 Oct 2014 17:21:37 -0400 Subject: Clarify the use of SIGUSR1 for forcing crash dumps The crash_dump document mentions indirectly that delivering a SIGUSR1 to a running emulator process can force it to crash dump. Clarify that text to make it clear SIGUSR1 can be used for that purpose, and also add a similar note about using SIGUSR1 to the erl documentation. --- erts/doc/src/erl.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index f856b9ab86..e85519185f 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -525,7 +525,8 @@ core dump and no crash dump if an internal error is detected.

Calling erlang:halt/1 with a string argument will still - produce a crash dump.

+ produce a crash dump. On Unix systems, sending an emulator process + a SIGUSR1 signal will also force a crash dump.

-- cgit v1.2.3 From 93f0ff928b89dce4e62e4017065d87fcc5cf4cf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn-Egil=20Dahlberg?= Date: Wed, 4 Mar 2015 17:28:37 +0100 Subject: erts: Document option 'hpds' --- erts/doc/src/erl.xml | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index d11f6b0c6d..f08467bfc6 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -588,6 +588,11 @@

Sets the default binary virtual heap size of processes to the size .

+ + +

Sets the initial process dictionary size of processes to the size + .

+

Enables or disables the kernel poll functionality if -- cgit v1.2.3 From 6487aac5977cf470bc6a2cd0964da2850ee38717 Mon Sep 17 00:00:00 2001 From: Rickard Green Date: Thu, 30 Oct 2014 23:57:01 +0100 Subject: Introduce a new time API The old time API is based on erlang:now/0. The major issue with erlang:now/0 is that it was intended to be used for so many unrelated things. This tied these unrelated operations together and unnecessarily caused performance, scalability as well as accuracy, and precision issues for operations that do not need to have such issues. The new API spreads different functionality over multiple functions in order to improve on this. The new API consists of a number of new BIFs: - erlang:convert_time_unit/3 - erlang:monotonic_time/0 - erlang:monotonic_time/1 - erlang:system_time/0 - erlang:system_time/1 - erlang:time_offset/0 - erlang:time_offset/1 - erlang:timestamp/0 - erlang:unique_integer/0 - erlang:unique_integer/1 - os:system_time/0 - os:system_time/1 and a number of extensions of existing BIFs: - erlang:monitor(time_offset, clock_service) - erlang:system_flag(time_offset, finalize) - erlang:system_info(os_monotonic_time_source) - erlang:system_info(time_offset) - erlang:system_info(time_warp_mode) - erlang:system_info(time_correction) - erlang:system_info(start_time) See the "Time and Time Correction in Erlang" chapter of the ERTS User's Guide for more information. --- erts/doc/src/erl.xml | 47 +++++++++++++++++++++++++++++------------------ 1 file changed, 29 insertions(+), 18 deletions(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index d11f6b0c6d..19a8e1f789 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -495,24 +495,35 @@ , not (). Note also that is used instead of on Windows.

- - -

Disable compensation for sudden changes of system time.

-

Normally, will not immediately reflect - sudden changes in the system time, in order to keep timers - (including ) working. Instead, the time - maintained by is slowly adjusted towards - the new system time. (Slowly means in one percent adjustments; - if the time is off by one minute, the time will be adjusted - in 100 minutes.)

-

When the option is given, this slow adjustment - will not take place. Instead will always - reflect the current system time. Note that timers are based - on . If the system time jumps, timers - then time out at the wrong time.

-

NOTE: You can check whether the adjustment is enabled or - disabled by calling - erlang:system_info(tolerant_timeofday).

+ + +

Enable or disable + time correction:

+ + true +

Enable time correction. This is the default if + time correction is supported on the specific platform.

+ + false +

Disable time correction.

+
+

For backwards compatibility, the boolean value can be omitted. + This is interpreted as +c false. +

+
+ + +

Set + time warp mode: +

+ + no_time_warp +

No Time Warp Mode (the default)

+ single_time_warp +

Single Time Warp Mode

+ multi_time_warp +

Multi Time Warp Mode

+
-- cgit v1.2.3 From 441842ce023bf8ef5dc84f2d5061b0b7c79c8130 Mon Sep 17 00:00:00 2001 From: Richard Carlsson Date: Fri, 17 Apr 2015 22:04:31 +0200 Subject: Map error logger warnings to warning messages by default Also fix and document the broken +We option. --- erts/doc/src/erl.xml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index ea94a4e82b..98d05dc7de 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -1322,13 +1322,14 @@

Verbose.

- +

Sets the mapping of warning messages for . Messages sent to the error logger using one of the warning - routines can be mapped either to errors (default), warnings - (), or info reports (). The current - mapping can be retrieved using + routines can be mapped either to errors (), + warnings (), or info reports + (). The default is warnings. + The current mapping can be retrieved using . See error_logger(3) for further information.

-- cgit v1.2.3 From fe1c0d26d4e6180b79fc8497b827ac2ef1f471d5 Mon Sep 17 00:00:00 2001 From: Rickard Green Date: Fri, 5 Jun 2015 17:25:22 +0200 Subject: Delayed node table GC --- erts/doc/src/erl.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index ea94a4e82b..00da503469 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -1350,6 +1350,18 @@ give lower latency and higher throughput at the expense of higher memory usage.

+ +zdntgc time + +

Set the delayed node table garbage collection time + (delayed_node_table_gc) + in seconds. Valid values are either infinity or + an integer in the range [0-100000000]. Default is 60.

+

Node table entries that are not referred will linger + in the table for at least the amount of time that this + parameter determines. The lingering prevents repeated + deletions and insertions in the tables from occurring. +

+
-- cgit v1.2.3 From 738c34d4bb8f1a3811acd00af8c6c12107f8315b Mon Sep 17 00:00:00 2001 From: Bruce Yinhe Date: Thu, 18 Jun 2015 11:31:02 +0200 Subject: Change license text to APLv2 --- erts/doc/src/erl.xml | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index f41b6e6149..b0322b7d43 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -8,16 +8,17 @@ Ericsson AB. All Rights Reserved. - The contents of this file are subject to the Erlang Public License, - Version 1.1, (the "License"); you may not use this file except in - compliance with the License. You should have received a copy of the - Erlang Public License along with this software. If not, it can be - retrieved online at http://www.erlang.org/. + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See - the License for the specific language governing rights and limitations - under the License. + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. -- cgit v1.2.3 From 5ae78de4e4f6e220e29ad2f54b95a0098da4b365 Mon Sep 17 00:00:00 2001 From: Hans Bolinder Date: Mon, 12 Oct 2015 12:12:27 +0200 Subject: [erts] Correct documentation Fix mistakes found by 'xmllint'. --- erts/doc/src/erl.xml | 83 ++++++++++++++++++++++++++-------------------------- 1 file changed, 41 insertions(+), 42 deletions(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index b0322b7d43..63ab2532ab 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -4,7 +4,7 @@
- 19962013 + 19962015 Ericsson AB. All Rights Reserved. @@ -138,7 +138,7 @@ see app(4) and application(3).

- +

Command line arguments are read from the file . The arguments read from the file replace the @@ -203,7 +203,7 @@ app(4) and application(3).

- +

If this flag is present, will not maintain a fully connected network of distributed Erlang nodes, and then @@ -288,7 +288,7 @@

Makes write some debug information while interpreting the boot script.

- (emulator flag) + (emulator flag)

Selects an instrumented Erlang runtime system (virtual machine) to run, instead of the ordinary one. When running an @@ -436,7 +436,7 @@ flag and those running with the flag, as node names must be unique in distributed Erlang systems.

- +

-smp enable and -smp starts the Erlang runtime system with SMP support enabled. This may fail if no runtime @@ -462,7 +462,7 @@

invokes the code for the Erlang emulator (virtual machine), which supports the following flags:

- +

Suggested stack size, in kilowords, for threads in the async-thread pool. Valid range is 16-8192 kilowords. The @@ -477,7 +477,7 @@ suggestion, and it might even be ignored on some platforms.

- +

Sets the number of threads in async thread pool, valid range is 0-1024. If thread support is available, the default is 10.

@@ -496,7 +496,7 @@ , not (). Note also that is used instead of on Windows.

- +

Enable or disable time correction:

@@ -512,7 +512,7 @@ This is interpreted as +c false.

- +

Set time warp mode: @@ -540,7 +540,7 @@ produce a crash dump. On Unix systems, sending an emulator process a SIGUSR1 signal will also force a crash dump.

- +

Set max number of ETS tables.

@@ -625,7 +625,7 @@ information about the file names and line numbers.

- +

Memory allocator specific flags, see erts_alloc(3) for @@ -664,10 +664,10 @@ debugging. - +

Sets the range of characters that the system will consider printable in heuristic detection of strings. This typically affects the shell, debugger and io:format functions (when ~tp is used in the format string).

-

Currently two values for the Range are supported: +

Currently two values for the Range are supported:

latin1 The default. Only characters in the ISO-latin-1 range can be considered printable, which means @@ -682,11 +682,10 @@ example your font does not cover all Unicode characters. -

Se also io:printable_range/0.

- +

Sets the maximum number of simultaneously existing processes for this system if a Number is passed as value. Valid range for @@ -706,7 +705,7 @@ circumstances be extremely expensive. The legacy algoritm is deprecated, and the legacy option is scheduled for removal in OTP-R18.

- +

Sets the maximum number of simultaneously existing ports for this system if a Number is passed as value. Valid range for Number @@ -737,7 +736,7 @@ circumstances be extremely expensive. The legacy algoritm is deprecated, and the legacy option is scheduled for removal in OTP-R18.

- +

Sets the compatibility mode.

The distribution mechanism is not backwards compatible by @@ -757,7 +756,7 @@

Force ets memory block to be moved on realloc.

- +

Limits the amount of reader groups used by read/write locks optimized for read operations in the Erlang runtime system. By @@ -775,7 +774,7 @@ schedulers to logical processors, since the reader groups are distributed better between schedulers.

- +

Sets the number of scheduler threads to create and scheduler threads to set online when SMP support has been enabled. The maximum for @@ -800,7 +799,7 @@ SMP support enabled (see the -smp flag).

- +

Similar to +S but uses percentages to set the number of scheduler threads to create, based on logical processors configured, @@ -821,7 +820,7 @@ SMP support enabled (see the -smp flag).

- +

Sets the number of dirty CPU scheduler threads to create and dirty CPU scheduler threads to set online when threading support has been @@ -845,7 +844,7 @@ enabled (it's disabled by default).

- +

Similar to +SDcpu but uses percentages to set the number of dirty CPU scheduler threads to create and number of dirty CPU scheduler threads @@ -868,7 +867,7 @@ enabled (it's disabled by default).

- +

Sets the number of dirty I/O scheduler threads to create when threading support has been enabled. The valid range is 0-1024. By default, the number @@ -886,7 +885,7 @@

Scheduling specific flags.

- +sbt BindType + +sbt BindType

Set scheduler bind type.

Schedulers can also be bound using the @@ -1010,7 +1009,7 @@ erlang:system_info(scheduler_bindings).

- +sbwt none|very_short|short|medium|long|very_long + +sbwt none|very_short|short|medium|long|very_long

Set scheduler busy wait threshold. Default is medium. The threshold determines how long schedulers should busy @@ -1020,7 +1019,7 @@ without prior notice.

- +scl true|false + +scl true|false

Enable or disable scheduler compaction of load. By default scheduler compaction of load is enabled. When enabled, load @@ -1037,7 +1036,7 @@ between schedulers.

- +sct CpuTopology + +sct CpuTopology = integer(); when 0 =< =< 65535]]> @@ -1159,7 +1158,7 @@

For more information, see erlang:system_info(cpu_topology).

- +secio true|false + +secio true|false

Enable or disable eager check I/O scheduling. The default is currently true. The default was changed from false @@ -1176,7 +1175,7 @@

erlang:system_info(eager_check_io) returns the value of this parameter used when starting the VM.

- +sfwi Interval + +sfwi Interval

Set scheduler forced wakeup interval. All run queues will be scanned each Interval milliseconds. While there are @@ -1190,7 +1189,7 @@ the +sfwi flag will be removed.

- +stbt BindType + +stbt BindType

Try to set scheduler bind type. The same as the +sbt flag with the exception of @@ -1198,7 +1197,7 @@ documentation of the +sbt flag.

- +sub true|false + +sub true|false

Enable or disable scheduler @@ -1221,7 +1220,7 @@ utilization.

- +swct very_eager|eager|medium|lazy|very_lazy + +swct very_eager|eager|medium|lazy|very_lazy

Set scheduler wake cleanup threshold. Default is medium. @@ -1235,7 +1234,7 @@

NOTE: This flag may be removed or changed at any time without prior notice.

- +sws default|legacy + +sws default|legacy

Set scheduler wakeup strategy. Default strategy changed in erts-5.10/OTP-R16A. This strategy was previously known as proposal in OTP-R15. The legacy strategy was used as default from R13 up to and including R15. @@ -1243,7 +1242,7 @@

NOTE: This flag may be removed or changed at any time without prior notice.

- +swt very_low|low|medium|high|very_high + +swt very_low|low|medium|high|very_high

Set scheduler wakeup threshold. Default is medium. The threshold determines when to wake up sleeping schedulers @@ -1257,7 +1256,7 @@ without prior notice.

- +spp Bool + +spp Bool

Set default scheduler hint for port parallelism. If set to true, the VM will schedule port tasks when doing so will @@ -1273,7 +1272,7 @@ option to open_port/2

.
- +

Suggested stack size, in kilowords, for scheduler threads. Valid range is 4-8192 kilowords. The default stack size @@ -1281,11 +1280,11 @@ - +

Set the maximum number of atoms the VM can handle. Default is 1048576.

- +

Enables modified timing and sets the modified timing level. Currently valid range is 0-9. The timing of the runtime system @@ -1339,7 +1338,7 @@

Miscellaneous flags.

- +zdbbl size + +zdbbl size

Set the distribution buffer busy limit (dist_buf_busy_limit) @@ -1352,7 +1351,7 @@ give lower latency and higher throughput at the expense of higher memory usage.

- +zdntgc time + +zdntgc time

Set the delayed node table garbage collection time (delayed_node_table_gc) @@ -1426,7 +1425,7 @@ - +

The content of this environment variable will be added to the beginning of the command line for .

@@ -1436,7 +1435,7 @@ the section, i.e. the end of the command line following after an flag.

- and + and

The content of these environment variables will be added to the end of the command line for .

-- cgit v1.2.3 From dc6d89bc1c08e15f8d4cd32f2e0886713cdc2dc2 Mon Sep 17 00:00:00 2001 From: Derek Brown Date: Wed, 4 Nov 2015 16:05:33 +0100 Subject: Fix typos and grammar --- erts/doc/src/erl.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index 63ab2532ab..ec4a0dee05 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -371,7 +371,7 @@ path, similar to . See code(3). As an alternative to -pa, if several directories are - to be prepended to the code and the directories have a + to be prepended to the code path and the directories have a common parent directory, that parent directory could be specified in the ERL_LIBS environment variable. See code(3).

@@ -1184,7 +1184,7 @@ 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 + for long-executing native code, and native code that does not bump reductions properly in OTP. When these bugs have be fixed the +sfwi flag will be removed.

@@ -1210,7 +1210,7 @@ balance scheduler utilization between schedulers. That is, strive for equal scheduler utilization on all schedulers.
   +sub true is only supported on - systems where the runtime system detects and use a monotonically + systems where the runtime system detects and uses a monotonically increasing high resolution clock. On other systems, the runtime system will fail to start.
   +sub true implies -- cgit v1.2.3 From 3ac08f9b668613a4292436979eacc61863c2ab94 Mon Sep 17 00:00:00 2001 From: Rickard Green Date: Wed, 16 Sep 2015 15:02:50 +0200 Subject: Fragmented young heap generation and off_heap_message_queue option * The youngest generation of the heap can now consist of multiple blocks. Heap fragments and message fragments are added to the youngest generation when needed without triggering a GC. After a GC the youngest generation is contained in one single block. * The off_heap_message_queue process flag has been added. When enabled all message data in the queue is kept off heap. When a message is selected from the queue, the message fragment (or heap fragment) containing the actual message is attached to the youngest generation. Messages stored off heap is not part of GC. --- erts/doc/src/erl.xml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index b0322b7d43..8c1be4dff5 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -1335,6 +1335,21 @@ error_logger(3) for further information.

+ + +

Default process flag settings.

+ + +xohmq true|false +

+ Sets the default value for the process flag + off_heap_message_queue. If +xohmq is not + passed, false will be the default. For more information, + see the documentation of + process_flag(off_heap_message_queue, + OHMQ). +

+
+

Miscellaneous flags.

-- cgit v1.2.3 From 19c4689eea86f26c5af9b8f712c227ce4f62310b Mon Sep 17 00:00:00 2001 From: Rickard Green Date: Tue, 24 Nov 2015 15:57:55 +0100 Subject: Replace off_heap_message_queue option with message_queue_data option The message_queue_data option can have the values - off_heap - on_heap - mixed --- erts/doc/src/erl.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index c4eb0e16ec..b6fa4c254c 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -1338,14 +1338,14 @@

Default process flag settings.

- +xohmq true|false + +xmqd off_heap|on_heap|mixed

Sets the default value for the process flag - off_heap_message_queue. If +xohmq is not - passed, false will be the default. For more information, + message_queue_data. If +xmqd is not + passed, mixed will be the default. For more information, see the documentation of - process_flag(off_heap_message_queue, - OHMQ). + process_flag(message_queue_data, + MQD).

-- cgit v1.2.3 From f5c9dd660f3f098ba1e2a4110be594013a6dff11 Mon Sep 17 00:00:00 2001 From: Siri Hansen Date: Thu, 14 Jan 2016 12:07:39 +0100 Subject: Add documentation of '-path' flag to 'erl' This flag replaces the path specified in the boot script. It has always existed, but was earlier only documented in SASL (script). --- erts/doc/src/erl.xml | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index ec4a0dee05..e8621fecc3 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -382,6 +382,11 @@ similar to . See code(3).

+ + +

Replaces the path specified in the boot script. See + script(4).

+

Starts Erlang with a remote shell connected to .

-- cgit v1.2.3 From 40695d080b0dc0665b01803768ffc74ed2eca207 Mon Sep 17 00:00:00 2001 From: Michael Santos Date: Sun, 18 Oct 2015 16:20:37 -0400 Subject: epmd: support IPv6 node registration Allow IPv6 nodes to register with and query epmd. On systems with IPv6 support: * epmd listens on both the IPv4 and IPv6 ANY or loopback sockets * the epmd cli client connects to epmd over the IPv6 loopback * distributed nodes started with "-proto_dist inet6_tcp" will register with epmd over IPv6 To work on IPv6 capable systems that have IPv6 support disabled, epmd ignores errors opening the socket if the protocol is not supported. Similarly, the epmd client will fall back to IPv4 if the IPv6 socket is not available. Update the minimum supported version of Windows to Windows Vista to support IPv6. --- erts/doc/src/erl.xml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index e8621fecc3..ed3e7e34c4 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -387,6 +387,28 @@

Replaces the path specified in the boot script. See script(4).

+ + +

Specify a protocol for Erlang distribution.

+ + inet_tcp + +

TCP over IPv4 (the default)

+
+ inet_tls + +

distribution over TLS/SSL

+
+ inet6_tcp + +

TCP over IPv6

+
+
+

For example, to start up IPv6 distributed nodes:

+
+% erl -name test@ipv6node.example.com -proto_dist inet6_tcp
+
+

Starts Erlang with a remote shell connected to .

-- cgit v1.2.3 From 6664eed554974336909d3ffe03f20349cc4c38fd Mon Sep 17 00:00:00 2001 From: Henrik Nord Date: Tue, 15 Mar 2016 15:19:56 +0100 Subject: update copyright-year --- erts/doc/src/erl.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index 096af096dc..e13470c83c 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -4,7 +4,7 @@
- 19962015 + 19962016 Ericsson AB. All Rights Reserved. -- cgit v1.2.3 From 6aae129123c4ce8988cc67b3545db9d1ec51324b Mon Sep 17 00:00:00 2001 From: Lukas Larsson Date: Fri, 22 Apr 2016 18:45:30 +0200 Subject: erts: Rename erl flag +xmqd to +hmqd Flags that control the heap should all fall under the +h flag --- erts/doc/src/erl.xml | 24 +++++++++--------------- 1 file changed, 9 insertions(+), 15 deletions(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index e13470c83c..c499fc8081 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -632,6 +632,15 @@

Sets the initial process dictionary size of processes to the size .

+ +hmqd off_heap|on_heap|mixed +

+ Sets the default value for the process flag + message_queue_data. If +hmqd is not + passed, mixed will be the default. For more information, + see the documentation of + process_flag(message_queue_data, + MQD). +

Enables or disables the kernel poll functionality if @@ -1361,21 +1370,6 @@ error_logger(3) for further information.

- - -

Default process flag settings.

- - +xmqd off_heap|on_heap|mixed -

- Sets the default value for the process flag - message_queue_data. If +xmqd is not - passed, mixed will be the default. For more information, - see the documentation of - process_flag(message_queue_data, - MQD). -

-
-

Miscellaneous flags.

-- cgit v1.2.3 From e146a3eec5a2d384260aa8829777c89eaab09cbd Mon Sep 17 00:00:00 2001 From: Lukas Larsson Date: Thu, 21 Apr 2016 18:36:45 +0200 Subject: erts: Implement max_heap_size process flag The max_heap_size process flag can be used to limit the growth of a process heap by killing it before it becomes too large to handle. It is possible to set the maximum using the `erl +hmax` option, `system_flag(max_heap_size, ...)`, `spawn_opt(Fun, [{max_heap_size, ...}])` and `process_flag(max_heap_size, ...)`. It is possible to configure the behaviour of the process when the maximum heap size is reached. The process may be sent an untrappable exit signal with reason kill and/or send an error_logger message with details on the process state. A new trace event called gc_max_heap_size is also triggered for the garbage_collection trace flag when the heap grows larger than the configured size. If kill and error_logger are disabled, it is still possible to see that the maximum has been reached by doing garbage collection tracing on the process. The heap size is defined as the sum of the heap memory that the process is currently using. This includes all generational heaps, the stack, any messages that are considered to be part of the heap and any extra memory the garbage collector may need during collection. In the current implementation this means that when a process is set using on_heap message queue data mode, the messages that are in the internal message queue are counted towards this value. For off_heap, only matched messages count towards the size of the heap. For mixed, it depends on race conditions within the VM whether a message is part of the heap or not. Below is an example run of the new behaviour: Eshell V8.0 (abort with ^G) 1> f(P),P = spawn_opt(fun() -> receive ok -> ok end end, [{max_heap_size, 512}]). <0.60.0> 2> erlang:trace(P, true, [garbage_collection, procs]). 1 3> [P ! lists:duplicate(M,M) || M <- lists:seq(1,15)],ok. ok 4> =ERROR REPORT==== 26-Apr-2016::16:25:10 === Process: <0.60.0> Context: maximum heap size reached Max heap size: 512 Total heap size: 723 Kill: true Error Logger: true GC Info: [{old_heap_block_size,0}, {heap_block_size,609}, {mbuf_size,145}, {recent_size,0}, {stack_size,9}, {old_heap_size,0}, {heap_size,211}, {bin_vheap_size,0}, {bin_vheap_block_size,46422}, {bin_old_vheap_size,0}, {bin_old_vheap_block_size,46422}] flush(). Shell got {trace,<0.60.0>,gc_start, [{old_heap_block_size,0}, {heap_block_size,233}, {mbuf_size,145}, {recent_size,0}, {stack_size,9}, {old_heap_size,0}, {heap_size,211}, {bin_vheap_size,0}, {bin_vheap_block_size,46422}, {bin_old_vheap_size,0}, {bin_old_vheap_block_size,46422}]} Shell got {trace,<0.60.0>,gc_max_heap_size, [{old_heap_block_size,0}, {heap_block_size,609}, {mbuf_size,145}, {recent_size,0}, {stack_size,9}, {old_heap_size,0}, {heap_size,211}, {bin_vheap_size,0}, {bin_vheap_block_size,46422}, {bin_old_vheap_size,0}, {bin_old_vheap_block_size,46422}]} Shell got {trace,<0.60.0>,exit,killed} --- erts/doc/src/erl.xml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index c499fc8081..1bbde7f1e0 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -627,6 +627,34 @@

Sets the default binary virtual heap size of processes to the size .

+ + + +

Sets the default maximum heap size of processes to the size + . If +hmax is not given, the default is 0 + which means that no maximum heap size is used. + For more information, see the documentation of + + process_flag(max_heap_size, MaxHeapSize).

+
+ + + +

Sets whether to send an error logger message for processes that reach + the maximum heap size or not. If +hmaxel is not given, the default is true. + For more information, see the documentation of + + process_flag(max_heap_size, MaxHeapSize).

+
+ + + +

Sets whether to kill processes that reach the maximum heap size or not. If + +hmaxk is not given, the default is true. For more information, + see the documentation of + + process_flag(max_heap_size, MaxHeapSize).

+

Sets the initial process dictionary size of processes to the size -- cgit v1.2.3 From 36f98375d57daaba3fec42bb91482cdac9ef4cc9 Mon Sep 17 00:00:00 2001 From: Rickard Green Date: Wed, 25 May 2016 16:15:36 +0200 Subject: Remove the 'message_queue_data' option 'mixed' --- erts/doc/src/erl.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index 1bbde7f1e0..2fae3bfb1f 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -660,11 +660,11 @@

Sets the initial process dictionary size of processes to the size .

- +hmqd off_heap|on_heap|mixed + +hmqd off_heap|on_heap

Sets the default value for the process flag message_queue_data. If +hmqd is not - passed, mixed will be the default. For more information, + passed, on_heap will be the default. For more information, see the documentation of process_flag(message_queue_data, MQD). -- cgit v1.2.3 From 34f853950685e4e7ab38f30fc3f17a6beac13349 Mon Sep 17 00:00:00 2001 From: Magnus Henoch Date: Wed, 20 Apr 2016 14:40:39 +0100 Subject: Add -start_epmd command line option Add a command line option that lets you disable automatic starting of epmd when starting a distributed node. This differs from the undocumented setting -no_epmd, in that it does not affect the starting of an erl_epmd process within erl_distribution: the newly started node will expect an epmd instance to have been started previously. --- erts/doc/src/erl.xml | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index 1bbde7f1e0..e63928ddb0 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -338,7 +338,8 @@ net_kernel(3). It is also ensured that runs on the current host before Erlang is started. See - epmd(1).

+ epmd(1) and the + -start_epmd option.

The name of the node will be , where is the fully qualified host name of the current host. For short names, use the flag instead.

@@ -463,6 +464,21 @@ flag and those running with the flag, as node names must be unique in distributed Erlang systems.

+ -start_epmd true | false + + +

Specifies whether Erlang should start + epmd on startup. By default + this is true, but if you prefer to start epmd + manually, set this to false.

+ +

This only applies if Erlang is started as a distributed node, + i.e. if -name or -sname is specified. Otherwise, + epmd is not started even if -start_epmd true is given.

+ +

Note that a distributed node will fail to start if epmd is + not running.

+

-smp enable and -smp starts the Erlang runtime -- cgit v1.2.3 From 7b5ca88b32c22a7f1a3152265d8d73418013b1c0 Mon Sep 17 00:00:00 2001 From: Lukas Larsson Date: Fri, 13 May 2016 10:38:20 +0200 Subject: erts: Fix doc xml errors --- erts/doc/src/erl.xml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index 5d5bfb141f..7b90a1ccca 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -643,8 +643,7 @@

Sets the default binary virtual heap size of processes to the size .

- - +

Sets the default maximum heap size of processes to the size . If +hmax is not given, the default is 0 @@ -653,8 +652,7 @@ process_flag(max_heap_size, MaxHeapSize).

- - +

Sets whether to send an error logger message for processes that reach the maximum heap size or not. If +hmaxel is not given, the default is true. @@ -662,8 +660,7 @@ process_flag(max_heap_size, MaxHeapSize).

- - +

Sets whether to kill processes that reach the maximum heap size or not. If +hmaxk is not given, the default is true. For more information, @@ -676,7 +673,7 @@

Sets the initial process dictionary size of processes to the size .

- +hmqd off_heap|on_heap + +hmqd off_heap|on_heap

Sets the default value for the process flag message_queue_data. If +hmqd is not -- cgit v1.2.3 From 615b79a01706033e1ef0d78f020ebbb47fc80b86 Mon Sep 17 00:00:00 2001 From: Rickard Green Date: Thu, 16 Jun 2016 17:33:28 +0200 Subject: Add documentation about dirty job type --- erts/doc/src/erl.xml | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index 7b90a1ccca..436c2c57e1 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -915,6 +915,13 @@ number of dirty CPU schedulers online can be changed at run time via erlang:system_flag(dirty_cpu_schedulers_online, DirtyCPUSchedulersOnline).

+

+ The amount of dirty CPU schedulers is limited by the amount of + normal schedulers in order to limit the effect on processes + executing on ordinary schedulers. If the amount of dirty CPU + schedulers was allowed to be unlimited, dirty CPU bound jobs would + potentially starve normal jobs. +

This option is ignored if the emulator doesn't have threading support enabled. Currently, this option is experimental and is supported only if the emulator was configured and built with support for dirty schedulers @@ -944,7 +951,7 @@ enabled (it's disabled by default).

- +

Sets the number of dirty I/O scheduler threads to create when threading support has been enabled. The valid range is 0-1024. By default, the number @@ -952,6 +959,16 @@ threads in the async thread pool .

+

+ The amount of dirty IO schedulers is not limited by the amount of + normal schedulers like the amount of + dirty CPU schedulers. This since only I/O bound work is + expected to execute on dirty I/O schedulers. I/O bound jobs are + expected to either block waiting for I/O, and/or spend a limited + amount of time moving data. However, if the user should schedule CPU + bound jobs on dirty I/O schedulers, these jobs might starve ordinary + jobs executing on ordinary schedulers. +

This option is ignored if the emulator doesn't have threading support enabled. Currently, this option is experimental and is supported only if the emulator was configured and built with support for dirty schedulers -- cgit v1.2.3 From c9ad0c9fed1d33891f5fa8a4c4511de48417ec10 Mon Sep 17 00:00:00 2001 From: Rickard Green Date: Fri, 17 Jun 2016 11:53:29 +0200 Subject: Minor reorganization of dirty NIF documentation --- erts/doc/src/erl.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'erts/doc/src/erl.xml') diff --git a/erts/doc/src/erl.xml b/erts/doc/src/erl.xml index 436c2c57e1..37387f2c59 100644 --- a/erts/doc/src/erl.xml +++ b/erts/doc/src/erl.xml @@ -963,9 +963,7 @@ The amount of dirty IO schedulers is not limited by the amount of normal schedulers like the amount of dirty CPU schedulers. This since only I/O bound work is - expected to execute on dirty I/O schedulers. I/O bound jobs are - expected to either block waiting for I/O, and/or spend a limited - amount of time moving data. However, if the user should schedule CPU + expected to execute on dirty I/O schedulers. If the user should schedule CPU bound jobs on dirty I/O schedulers, these jobs might starve ordinary jobs executing on ordinary schedulers.

-- cgit v1.2.3