Age | Commit message (Collapse) | Author |
|
The runtime system is now less eager to suspend
processes sending messages over the distribution. The
default value of the distribution buffer busy limit
has also been increased from 128 KB to 1 MB. This in
order to improve throughput.
|
|
* sf/erts_de_busy_limit:
Add flag-based setting for the distribution buffer busy limit
|
|
Id: OTP-8912
This patch creates a new family of flags with the "+z" prefix. It
further creates a new configuration option called "dbbl" (which is the
first letter of the name dist_buf_busy_limit). Example usage of this
flag would be "+zdbbl 1048576".
This patch creates an adjustable buffer limit for the amount of data
that may be buffered by the erlang distribution code (in dist.c
specifically). Before this patch, this hard-coded constant was used:
#define ERTS_DE_BUSY_LIMIT (128*1024)
When large binaries are transmitted between nodes (or simply a lot of
medium-sized binaries), it is very easy to hit the old 128KB limit.
Processes that use the erlang:system_monitor() BIF to monitor system
events can be spammed by {monitor, busy_dist_port, ...} message tuples
at rates of tens to even hundreds of messages/second.
A larger buffer limit will allow processes to buffer more outgoing
messages over the distribution. When the buffer limit has been
reached, sending processes will be suspended until the buffer size has
shrunk. The buffer limit is per distribution channel. A higher limit
will give lower latency and higher throughput at the expense of
higher memory usage.
A variation of this patch has been in commercial production use in at
least two companies that the author is aware of. Larger buffer values
can reduce the number of {monitor, busy_dist_port, ...} system
messages drastically, lower overall messaging latencies, and prevent
false timeouts and 'nodedown' messages in extremely busy Mnesia systems.
Test suite: there are two tests:
a. In erlexec_SUITE.erl to test basic set & get of the value
b. In distribution_SUITE.erl, to verify that setting +zdbbl very
low will actually change behavior.
|
|
* hb/parsetools/format_yecc_messages/OTP-8919:
Improve formating of Yecc error messages
|
|
* ia/odbc/windows_fix:
Better configure test that also works on windows.
|
|
|
|
The formating of Yecc's error messages has been improved.
(Thanks to Joe Armstrong.)
|
|
|
|
* ia/odbc/ipv6/OTP-8917:
Ipv6 can now be supported on Windows as well as on UNIX.
Ipv6 should be supported on non windows.
|
|
* ks/bad-export_type:
Avoid errors for a badly formed export_type declarations
|
|
* ms/fix-string-copies:
string_SUITE: Add test for string:copies(Str, Float)
string_SUITE: Fix copy and paste error in test of string:copies/2
Fix crash in string:copies/2
OTP-8915
|
|
|
|
|
|
* ta/fix-dialyzer-documentation:
Add missing Dialyzer warning options to doc
|
|
* ks/strengthen-specs:
lists: Strengthen and modernize specs
syntax_tools: Fix an erroneous type and strengthen some specs
ordsets: Export ordset/1 type and strengthen specs
compiler: Strengthen some specs to shut off dialyzer warnings
|
|
|
|
* ks/rec-erl_types:
Deeper unfolding of recursive types
|
|
The change of taking out some hard-coded information about the file module
uncovered that the unfolding of recursive types was probably too shallow.
This has been fixed by unfolding it until a deeper limit (REC_TYPE_LIMIT).
While at erl_types.erl also did some cleanup changes and fixed an erroneous
io:format message.
|
|
* hb/stdlib/epp_file_and_inclusion/OTP-8911:
Fix epp bug concerning the file attribute and file inclusion
|
|
Loopback address constants are used when connecting the c-side
to the erlang-side over local socket API avoiding getaddrinfo problems,
and the {ip, loopback} option is added as a listen option on the erlang-side.
Also cleaned up the TIME_STAMP contribution.
|
|
Conflicts:
lib/cosNotification/src/CosNotification_Definitions.hrl
lib/cosNotification/vsn.mk
lib/orber/vsn.mk
|
|
Cover did not collect coverage data for files such as Yecc parses
containing include directives. The bug has been fixed by modifying
epp, the Erlang Code Preprocessor.
|
|
Conflicts:
lib/ssh/doc/src/notes.xml
lib/ssh/src/ssh.appup.src
lib/ssh/src/ssh_system_sup.erl
lib/ssh/vsn.mk
|
|
|
|
* nick/cosNotification/deprecated_regexp/OTP-8846:
Fiex TR tag.
Uppdatet year in header.
Added missing bracket.
Switched from using the deprecated regexp to re instead.
|
|
* nick/orber/corbaloc_http/OTP-8900:
Incorrect TR tag.
A corbaloc http string could return an EXIT message, instead of a system exception, if the HTTP server closed the socket without returning a complete message. I.e. header and a body containing a stringified IOR.
|
|
|
|
|
|
Strengthen some specs that were a bit more liberal than they should.
While at it, change uses of the is_subtype guard to :: which is more
modern and compact.
|
|
The declaration of the stubDescriptop() type in 'igor' was erroneous,
both in the -type and in the published documentation of the module.
While fixing this some specs where strengthened and used a remote
type to refer to ordsets:ordset(T). Consequently, this patch depends
on the ordsets module exporting the ordset/1 type.
|
|
|
|
|
|
Using a float for the number of copies results in an infinite loop.
Check that the argument is an integer.
Reported-By: Eric Pailleau
|
|
-Wno_opaque, -Wrace_conditions and -Wbehaviours are only documented
in the Dialyzer command line help text. Add them to the documentation.
|
|
|
|
* nick/ssh/missing_catch/OTP-8908:
The fix regarding OTP-8863 was not included in the previous version as stated
|
|
|
|
* maint-r14:
Prepare release
Add vts.tool to priv exports for unix
|
|
* ia/public_key/dialyzer:
Fixed typo in dialyzer spec.
|
|
|
|
* lukas/common_test/missing_vts_tool/OTP-8894:
Add vts.tool to priv exports for unix
|
|
* ia/ssl/certificate-verify/wrong-key-method/OTP-8897:
Correct handling of client certificate verify message
Conflicts:
lib/ssl/src/ssl_handshake.erl
|
|
|
|
* maint-r14:
Prepare release
Fix that the documentation top index generator can handle an Ericsson internal application group
Teach -init_debug to print info about on_load handlers begin run
Fix hang in on_load handlers in embedded mode
Conflicts:
erts/vsn.mk
lib/kernel/vsn.mk
|
|
|
|
* nick/ssh/fix-process-leak/OTP-8807:
Fix race condition when terminating a connection.
fix process leak in ssh_system_sup (dynamicaly created childs where not cleaned up)
|
|
* nick/ssh/crash_report/OTP-8881:
In some cases a crash report was generated when a connection was closing down. This was caused by a race condition between two processes.
|
|
|
|
* bjorn/fix-on_load/OTP-8902:
Teach -init_debug to print info about on_load handlers begin run
Fix hang in on_load handlers in embedded mode
|
|
* lars/erts/fix-erl-html-tools/OTP-8875:
Fix that the documentation top index generator can handle an Ericsson internal application group
|