[erlang-questions] How to test multi-pollset?

pablo platt pablo.platt@REDACTED
Fri Mar 9 13:50:56 CET 2018


On Fri, Mar 9, 2018 at 2:34 PM, Lukas Larsson <lukas@REDACTED> wrote:

>
>
> On Fri, Mar 9, 2018 at 11:58 AM, pablo platt <pablo.platt@REDACTED>
> wrote:
>
>>
>>
>> On Fri, Mar 9, 2018 at 12:38 PM, Lukas Larsson <lukas@REDACTED> wrote:
>>
>>> Hello!
>>>
>>> On Thu, Mar 8, 2018 at 8:43 PM, pablo platt <pablo.platt@REDACTED>
>>> wrote:
>>>
>>>> Hello,
>>>>
>>>> Updating with my test.
>>>>
>>>> I've been using master in production for two days on 4 servers.
>>>> Each server has 4 vCPUs.
>>>> Each server handles about 10K UDP packets per second. Approx 1K
>>>> incoming packets per second and 9K outgoing packets per second.
>>>>
>>>> I didn't see any issues. Seems to work fine.
>>>>
>>>
>>> That's great! Thanks for testing it!
>>>
>>> CPU load in OTP Master 21 increased compared to OTP 20 from 58% to 68%.
>>>> Does this make sense?
>>>>
>>>
>>> hmm, no not really. I would have expected it to decrease.
>>>
>>> Would you mind helping me to figure out why the CPU usage has gone up?
>>>
>>> To start with I'd like to have a look at the output of
>>>
>>> 1> msacc:start(30000), msacc:print().
>>>
>>> for both versions in the Erlang shell. Using this I hope to be able to
>>> narrow down where the extra CPU time is being spent.
>>>
>>> Also it would great if you could run a few perf commands to compare the
>>> systems.
>>>
>>> Ideally it would be be best if you could recompile beam with the
>>> --build-id linker flag. i.e.
>>>
>>> > ./configure LDLAGS="-Wl,--build-id"
>>>
>>
>> I'll try to compile with kerl:
>> export LDLAGS="-Wl,--build-id" && kerl build git
>> https://github.com/erlang/otp 9bc4a096025254aed157e4753743be61ce1f7489
>> master
>>
>> How can I verify that the flag was actually used?
>>
>
> If you do "file path/to/beam.smp" you should get something like:
>
> > file bin/x86_64-unknown-linux-gnu/beam.smp
> bin/x86_64-unknown-linux-gnu/beam.smp: ELF 64-bit LSB  executable,
> x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for
> GNU/Linux 2.6.24, BuildID[sha1]=1a8ff129828d9ed4a8197d47e7731b10015b2456,
> not stripped
>
> notice the BuildID[sha1] thing.
>
>
>>
>>>
>>> That way it is possible to use "perf archive"[1] to collect the symbols
>>> of beam.smp.
>>>
>>> > sudo perf stat -d -p $BEAMPID -- sleep 30 2> stat.log
>>> > sudo perf record -g -p $BEAMPID -- sleep 30
>>> > sudo perf archive
>>> > sudo tar czf $BEAMPID.tar.gz stat.log perf.data.tar.bz2 perf.data
>>>
>>>
>> Can I do it on a dev machine with a smaller load or does it have to be on
>> a real production server?
>>
>
> If you can observe the same difference in a small system then that is fine.
>
>
>> What's the effect of perf (and msacc) on a production system? When I
>> tried to do erlang profiling in the past it crashed my server.
>>
>
> It should be very minimal. I double that you will notice it. If you are
> unsure, you can change the frequency that perf collects data by adding the
> "-F NUMBER" flag to "perf report" with a lower than default frequency. The
> default is 4000.
>
>

I'll try to reproduce on a dev machine and get the msacc and perf reports.
Thanks


>
>>
>>> and send me the tar.gz for OTP-20 and master.
>>>
>>> If you cannot re-compile erts with --build-id, then just do "sudo perf
>>> report" and send me a screenshot of the tools shows you.
>>>
>>> If you prefer to this off-list, we can do that as well.
>>>
>>> Lukas
>>>
>>> [1]: If the "perf archive" command does not work (which it doesn't on my
>>> machine), just download the script from here: https://elixir.bootlin.c
>>> om/linux/v3.18/source/tools/perf/perf-archive.sh
>>>
>>
>>
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20180309/3ee8453b/attachment.htm>


More information about the erlang-questions mailing list