aboutsummaryrefslogtreecommitdiffstats
path: root/lib
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-10crypto: Obey compile flags for no DSA, BF, DES, DHHans Nilsson
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-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 '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 '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 '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-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-07calendar.xml: fix typoMikael Pettersson
2019-04-05Merge branch 'sverker/crypto/bcmp-memcmp-fix/OTP-15750'Sverker Eriksson
into sverker/master/crypto/bcmp-memcmp-fix/OTP-15750
2019-04-05crypto: Fix link error on windowsSverker Eriksson
Replace deprecated 'bcmp' with 'memcmp'.
2019-04-05crypto: User's Guide and Reference Manual for the new apiHans Nilsson
2019-04-05crypto: Fix valgrind error for api_ng.cHans Nilsson
2019-04-05ssh: Use new crypto function namesHans Nilsson
2019-04-05crypto: Fixup lots of testsHans Nilsson
2019-04-05crypto: Rename new api and rework the typingHans Nilsson
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.
2019-04-05crypto: Misc C-changes,Hans Nilsson
error fixes, better error reporting (file and line), make aead more robust and like the _ng api.
2019-04-05ssl: Do not use broken OpenSSL clientsIngela Anderton Andin
Also remove dead code
2019-04-05ssl: Correct test inputIngela Anderton Andin
2019-04-05Merge branch 'lukas/erl_docgen/add-internal-docs'Björn Gustavsson
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
2019-04-05Merge branch 'bjorn/doc/fix-broken-links'Björn Gustavsson
* bjorn/doc/fix-broken-links: Fix broken links
2019-04-05Merge branch 'john/kernel/file_SUITE-skip-large_write-nfs'John Högberg
* john/kernel/file_SUITE-skip-large_write-nfs: file_SUITE: Skip large_file test if we fail to query free disk space
2019-04-05Merge branch 'ingela/ssl/cuddle-tests'Ingela Anderton Andin
* 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
2019-04-05ssl: Avoid hiding fault reason as timeoutIngela Anderton Andin
Use of rpc:call could hide the real crash reason
2019-04-05ssl: sslv2 clients rejected in new way as sslv2 hello compatibility is droppedIngela Anderton Andin
2019-04-05Add options for suppressing warnings about removed functionsBjörn Gustavsson
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.
2019-04-05Correct description for removal of rpc:safe_multi_server_call/2Björn Gustavsson
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 ^^^^^^^^^^^^^^^^^^
2019-04-05Add a reminder to remove the warning for os_mon_mib in OTP 24Björn Gustavsson
2019-04-05No longer warn for use of the overload moduleBjörn Gustavsson
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.
2019-04-05Don't warn for removed functions in OTP 18 or olderBjörn Gustavsson
2019-04-04Merge branch 'maint'Rickard Green
* maint: Find installed OTP for Ubuntu
2019-04-04Merge branch 'rickard/ts-find-ubuntu-inst/OTP-15716' into maintRickard Green
* rickard/ts-find-ubuntu-inst/OTP-15716: Find installed OTP for Ubuntu
2019-04-04Fix broken linksBjörn Gustavsson
A multitude of broken links were found when a bug was fixed in the link checker.
2019-04-04parsetools: Remove no longer working testsHans Bolinder
Since Erlang/OTP 21 "//" can be opened for writing on Windows, but writing to the file causes file_io_server to crash.
2019-04-04cerl_clauses: Fix broken linkBjörn Gustavsson
2019-04-04erts: Fix more internal docs xmllintLukas Larsson
2019-04-04compiler: Add internal docs sectionLukas Larsson