Использование PHP-APD в скриптах

  1. В первой строке скрипта вызывается apd_set_pprof_trace()(), которая запускает трассировку:

    <?php
    apd_set_pprof_trace
    ();
    ?>

    Эта строка может быть добавлена в любом месте скрипта, но если трассировка не инициирована в начала скрипта, то данные, которые могли бы привести вас к узким местам в потерях производительности, будут утеряны.

  2. Выходной дамп после запуска скрипта будет записан в apd.dumpdir/pprof_pid.ext.

    Подсказка

    Если используется CGI версия PHP, то необходимо добавить флаг '-e', включающий расширенную информацию для корректной работы APD. Например: php -e -f script.php

  3. Для отображения форматированных данных профиля, необходимо выполнить команду pprofp с сортировкой и другими выбранными параметрами отображения. Форматированный вывод будет выглядеть примерно так:

    bash-2.05b$ pprofp -R /tmp/pprof.22141.0
    
    Trace for /home/dan/testapd.php
    Total Elapsed Time = 0.00
    Total System Time  = 0.00
    Total User Time    = 0.00
    
    
    Real         User        System             secs/    cumm
    %Time (excl/cumm)  (excl/cumm)  (excl/cumm) Calls    call    s/call  Memory Usage Name
    --------------------------------------------------------------------------------------
    100.0 0.00 0.00  0.00 0.00  0.00 0.00     1  0.0000   0.0009            0 main
    56.9 0.00 0.00  0.00 0.00  0.00 0.00     1  0.0005   0.0005            0 apd_set_pprof_trace
    28.0 0.00 0.00  0.00 0.00  0.00 0.00    10  0.0000   0.0000            0 preg_replace
    14.3 0.00 0.00  0.00 0.00  0.00 0.00    10  0.0000   0.0000            0 str_replace
    

    Опция -R, используемая этом примере сортирует профильную таблицу по количеству реального времени, которое скрипт потратил на выполнение каждой функции. Поле "cumm call" показывает сколько обращений было совершено к каждой функции, а "s/call" поле показывает сколько в среднем секунд было затрачено на каждое обращение.

  4. Для генерации стека вызовов в файл профиля KCacheGrind анализируемого приложения, требуется вызов команды pprof2calltree.