Программа fdpr оптимизирует исполняемые модули, сокращая время выполнения программы и повышая эффективность использования оперативной памяти. Для того чтобы определить, установлена и доступна ли программа fdpr, введите следующую команду:
# lslpp -lI perfagent.tools
Команда fdpr относится к утилитам настройки производительности. Она позволяет повысить производительность пользовательских приложений и эффективность использования оперативной памяти. Для работы программы fdpr не нужен исходный код оптимизируемого приложения. Однако, оптимизация программ без информации о компиляции не поддерживаются. Если у вас есть исходный код программы, то вы можете скомпилировать его с флагом -qfdpr. В этом случае исполняемая программа будет содержать информацию, позволяющую гарантировать работоспособность кода, измененного программой fdpr. Флаг -qfdpr должен указываться при компиляции всех объектных модулей программы. Если указан флаг -qfdpr, то статическое связывание не повышает производительность программы.
Утилита fdpr изменяет порядок инструкций исполняемой программы, улучшая работу кэша инструкций, таблицы преобразования адресов (TLB) и оперативной памяти за счет следующих операций:
Например, анализируя оператор "if-then-else", программа fdpr может прийти к выводу, что альтернативная (стоящая после else) ветвь используется чаще, чем основная (стоящая после then). В этом случае программа инвертирует условие и поменяет местами ветви, как показано на следующем рисунке.
Рис. 6-1. Пример изменения оператора условия. На рисунке показано, каким образом программа изменит оператор условия. Например, выражение If (условие) будет заменено на If (! условие), операторы then, else и endif останутся без изменений, а инструкции из основной и альтернативной части оператора будут поменяны местами.
В результате оптимизации увеличение производительности больших (>5 Мб) приложений, активно использующих процессор, достигает 23 процентов, хотя обычно составляет 5-20 процентов. Сокращение объема физической (невыгружаемой) памяти, занимаемого кодом программы, достигает 70 процентов, хотя обычно составляет от 20 до 50 процентов. Конкретные значения зависят от типа приложения и опций программы fdpr.
Работа программы fdpr состоит из трех этапов:
Например, команда:
# fdpr -p имя-программы -R3 -x test.sh
собирает данные о работе программы имя-программы на основании тестовых данных из файла test.sh. На основании полученного вывода будет выполнена максимальная (-R3) оптимизация программы. В результате будет создан новый модуль, которому по умолчанию присваивается имя ProgramName.fdpr. Степень улучшения характеристик оптимизированной программы по сравнению с исходной в существенной степени зависит от того, насколько точно файл test.sh похож на стандартный файл, обрабатываемый программой.
Примечание: Программа fdpr применяет для оптимизации сложные алгоритмы, которые иногда изменяют логику работы программы. В связи с этим перед первым запуском с реальными данными обязательно следует тщательно и всесторонне протестировать оптимизированную программу, чтобы убедиться в корректности результатов ее работы.
При работе с программой fdpr придерживайтесь следующих рекомендаций: