aboutsummaryrefslogtreecommitdiffstats
path: root/erts
AgeCommit message (Collapse)Author
2014-01-28initial support for dirty schedulers and dirty NIFsSteve Vinoski
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.
2014-01-27Merge branch 'lukas/17/docfixes/OTP-11613'Lukas Larsson
* lukas/17/docfixes/OTP-11613: 17.0 anchor and broken links fixes
2014-01-27Merge branch 'rickard/load_balance/OTP-11385'Rickard Green
* rickard/load_balance/OTP-11385: Fix usage of non-empty run-queue flag
2014-01-27Fix usage of non-empty run-queue flagRickard Green
2014-01-2717.0 anchor and broken links fixesLukas Larsson
2014-01-27Merge branch 'lukas/erts/sendfile_passive_mode_fix/OTP-11614'Lukas Larsson
* lukas/erts/sendfile_passive_mode_fix/OTP-11614: erts: fix bug when using passive mode and sendfile
2014-01-27erts: fix bug when using passive mode and sendfileLukas Larsson
The bug incorrectly issued driver_select when un-ignoring an fd for a socket in passive mode, which caused an incorrect error tuple to be returned when the remote end closed the connection.
2014-01-24Merge branch 'blt/doc_language_improvement'Henrik Nord
* blt/doc_language_improvement: Clean up some awkward wording around the +spp flag. OTP-11607
2014-01-24Merge branch 'rickard/load_balance/OTP-11385'Rickard Green
* rickard/load_balance/OTP-11385: Disable scheduler utilization balancing if +scl true is passed
2014-01-24Disable scheduler utilization balancing if +scl true is passedRickard Green
2014-01-24Merge branch 'rickard/load_balance/OTP-11385'Rickard Green
* rickard/load_balance/OTP-11385: Add support for scheduler utilization balancing
2014-01-23Merge branch 'rickard/default_acul/OTP-11604'Rickard Green
* rickard/default_acul/OTP-11604: erts: Use "+Muacul de" as default
2014-01-23Add support for scheduler utilization balancingRickard Green
For more information see documentation of the new command line argument +sub
2014-01-23Merge branch 'vinoski/system-flag-warn-msg'Henrik Nord
* vinoski/system-flag-warn-msg: fix system_flag deprecation warnings OTP-11602
2014-01-22Merge branch 'bjorn/erts/zlib-1.2.8'Björn Gustavsson
* bjorn/erts/zlib-1.2.8: configure: Prefer the system's zlib over own our zlib source Update preloaded modules Add the 'rle' zstrategy Don't make gzio.c dependent on the zutil.h header file Update zlib to 1.2.8 erts/zlib: Remove unused file example.c
2014-01-22Merge branch 'dgud/test_unicode/OTP-10877'Dan Gudmundsson
* dgud/test_unicode/OTP-10877: sasl test: Quote executable paths (can contain spaces) rt_tools: Handle unicode chars in printouts kernel: code_SUITE fix unicode option Fix (unicode) debug info in test cases stdlib: Fix format if module resides in a unicode directory Fix testing with unicode paths test_server: Fix ts write unicode in config files
2014-01-21Merge branch 'djc/tinfo-ncurses'Henrik Nord
* djc/tinfo-ncurses: Add support for the separate tinfo library from ncurses OTP-11590
2014-01-21Fix testing with unicode pathsDan Gudmundsson
re needs unicode option
2014-01-20Merge branch 'sverk/term2bin-simplify'Sverker Eriksson
* sverk/term2bin-simplify: erts: Refactor ESTACK & WSTACK to use a struct easy to "export" erts: Fix benign ESTACK/WSTACK typo erts: Fix compiler warnings for NO_JUMP_TABLE erts: Run binary_SUITE:trapping even for 32bit erts: Extend binary_SUITE:ttb_trap to also cover binary_to_term erts: Remove the extra_root feature from the process structure erts: Simplify term_to_binary by removing saved ESTACK from root set
2014-01-20Fix testcase driver_SUITE:consume_timesliceRickard Green
2014-01-20Merge branch 'sverk/bin2term-int-size-estimation-bug'Sverker Eriksson
OTP-11585 * sverk/bin2term-int-size-estimation-bug: erts: Fix useless comparisons in binary_SUITE:external_size erts: Reduce heap usage for binary_SUITE:deep erts: Remove overestimation of heap space in binary_to_term
2014-01-20Merge branch 'bjorn/fix-line-number-in-bs-exception/OTP-11572'Björn Gustavsson
* bjorn/fix-line-number-in-bs-exception/OTP-11572: compiler: Correct line number in exception from binary construction
2014-01-20Merge branch 'egil/etp-commands/OTP-11582'Björn-Egil Dahlberg
* egil/etp-commands/OTP-11582: erts: Update etp-commands with heap-dump
2014-01-20Merge branch 'egil/fix-bs_get_integer/OTP-11581'Björn-Egil Dahlberg
* egil/fix-bs_get_integer/OTP-11581: erts: Fix bs_get_integer instruction
2014-01-17configure: Prefer the system's zlib over own our zlib sourceBjörn Gustavsson
WxWidgets (used by the wx application) also uses zlib. To ensure that the run-time system and WxWidgets use the same version of zlib, use the system's zlib if present. Also, the system's zlib may be specially optimized and thus faster than our own generic source code. We only use zlib versions that are "good enough". For now, that means 1.2.5 or higher. Remove the option --enable-shared-zlib and add the option --enable-builtin-zlib to force the use of the built-in zlib.
2014-01-17Merge branch 'fenollp/escript-doc-chmod'Henrik Nord
* fenollp/escript-doc-chmod: Add a chmod call in the CLI example OTP-11577
2014-01-17erts: Refactor ESTACK & WSTACK to use a struct easy to "export"Sverker Eriksson
This is not a clean refactor. It changes the behaviour slightly of E/WSTACK_RESTORE. The allocated stack from E/WSTACK_SAVE is used as-is and not copied into default_stack. This will hopefully fix an illusive memory leak that valgrind is reporting.
2014-01-16Update preloaded modulesBjörn Gustavsson
2014-01-16Add the 'rle' zstrategyBjörn Gustavsson
2014-01-16compiler: Correct line number in exception from binary constructionBjörn Gustavsson
Reported-by: Stanislav Seletskiy
2014-01-15fix system_flag deprecation warningsSteve Vinoski
Passing cpu_topology or scheduler_bind_type to erlang:system_flag/2 results in an error report warning that the argument is deprecated and is slated for removal in erts-5.10/OTP-R16. Since we're already past that version and no substitute approach has yet been decided for these features, keep the deprecation warning but bump the removal version it mentions up to Erlang 18.
2014-01-15erts: Fix benign ESTACK/WSTACK typoSverker Eriksson
2014-01-15erts: Fix compiler warnings for NO_JUMP_TABLESverker Eriksson
2014-01-14epmd: Fix -names option on WindowsJohannes Weißl
Since 3aa60cc `epmd -names` does not produce any output on Windows anymore. This patch uses fwrite() instead of write() which adds the necessary carriage returns to the output so that it is suitable for the Windows cmd.exe. A test case is added (fails on Windows without the patch).
2014-01-14Don't make gzio.c dependent on the zutil.h header fileBjörn Gustavsson
gzio.c is our own replacement for zlib's gzopen() etc (based on a version of gzio.c that was included in an old version of zlib). Unfortunately, gzio.c still depends on the *internal* zlib header file zutil.h which is not supposed to be used outside of the zlib source code. The dependencies are the use of the gzFile typedef and the F_OPEN() macro. Instead of gzFile, define and use our own ErtsGzFile. To get rid of the F_OPEN() macro, call open() of _wfopen() directly.
2014-01-14Update zlib to 1.2.8Björn Gustavsson
2014-01-13Merge branch 'rickard/otp-17-vsn-fix'Rickard Green
* rickard/otp-17-vsn-fix: Fix issues with new versioning
2014-01-13Merge branch 'lukas/erts/win-icon/OTP-11560'Lukas Larsson
* lukas/erts/win-icon/OTP-11560: erts: Update windows erlang icon
2014-01-13Merge branch 'lukas/erts/fix_sp_usage_printout/OTP-11559'Lukas Larsson
* lukas/erts/fix_sp_usage_printout/OTP-11559: erts: Replace tab with space for proper alignment
2014-01-10Merge branch 'lukas/erts/fd0_pipe_bug/OTP-11558'Lukas Larsson
* lukas/erts/fd0_pipe_bug/OTP-11558: erts: Make sure fds 0,1 and 2 are open
2014-01-10erts: Make sure fds 0,1 and 2 are openLukas Larsson
If they are not open a really nasty race where the io pipe in erl_poll got fd 0 and the fd_driver setting fd 0 to blocking could occur. This caused the emulator to hang during shutdown.
2014-01-10erts: Run binary_SUITE:trapping even for 32bitSverker Eriksson
Not sure why it was disabled for 32bit in the first place?
2014-01-10erts: Extend binary_SUITE:ttb_trap to also cover binary_to_termSverker Eriksson
and rename it 'trapping'.
2014-01-10erts: Remove the extra_root feature from the process structureSverker Eriksson
as we don't use it and instead have the feature to disable GC during trapping BIFs.
2014-01-10erts: Simplify term_to_binary by removing saved ESTACK from root setSverker Eriksson
We disabled GC (in 522a29666088d5) during trapping and don't need to include the saved ESTACK as part of root set.
2014-01-10erts: Replace tab with space for proper alignmentLukas Larsson
2014-01-10Add support for the separate tinfo library from ncursesDirkjan Ochtman
Recent versions of ncurses can be built with terminfo symbols moved into the separate tinfo library. This patch prevents erts configure from dying by adding the tinfo library to list of termcap lib candidates.
2014-01-09erts: Update etp-commands with heap-dumpBjörn-Egil Dahlberg
2014-01-09Fix issues with new versioningRickard Green
2014-01-09erts/zlib: Remove unused file example.cBjörn Gustavsson