[erlang-questions] +secio emulator flag

Michael Truog <>
Mon Sep 11 22:09:26 CEST 2017


On 09/11/2017 06:32 AM, Lukas Larsson wrote:
> Hello,
>
> On Thu, Aug 31, 2017 at 10:07 AM, Mikael Karlsson < <mailto:>> wrote:
>
>     I noticed that the secio emulator flag (scheduler eager check for io) default value has changed from false to true since ERTS 7.0. Could someone explain what this means in practice, I do not quite understand the line: "This, however, also implies that execution of outstanding I/O operation is not prioritized to the same extent as when false is passed."
>
>
> The eager check io flag instructs the emulator when it should check for new I/O events (internally called check_io)  in the fds that it is currently interested in.
>
> Without secio, the schedulers will first finish with all work generated from the previous check_io. If a lot of I/O events where triggered by the check_io, ports may be temporarily prioritized higher than processes in order to be able to do the next check_io sooner.
>
> With secio, the next check_io can be done before all events of the previous check_io are consumed. When this feature is enabled, the temporary higher prioritization of ports is removed. This is the change in priority that the documentation is trying to explain.
>
>     Is there any special cases where you would prefer to still have it set to false.
>
>
> I see no reason to not have secio enabled.
>
I have tested in the past to determine that secio can make Erlang source code performance poor, if it isn't utilizing an Erlang port type, though the testing was with Erlang/OTP 17.4 (https://github.com/CloudI/loadtests/raw/master/tests/http_req/loadtest/results_v1_4_0/201412_summary.pdf).

Best Regards,
Michael
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20170911/c5dc7fe4/attachment.html>


More information about the erlang-questions mailing list