[erlang-questions] profiling network apps: fprof vs sequential tracing
Björn-Egil Dahlberg
egil@REDACTED
Mon Sep 20 14:28:20 CEST 2010
On 2010-09-20 13:57, Joel Reymont wrote:
>
> On Sep 17, 2010, at 4:01 PM, Björn-Egil Dahlberg wrote:
>
>> lcnt will pinpoint locks with long acquisition time and high collision rates, which is a signal of high contention for specific memory areas.
>
> Does this tell you anything?
>
> 6> lcnt:conflicts().
> lock id #tries #collisions collisions [%] time [us] duration [%]
> ----- --- ------- ------------ --------------- ---------- -------------
> alcu_allocator 26 95048664 317604 0.3341 3113330 1.8408
> run_queue 4 10342831 210812 2.0382 2924435 1.7291
> pix_lock 256 9795287 17111 0.1747 1416804 0.8377
> pollset 1 992163 24805 2.5001 1350653 0.7986
> proc_msgq 1816 7019209 67222 0.9577 628357 0.3715
> proc_status 1816 15674155 92564 0.5906 592533 0.3503
> proc_link 1816 4471858 9593 0.2145 574034 0.3394
> port_lock 335 3263611 19866 0.6087 545129 0.3223
> db_tab 51 7044068 2975 0.0422 476275 0.2816
> timeofday 1 4417012 20162 0.4565 439839 0.2601
> proc_main 1816 8389632 301788 3.5972 188551 0.1115
> drv_ev_state 16 657921 811 0.1233 126814 0.0750
> timer_wheel 1 1594264 4582 0.2874 89597 0.0530
> make_ref 1 1093840 1314 0.1201 38031 0.0225
> fix_alloc 11 4387004 15027 0.3425 30502 0.0180
> run_queue_sleep_list 4 3562460 79 0.0022 12454 0.0074
> inet_buffer_stack_lock 1 168484 117 0.0694 11138 0.0066
> ptimer_pre_alloc_lock 4 828826 47 0.0057 8794 0.0052
> message_pre_alloc_lock 4 5894368 2725 0.0462 7282 0.0043
> driver_list 1 746783 127 0.0170 5112 0.0030
> ok
> 7>
Initially this looks good, however, you should examine the process locks
more closely.
Use,
lcnt:swap_pid_keys() and lcnt:conflicts([{combine, false}]) to see the
contention on individual locks. The 1816 processes has together 3.6%
collision rate which suggests that some process has a lot of contention
on its main_lock.
Regards,
Björn-Egil
More information about the erlang-questions
mailing list