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

Lukas Larsson lukas@REDACTED
Fri Mar 9 13:34:28 CET 2018


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.


>
>
>> 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/c7210dd4/attachment.htm>


More information about the erlang-questions mailing list