aboutsummaryrefslogtreecommitdiffstats
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-27Merge branch 'lukas/17/docfixes/OTP-11613'Lukas Larsson
* lukas/17/docfixes/OTP-11613: system: Fix documentation typoes
2014-01-27system: Fix documentation typoesLukas Larsson
2014-01-27Merge branch 'dgud/wx/refactor-and-bugfixes/OTP-11586'Dan Gudmundsson
* dgud/wx/refactor-and-bugfixes/OTP-11586: wx: Delay all deletes if recursed in event loop wx: wx could hang if wxe_server died (or had died) when inside a callback wx: Delay memory cleanup until safe wx: Refactor C++ code wx: Add init_dialog event Update icons wx: Update icons to plain old white ones
2014-01-27Merge branch 'anders/diameter/sctp_streams/OTP-11593'Anders Svensson
* anders/diameter/sctp_streams/OTP-11593: Change interface for communicating outbound stream id to diameter_sctp
2014-01-27Merge branch 'anders/diameter/undefined_group/OTP-11561'Anders Svensson
* anders/diameter/undefined_group/OTP-11561: Ensure that Grouped AVP's are fully defined in dictionaries Don't format diameter_make:codec/2 errors Compiler suite fix
2014-01-27Merge branch 'bjorn/compiler/fix-crash/OTP-11610'Björn Gustavsson
* bjorn/compiler/fix-crash/OTP-11610: beam_except: Eliminate compiler crash
2014-01-24beam_except: Eliminate compiler crashBjörn Gustavsson
Code such as: bar(X) -> case {X+1} of 1 -> ok end. would crash the beam_except pass of the compiler. The reason for the crash is that the '+' operator would add a line/1 instruction that the beam_except pass was not prepared to handle. Reported-by: Erik Søe Sørensen
2014-01-24Change interface for communicating outbound stream id to diameter_sctpAnders Svensson
The module uses the transport_data field of record diameter_packet to communicate the stream on which the an incoming message is received and on which an outgoing message should be sent, the previous interface being that both are communicated as a tuple of the form {stream, Id}. However, since diameter retains the value of an incoming request's transport_data unless the corresponding answer message specifies otherwise, the behaviour in this case is to send an answer on the outbound stream with the same identifier as the that of the inbound stream on which the request was received. If the inbound stream id is greater than or equal to the number of outbound streams then this is guaranteed to fail, causing the transport process in question to terminate. There is no relationship between inbound and outbound stream identifiers so diameter_sctp's imposition of one is simply wrong. Outbound stream ids are now communicated with a different tuple: {outstream, Id}, interpreted modulo the number of outbound streams. Thus, retention of an inbound request's transport_data has no effect on the selection of an outbound stream. The change in interface is not strictly backwards compatible because of the new atom for the outbound stream. However, as there is currently no documented way of obtaining the available number of outbound streams for a peer connection, there is no way for a client to have known the range of ids from which it could reliably have chosen with the previous interface, so any setting of the outbound stream has probably been unintentional. Not explicitly specifying an outbound stream now results in a round-robin selection.
2014-01-24Merge branch 'andrewtj/atj-crypto-chiphertext-typo'Henrik Nord
* andrewtj/atj-crypto-chiphertext-typo: crypto: Fix 'ChipherText' typo in doc OTP-11609
2014-01-24Merge branch 'oliv3/fix_valgrind_warning_in_gen_challenge'Henrik Nord
* oliv3/fix_valgrind_warning_in_gen_challenge: (memcheck) Uninitialized structure in gen_challenge OTP-11608
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 'zaa/docfix'Henrik Nord
* zaa/docfix: Typo fix OTP-11606
2014-01-24Merge tag 'OTP_R16B03-1'Magnus Lidén
The R16B03-1 release
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-24Prepare releaseOTP_R16B03-1Erlang/OTP
2014-01-24Merge branch 'maint'Ingela Anderton Andin
Conflicts: otp_build
2014-01-24Merge branch 'ia/ssl/secure-renegotiate/OTP-11595' into maintIngela Anderton Andin
* ia/ssl/secure-renegotiate/OTP-11595: ssl: Incorrect inputed cipherlist lead server to think that the client did not support secure renegotiation
2014-01-24Merge branch 'rickard/load_balance/OTP-11385'Rickard Green
* rickard/load_balance/OTP-11385: Add support for scheduler utilization balancing
2014-01-23wx: Delay all deletes if recursed in event loopDan Gudmundsson
Avoids crashes.
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 'lucafavatella/fix-doc-of-dbg-stop'Henrik Nord
* lucafavatella/fix-doc-of-dbg-stop: Correct doc of return value of dbg:{stop,stop_clear} functions OTP-11603
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-23Merge branch 'vinoski/emacs-fixes'Henrik Nord
* vinoski/emacs-fixes: fix emacs erlang skeleton indentation fix indentation error from scan-sexp in erlang.el prevent errors from erlang.el fix erlang-mode erlang-get-function-arity OTP-11601
2014-01-22wx: wx could hang if wxe_server died (or had died) when inside a callbackDan Gudmundsson
The pid is not available via driver_caller(..) (see wxeCommand constr) inside driver_monitor callback.
2014-01-22wx: Delay memory cleanup until safeDan Gudmundsson
Previously we could do a cleanup while we where recursed down and thus delete the objects we where invoking.
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 'bjorn/asn1/optimizations/OTP-11573'Björn Gustavsson
* bjorn/asn1/optimizations/OTP-11573: Optimize code surrounding calls to complete/1 asn1ct_imm: Add the intermediate instruction {list,List,Dst} Generate intermediate code that is easier to optimize asn1ct_imm: Add the {set,{var,Src},{var,Dst}} instruction Keep type information in the apply intermediate instruction asn1ct_imm: Add a field for intermediate code for call_gen Introduce asn1ct_gen:open_output_file/1 Factor out printing of verbose messages Improve optimization of alignment for encoding Improve construction of {cons,H,T} instructions Teach asn1ct_func:call_gen/4 to quote the generated function name Test open types that may need more than 128 bytes
2014-01-22ssl: Incorrect inputed cipherlist lead server to think that the clientIngela Anderton Andin
did not support secure renegotiation
2014-01-22Merge remote-tracking branch 'vinoski/vinoski/emacs-skel-indent' into ↵Dan Gudmundsson
vinoski/emacs-fixes
2014-01-22Merge remote-tracking branch 'vinoski/vinoski/emacs-sexp-error' into ↵Dan Gudmundsson
vinoski/emacs-fixes
2014-01-22Merge remote-tracking branch 'vinoski/vinoski/emacs-fun-arity' into ↵Dan Gudmundsson
vinoski/emacs-fixes
2014-01-22Merge remote-tracking branch 'vinoski/vinoski/emacs-error-fixes' into ↵Dan Gudmundsson
vinoski/emacs-fixes
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-21Skip sys_erl_flagsMagnus Lidén
2014-01-21Merge branch 'hans/ssh/unicode/OTP-10953'Hans Nilsson
2014-01-21ssh: prepare vsn.mk for releaseHans Nilsson
2014-01-21ssh: minor doc correction about unicodeHans Nilsson
2014-01-21Merge branch 'maint'Magnus Lidén
2014-01-21Merge branch 'nox/fix-OTP-11506' into maintMagnus Lidén
* nox/fix-OTP-11506: Smoke test erl_syntax:revert/1 Fix reverting of local implicit funs in erl_syntax
2014-01-21Smoke test erl_syntax:revert/1Anthony Ramine
This tries to make bugs like 87156887b7d82a2db53f60441a4af87034cb8789 not happen again. The new test takes each file in the stdlib app, passes their forms through the erl_syntax representation, reverts them and compiles them.
2014-01-21Fix reverting of local implicit funs in erl_syntaxAnthony Ramine
This partially reverts 290dc2b08a2f92157ac5358fba815f4dbb32f8f2 in which implicit funs were mistakenly thought to be using abstract terms for their name and arity.