Re: build erlang with kqueue support

Bogdan Andu <[email protected]>
Newsgroups gmane.comp.lang.erlang.general
Message-ID <CAP7yTnwvmoxC_3PPkJ3+WVkXXqjjgLkiD-Yq2NX48UO75woBEQ@mail.gmail.com>
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 <[email protected]> wrote:

> On Tue, Nov 16, 2021 at 9:59 AM Bogdan Andu <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 .
>>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.