Изменение структуры исполняемых программ с помощью программы fdpr
Программа fdpr оптимизирует исполняемые модули, сокращая время выполнения программы и повышая эффективность использования оперативной памяти.
# lslpp -lI perfagent.toolsКоманда fdpr относится к утилитам настройки производительности. Она позволяет повысить производительность пользовательских приложений и эффективность использования оперативной памяти. Для работы программы fdpr не нужен исходный код оптимизируемого приложения. Однако, оптимизация программ без информации о компиляции не поддерживаются. Если у вас есть исходный код программы, то вы можете скомпилировать его с флагом -qfdpr. В этом случае исполняемая программа будет содержать информацию, позволяющую гарантировать работоспособность кода, измененного программой fdpr. Флаг -qfdpr должен указываться при компиляции всех объектных модулей программы. Если указан флаг -qfdpr, то статическое связывание не повышает производительность программы.
Утилита fdpr изменяет порядок инструкций исполняемой программы, улучшая работу кэша инструкций, таблицы преобразования адресов (TLB) и оперативной памяти за счет следующих операций:
- Размещение рядом часто вызываемых фрагментов кода (эти фрагменты выбираются по итогам анализа программы)
- Изменение условных переходов для повышения вероятности их аппаратного предсказания
- Удаление из основного потока исполнения редко используемых фрагментов кода
Например, анализируя оператор "if-then-else", программа fdpr может прийти к выводу, что альтернативная (стоящая после else) ветвь используется чаще, чем основная (стоящая после then). В этом случае программа инвертирует условие и поменяет местами ветви, как показано на следующем рисунке.

В результате оптимизации увеличение производительности больших (>5 МБ) приложений, активно использующих процессор, достигает 23 процентов, хотя обычно составляет 5-20 процентов. Сокращение объема физической (невыгружаемой) памяти, занимаемого кодом программы, достигает 70 процентов, хотя обычно составляет от 20 до 50 процентов. Конкретные значения зависят от типа приложения и опций программы fdpr.
Работа программы fdpr состоит из трех этапов:
- Сначала оптимизируемый исполняемый модуль настраивается для сбора данных о производительности.
- Затем программа запускается в рабочей системе. При выполнении программы собирается информация о производительности.
- На основе этих данных выполняется оптимизация. Полученный исполняемый модуль должен работать с указанными при запуске данными более эффективно. Очень важно, чтобы утилита fdpr применялась для оптимизации программы в той рабочей схеме, в которой эта программа будет действительно применяться. Производительность оптимизированной программы при работе с сильно отличными данными заранее предсказать невозможно. В частности она может оказаться ниже, чем у первоначальной версии.
При работе с программой fdpr придерживайтесь следующих рекомендаций:
- При запуске программы fdpr укажите параметры и файлы данных, характерные для дальнейшего применения оптимизированной программы.
- Тщательно и всесторонне проверьте работу оптимизированного кода.
- Запускайте полученную программу только в той рабочей схеме, для которой он был оптимизирован.