Изменение структуры исполняемых программ с помощью программы fdpr

Программа fdpr оптимизирует исполняемые модули, сокращая время выполнения программы и повышая эффективность использования оперативной памяти.

Для того чтобы определить, установлена и доступна ли программа fdpr, введите следующую команду:
# lslpp -lI perfagent.tools

Команда fdpr относится к утилитам настройки производительности. Она позволяет повысить производительность пользовательских приложений и эффективность использования оперативной памяти. Для работы программы fdpr не нужен исходный код оптимизируемого приложения. Однако, оптимизация программ без информации о компиляции не поддерживаются. Если у вас есть исходный код программы, то вы можете скомпилировать его с флагом -qfdpr. В этом случае исполняемая программа будет содержать информацию, позволяющую гарантировать работоспособность кода, измененного программой fdpr. Флаг -qfdpr должен указываться при компиляции всех объектных модулей программы. Если указан флаг -qfdpr, то статическое связывание не повышает производительность программы.

Утилита fdpr изменяет порядок инструкций исполняемой программы, улучшая работу кэша инструкций, таблицы преобразования адресов (TLB) и оперативной памяти за счет следующих операций:

  • Размещение рядом часто вызываемых фрагментов кода (эти фрагменты выбираются по итогам анализа программы)
  • Изменение условных переходов для повышения вероятности их аппаратного предсказания
  • Удаление из основного потока исполнения редко используемых фрагментов кода

Например, анализируя оператор "if-then-else", программа fdpr может прийти к выводу, что альтернативная (стоящая после else) ветвь используется чаще, чем основная (стоящая после then). В этом случае программа инвертирует условие и поменяет местами ветви, как показано на следующем рисунке.

Рис. 1. Пример изменения оператора условия. На рисунке показано, каким образом программа изменит оператор условия. Например, выражение If (условие) будет заменено на If (! условие), операторы then, else и endif останутся без изменений, а инструкции из основной и альтернативной части оператора будут поменяны местами.
Пример изменения оператора условия

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

Работа программы fdpr состоит из трех этапов:

  1. Сначала оптимизируемый исполняемый модуль настраивается для сбора данных о производительности.
  2. Затем программа запускается в рабочей системе. При выполнении программы собирается информация о производительности.
  3. На основе этих данных выполняется оптимизация. Полученный исполняемый модуль должен работать с указанными при запуске данными более эффективно. Очень важно, чтобы утилита fdpr применялась для оптимизации программы в той рабочей схеме, в которой эта программа будет действительно применяться. Производительность оптимизированной программы при работе с сильно отличными данными заранее предсказать невозможно. В частности она может оказаться ниже, чем у первоначальной версии.
Например команда # fdpr -p ProgramName -R3 -x test.sh будет использовать тестовый набор test.sh для сбора данных о работе программы ProgramName. На основании полученного вывода будет выполнена максимальная (-R3) оптимизация программы. В результате будет создан новый модуль, которому по умолчанию присваивается имя имя-программы.fdpr. Степень улучшения характеристик оптимизированной программы по сравнению с исходной в существенной степени зависит от того, насколько точно тестовый набор test.sh имитирует рабочую нагрузку.
Прим.: Программа fdpr применяет для оптимизации сложные алгоритмы, которые иногда изменяют логику работы программы. В связи с этим перед первым запуском с реальными данными обязательно следует тщательно и всесторонне протестировать оптимизированную программу, чтобы убедиться в корректности результатов ее работы.

При работе с программой fdpr придерживайтесь следующих рекомендаций:

  • При запуске программы fdpr укажите параметры и файлы данных, характерные для дальнейшего применения оптимизированной программы.
  • Тщательно и всесторонне проверьте работу оптимизированного кода.
  • Запускайте полученную программу только в той рабочей схеме, для которой он был оптимизирован.