aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2019-04-10Decentralized counters for ETS ordered_set with write_concurrencyKjell Winblad
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
2019-04-10Merge pull request #2205 from bjorng/bjorn/record_info/ERL-907Björn Gustavsson
Issue an error for improper use of record_info/2 in a fun OTP-15760
2019-04-10Merge branch 'hasse/parsetools/fix_leex_test'Hans Bolinder
* hasse/parsetools/fix_leex_test: parsetools: Remove no longer working tests
2019-04-10Merge branch 'hans/crypto/ifdef_no_alg/OTP-15683'Hans Nilsson
* hans/crypto/ifdef_no_alg/OTP-15683: crypto: Obey compile flags for no DSA, BF, DES, DH
2019-04-10crypto: Obey compile flags for no DSA, BF, DES, DHHans Nilsson
2019-04-10Merge branch 'hans/crypto/valgrind/OTP-15644'Hans Nilsson
* hans/crypto/valgrind/OTP-15644: crypto: Remove compiler warning on an fprintf in the otp test engine crypto: Fix valgrind error in api_ng.c ng_crypto_one_time for OpenSSL<1.0.1
2019-04-10crypto: Remove compiler warning on an fprintf in the otp test engineHans Nilsson
The otp_test_engine is only used in some of the test cases.
2019-04-10crypto: Fix valgrind error in api_ng.c ng_crypto_one_time for OpenSSL<1.0.1Hans Nilsson
2019-04-10Merge branch 'bmk/snmp/compiler/20190328/otp_mibs_cleanup'Micael Karlberg
2019-04-10Merge branch 'maint'Lukas Larsson
2019-04-10Merge branch 'lukas/erl_interface/depend-fix/OTP-15757' into maintLukas Larsson
* lukas/erl_interface/depend-fix/OTP-15757: erl_interface: Generate dependencies at compile time
2019-04-10erl_interface: Generate dependencies at compile timeLukas Larsson
2019-04-10Merge branch 'hasse/dialyzer/improve_binary_printing/OTP-15752'Hans Bolinder
* hasse/dialyzer/improve_binary_printing/OTP-15752: dialyzer: Fix pretty printing of binaries
2019-04-10Merge pull request #2197 from lbolla/spelling-mistakes-fixBjörn Gustavsson
Fix various spelling mistakes
2019-04-10Merge pull request #2204 from jhogberg/john/erts/optimize-arith-ops/OTP-15740John Högberg
erts: Optimize arithmetic ops using overflow intrinsics
2019-04-10Merge branch 'john/merge-re-replace-fix'John Högberg
* john/merge-re-replace-fix: erts: Skip ERTS_NOINLINE on non-GCC-compatible compilers cleanup: beam_emu.c: use ERTS_NOINLINE instead of NOINLINE stdlib: fix re:replace on LTO builds
2019-04-09Merge branch 'peterdmv/ssl/fix-chacha-ciphers'Péter Dimitrov
* peterdmv/ssl/fix-chacha-ciphers: ssl: Fix Chacha20 IV length and nonce calculation Change-Id: I69b88bcfe0e9a6b9157884e9df049e15f4a35b95
2019-04-09Merge branch ↵Lukas Larsson
'lukas/erts/fragment-dist-messages/OTP-13397/OTP-15610/OTP-15611/OTP-15612/OTP-15613/OTP-15703' * lukas/erts/fragment-dist-messages/OTP-13397/OTP-15610/OTP-15611/OTP-15612/OTP-15613/OTP-15703: erts: Fix dist sequence yield state allocator type erts: Fix driver_SUITE:use_fallback_pollset erts: Yield when exiting/free process is suspended by de erts: Fix alignment of ErtsDistExternal on sparc erts: Fix incorrect gcc may be used init warning erts: Skip large dist testcases on machines with little memory erts: Fix lock order violation in system_info(procs) erts: Fix buffer alignment bug in alloc_dist_obuf erts: Fix build of dist_ctrl_get_data return term
2019-04-09erts: Fix dist sequence yield state allocator typeLukas Larsson
The wrong allocator type was given to erts_free.
2019-04-09erts: Fix driver_SUITE:use_fallback_pollsetLukas Larsson
We don't check for io errors as the pollset will be unstable.
2019-04-09erts: Yield when exiting/free process is suspended by deLukas Larsson
Complementory fix to 922fd355831575965
2019-04-09erts: Fix alignment of ErtsDistExternal on sparcLukas Larsson
The edep->data values need to be 64-bit aligned as it contains 64-bit values.
2019-04-09erts: Fix incorrect gcc may be used init warningLukas Larsson
2019-04-09erts: Skip large dist testcases on machines with little memoryLukas Larsson
2019-04-09erts: Fix lock order violation in system_info(procs)Lukas Larsson
2019-04-09erts: Fix buffer alignment bug in alloc_dist_obufLukas Larsson
Cannot do unaligned word writes on sparc!
2019-04-09erts: Fix build of dist_ctrl_get_data return termLukas Larsson
2019-04-09Merge branch 'maint'Lukas Larsson
2019-04-09Merge branch 'lukas/erts/fix-fd-driver-select/OTP-15753' into maintLukas Larsson
* lukas/erts/fix-fd-driver-select/OTP-15753: erts: Fix sys_driver to correctly deselect fds
2019-04-09erts: Fix sys_driver to correctly deselect fdsLukas Larsson
Incorrect precidence rules made the driver never deselect the given fds.
2019-04-09Merge branch 'hasse/stdlib/erl_pp_throw/OTP-15751'Hans Bolinder
* hasse/stdlib/erl_pp_throw/OTP-15751: stdlib: Fix a bug concerning exception class 'throw'
2019-04-09Issue an error for improper use of record_info/2 in a funBjörn Gustavsson
`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
2019-04-08Merge branch 'maint'Sverker Eriksson
2019-04-08Merge branch 'sverker/crypto/bcmp-memcmp-fix/OTP-15750' into maintSverker Eriksson
* sverker/crypto/bcmp-memcmp-fix/OTP-15750: crypto: Fix link error on windows
2019-04-08Merge branch 'maint'Rickard Green
* maint: Use string:tokens instead of string:lexemes on OTP 19
2019-04-08Merge branch 'rickard/ts-find-ubuntu-inst-19/OTP-15716' into maintRickard Green
* rickard/ts-find-ubuntu-inst-19/OTP-15716: Use string:tokens instead of string:lexemes on OTP 19
2019-04-08Use string:tokens instead of string:lexemes on OTP 19Rickard Green
2019-04-08Merge branch 'bjorn/erts/cuddle-with-tests'Björn Gustavsson
* bjorn/erts/cuddle-with-tests: statistics_SUITE: Make wall_clock_update/1 more tolerant
2019-04-08Merge branch 'sverker/master/crypto/bcmp-memcmp-fix/OTP-15750'Sverker Eriksson
* sverker/master/crypto/bcmp-memcmp-fix/OTP-15750: crypto: Fix link error on windows
2019-04-08dialyzer: Fix pretty printing of binariesHans Bolinder
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".
2019-04-08Merge pull request #2202 from bjorng/bjorn/tune-beam-4Björn Gustavsson
Optimize the i_minus instruction
2019-04-08stdlib: Fix a bug concerning exception class 'throw'Hans Bolinder
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 '_'.
2019-04-08Merge branch 'ingela/ssl/cuddle-tests'Ingela Anderton Andin
* ingela/ssl/cuddle-tests: ssl: Do not use broken OpenSSL clients ssl: Correct test input
2019-04-08Merge pull request #2200 from ↵Björn Gustavsson
bjorng/bjorn/deprecation-warnings/ERL-904/OTP-15749 Add compiler option for suppressing warnings about removed functions/modules
2019-04-08erts: Optimize arithmetic ops using overflow intrinsicsJohn Högberg
2019-04-08erts: Skip ERTS_NOINLINE on non-GCC-compatible compilersJohn Högberg
__declspec(noinline) works fine on MSVC but requires us to place the macro before a function rather than after, which in turn causes early versions of GCC to puke since they only accept __attribute__ at the end of a function declaration. Since this is a new macro that previously only saw use in beam_emu, I figured it's easiest to leave it disabled on MSVC.
2019-04-08Merge pull request #2203 from mikpe/calendar-xml-typoBjörn Gustavsson
calendar.xml: fix typo
2019-04-07calendar.xml: fix typoMikael Pettersson
2019-04-05Merge branch 'hans/crypto/cuddle_docs'Hans Nilsson
* hans/crypto/cuddle_docs: crypto: User's Guide and Reference Manual for the new api
2019-04-05Merge branch 'sverker/crypto/bcmp-memcmp-fix/OTP-15750'Sverker Eriksson
into sverker/master/crypto/bcmp-memcmp-fix/OTP-15750