build erlang with kqueue support

Bogdan Andu bog495@REDACTED
Tue Nov 16 10:30:33 CET 2021


Great,

I have the following:

2> erlang:system_info(check_io).
[[{name,erts_poll},
  {primary,poll},
 * {kernel_poll,false},*
  {memory_size,12920},
  {total_poll_set_size,2},
  {lazy_updates,true},
  {pending_updates,0},
  {batch_updates,false},
  {concurrent_updates,false},
  {fallback,true},
  {max_fds,512},
  {active_fds,0},
  {poll_threads,0}],
 [{name,erts_poll},
  {primary,kqueue},
  *{kernel_poll,kqueue},*
  {memory_size,56},
  {total_poll_set_size,1},
  {lazy_updates,false},
  {pending_updates,0},


  {batch_updates,false},


  {concurrent_updates,true},


  {fallback,false},


  {max_fds,512},


  {active_fds,0},


  {poll_threads,0}],


 [{name,erts_poll},
  {primary,kqueue},
  *{kernel_poll,kqueue},*
  {memory_size,28728},
  {total_poll_set_size,1},
  {lazy_updates,false},
  {pending_updates,0},
  {batch_updates,false},
  {concurrent_updates,true},
  {fallback,false},
  {max_fds,512},
  {active_fds,0},
  {poll_threads,1}]]
3>

What means *{kernel_poll,false}* ?
That poll is not used and kqueue it is used?

Why are three poll entries and why one kernel-poll kqueue entry has
memory_size 56 and the next has memory_size 28728? Which one is used by the
emulator?
And how can I customize the parameters like max_fds, total_poll_set_size,
memory_size?
And how does these parameters impact the performance of busy erlang node
like say,
very high traffic tcp/ip/ssl server?

Thank you,


On Tue, Nov 16, 2021 at 11:07 AM Lukas Larsson <lukas@REDACTED> wrote:

> On Tue, Nov 16, 2021 at 9:59 AM Bogdan Andu <bog495@REDACTED> wrote:
>
>> Hi Lukas,
>>
>> I didn't; find any documentation related to that.
>>
>
> A pr improving the documentation would be much appreciated!
>
>
>>
>> Anyway,
>>
>> $ erl
>> Erlang/OTP 24 [erts-12.1.4] [source] [64-bit] [smp:4:4] [ds:4:4:10]
>> [async-threads:1]
>>
>> Eshell V12.1.4  (abort with ^G)
>> 1> erlang:system_info(kernel_poll).
>> true
>> 2>
>>
>> I guess I have kernel poll support for my erlang servers.
>>
>> How can one tell if it is 'kqueue' or 'poll' type of kernel poll?
>>
>> Because OpenBSD has also poll which is not great
>>
>> Is there any erlang system information function that shows
>> exactly that?
>>
>
> If you run `erlang:system_info(check_io)` you will get information about
> the I/O checking sub-system which should include information about which
> mechanism is used.
>
>
>>
>> Thank you
>>
>>
>>
>> On Tue, Nov 16, 2021 at 10:53 AM Lukas Larsson <lukas@REDACTED> wrote:
>> >
>> > Hello!
>> >
>> > The banner about kernel-poll was removed from the erlang start some
>> releases ago. So to check if you have kernel poll support you need to call
>> `erlang:system_info(kernel_poll)`. If it returns `true` then you have
>> kernel-poll support.
>> >
>> > Lukas
>> >
>> > On Tue, Nov 16, 2021 at 9:47 AM Bogdan Andu <bog495@REDACTED> wrote:
>> >>
>> >> Hello,
>> >>
>> >> I have an OpenBSD 6.8 amd64 machine and
>> >> I would like to compile Erlang 24 with kqueue support
>> >> such that I want erl to show me this:
>> >>
>> >> $erl
>> >> ........................ [kernel-poll]
>> >>
>> >> I understand that this is a compile time option
>> >> and not anymore a runtime selectable option tru + K true
>> >> switch
>> >>
>> >> I tried the following configure options with no success:
>> >> ./configure --prefix=/usr/local/erlang24.1.4
>> >> --with-ssl=/usr/local/openssl/1.1.1l --enable-dynamic-ssl-lib
>> >> --with-ssl-rpath=/usr/local/openssl/1.1.1l/lib --without-javac
>> >> --enable-threads --enable-kernel-poll --disable-hipe
>> >>
>> >> With openbsd patches (+./otp_build update_configure)
>> >> and without patches the result is the same:
>> >> no kernel-poll flag present - meaning that kernel polling with kqueue
>> >> is not available to that erlang emulator.
>> >>
>> >> Please advice me how to build erlang 24 with kqueue support.
>> >>
>> >> I have an Openbsd 5.4 with erlang 19 that does has kernell-poll flag
>> >>
>> >> $ erl +Ktrue
>> >> Erlang/OTP 19 [erts-8.1] [source] [64-bit] [smp:2:2]
>> >> [async-threads:10] [kernel-poll:true]
>> >>
>> >> Eshell V8.1  (abort with ^G)
>> >>
>> >>
>> >> p.s.
>> >> building erlang 24 against openssl 1.1.1 for tlsv3 support wasn't
>> >> a pleasant experience. The configuration script links against
>> >> system libressl  openssl library, instead of --with-ssl option given
>> >> to ./configure.
>> >> So I had to alter manually crypto ./configure and Makefile files .
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20211116/7d4c5a2d/attachment.htm>


More information about the erlang-questions mailing list