Age | Commit message (Collapse) | Author |
|
Previously, all ETS tables used centralized counter variables to keep
track of the number of items stored and the amount of memory
consumed. These counters can cause scalability problems (especially on
big NUMA systems). This commit adds an implementation of a
decentralized counter and modifies the implementation of ETS so that
ETS tables of type ordered_set with write_concurrency enabled use the
decentralized counter. [Experiments][1] indicate that this change
substantially improves the scalability of ETS ordered_set tables with
write_concurrency enabled in scenarios with frequent `ets:insert/2`
and `ets:delete/2` calls.
The new counter is implemented in the module erts_flxctr
(`erts_flxctr.h` and `erts_flxctr.c`). The module has the suffix
flxctr as it contains the implementation of a flexible counter (i.e.,
counter instances can be configured to be either centralized or
decentralized). Counters that are configured to be centralized are
implemented with a single counter variable which is modified with
atomic operations. Decentralized counters are spread over several
cache lines (how many can be configured with the parameter
`+dcg`). The scheduler threads are mapped to cache lines so that there
is no single point of contention when decentralized counters are
updated. The thread progress functionality of the Erlang VM is
utilized to implement support for linearizable snapshots of
decentralized counters. The snapshot functionality is used by the
`ets:info/1` and `ets:info/2` functions.
[1]: http://winsh.me/ets_catree_benchmark/flxctr_res.html
|
|
Issue an error for improper use of record_info/2 in a fun
OTP-15760
|
|
* hasse/parsetools/fix_leex_test:
parsetools: Remove no longer working tests
|
|
|
|
The otp_test_engine is only used in some of the test cases.
|
|
|
|
|
|
|
|
* lukas/erl_interface/depend-fix/OTP-15757:
erl_interface: Generate dependencies at compile time
|
|
|
|
* hasse/dialyzer/improve_binary_printing/OTP-15752:
dialyzer: Fix pretty printing of binaries
|
|
Fix various spelling mistakes
|
|
* peterdmv/ssl/fix-chacha-ciphers:
ssl: Fix Chacha20 IV length and nonce calculation
Change-Id: I69b88bcfe0e9a6b9157884e9df049e15f4a35b95
|
|
* hasse/stdlib/erl_pp_throw/OTP-15751:
stdlib: Fix a bug concerning exception class 'throw'
|
|
`record_info/2` is a pseudo-function that requires literal arguments
known at compile time. Therefore, the following usage is illegal:
f() -> fun record_info/2.
However, `erl_lint` did not issue a compilation error for this usage,
and the compiler would crash in a later pass.
https://bugs.erlang.org/browse/ERL-907
|
|
* sverker/crypto/bcmp-memcmp-fix/OTP-15750:
crypto: Fix link error on windows
|
|
* sverker/master/crypto/bcmp-memcmp-fix/OTP-15750:
crypto: Fix link error on windows
|
|
Notice the comment in dialyzer_utils:
%% Copied from core_pp. The function cerl:binary_segments/2 should/could
%% be extended to handle literals, but then the cerl module cannot be
%% HiPE-compiled as of Erlang/OTP 22.0 (due to <<I:N>>).
When at it: simplify some common cases like "/binary-unit:8".
|
|
Since the introduction of the stack trace variable, the Erlang Pretty
Printer has left out the exception class 'throw' even when the stack
trace variable cannot be left out, which is not correct Erlang code.
The fix is to always include the exception class 'throw'.
An alternative is to exclude 'throw' exactly when the stack trace
variable is '_'.
|
|
* ingela/ssl/cuddle-tests:
ssl: Do not use broken OpenSSL clients
ssl: Correct test input
|
|
bjorng/bjorn/deprecation-warnings/ERL-904/OTP-15749
Add compiler option for suppressing warnings about removed functions/modules
|
|
|
|
into sverker/master/crypto/bcmp-memcmp-fix/OTP-15750
|
|
Replace deprecated 'bcmp' with 'memcmp'.
|
|
|
|
|
|
|
|
|
|
Split conceptually into an OLD and a NEW api with separate typing.
The NEW api will in general not provide types for ciphers without key length like aes_ctr. Use aes_128_ctr etc.
Later the C-code will not accept them either.
|
|
error fixes, better error reporting (file and line), make aead more robust and like the _ng api.
|
|
Also remove dead code
|
|
|
|
OTP-15715
* lukas/erl_docgen/add-internal-docs:
cerl_clauses: Fix broken link
Fix minor typos
Add CountingInstructions to the internal documentation
GarbageCollection.md: Fix links to references
emd2exml: Remove paragraphs around image tags
emd2exml: Clean emphasis markers in link texts
emd2exml: Allow short names of anchors for internal links
Include figures
erts: Fix more internal docs xmllint
compiler: Add internal docs section
erl_docgen: Add new internal docs chapter to docs
|
|
* bjorn/doc/fix-broken-links:
Fix broken links
|
|
* john/kernel/file_SUITE-skip-large_write-nfs:
file_SUITE: Skip large_file test if we fail to query free disk space
|
|
* ingela/ssl/cuddle-tests:
ssl: Avoid hiding fault reason as timeout
ssl: sslv2 clients rejected in new way as sslv2 hello compatibility is dropped
ssl: Run SNI test on specific TLS versions
|
|
Use of rpc:call could hide the real crash reason
|
|
|
|
An appliction outside of OTP may want to reuse then name of a module
that was previously included in OTP. Therefore, there should be
a way to suppress warnings for removed functions.
|
|
The warning would come out as:
Warning: call to rpc:safe_multi_server_call/2 will fail,
since it was removed in removed in OTP 19; use rpc:multi_server_call/2
^^^^^^^^^^^^^^^^^^
|
|
|
|
The entire overload module was removed in OTP 19. Stopping warning
for it now, since the module name could be used by code outside
OTP.
|
|
|
|
* maint:
Find installed OTP for Ubuntu
|
|
* rickard/ts-find-ubuntu-inst/OTP-15716:
Find installed OTP for Ubuntu
|
|
A multitude of broken links were found when a bug was fixed
in the link checker.
|
|
Since Erlang/OTP 21 "//" can be opened for writing on Windows, but
writing to the file causes file_io_server to crash.
|
|
|
|
|
|
|