Всем привет! Сегодня мы будем профайлить Perl приложения и искать в них узкие места!
Итак, я веду эксперименты над своей новой утилиткой - linux_network_activity_tracker.pl, которая на машинах с десятками тысяч процессов работает довольно медленно.
Итак, запускаем профайлинг:
Итак, я веду эксперименты над своей новой утилиткой - linux_network_activity_tracker.pl, которая на машинах с десятками тысяч процессов работает довольно медленно.
Итак, запускаем профайлинг:
perl -d:DProf linux_network_activity_tracker.plПосле того, как он отработал нам нужно запустить обработчик полученных данных:
dprofppВ итоге нам будет сгенерирована удобная и доступная для понимания табличка:
Total Elapsed Time = 78.18037 SecondsПо которой отлично видно, кто пожрал время CPU :)
User+System Time = 57.55037 Seconds
Exclusive Times
%Time ExclSec CumulS #Calls sec/call Csec/c Name
57.1 32.89 32.893 26894 0.0012 0.0012 Antidoto::get_process_connections
30.0 17.30 17.620 342 0.0506 0.0515 Antidoto::parse_tcp_connections
6.52 3.750 3.750 342 0.0110 0.0110 Antidoto::parse_unix_connections
1.00 0.576 1.019 6986 0.0001 0.0001 Antidoto::get_proc_status
0.98 0.563 0.563 7328 0.0001 0.0001 Antidoto::read_file_contents_to_li
st
0.56 0.323 0.323 136504 0.0000 0.0000 Antidoto::_hex2ip
0.28 0.160 0.160 342 0.0005 0.0005 Antidoto::build_inode_to_socket_lo
okup_table
0.13 0.073 1.092 342 0.0002 0.0032 Antidoto::get_init_pid_for_contain
er
0.05 0.028 0.037 342 0.0001 0.0001 Antidoto::parse_udp_connections
0.02 0.010 0.010 4 0.0025 0.0025 main::BEGIN
0.00 - -0.000 1 - - DynaLoader::dl_load_file
0.00 - -0.000 1 - - DynaLoader::dl_undef_symbols
0.00 - -0.000 1 - - DynaLoader::dl_find_symbol
0.00 - -0.000 1 - - DynaLoader::dl_install_xsub
0.00 - -0.000 1 - - Digest::MD5::bootstrap