19 июл. 2010 г.

Оптимизация скриптов Essbase

Алгоритм оптимизации прост:
  • Запускаем расчет
  • Анализируем лог
  • Находим узкое место
  • Оптимизируем :)

1. Запускаем расчет.

Самый удобный лог для анализа - это лог esscmd. С его помощью и будем запускать скрипты. Не забудьте в скипте установить параметр "SET MSG SUMMARY" т.к. без него ничего интересного в логе вы не найдете.

Создаем calc-скрипт PL_Calc.csc, который необходимо анализировать:
SET MSG SUMMARY;
...
A = A + B;
...

Создаем esscmd-скрипт PL_Calc.scr:
output 1 "PL_Calc.log";
login "ess_server" "admin" "password";

updatevariable "vEntity" "ess_server" "PL" "" "EN_Russia";
updatevariable "vYear" "ess_server" "PL" "" "FY10";

select "PL" "PL";

runcalc 2 "PL_Calc";

OUTPUT 3;
exit;

Запускаем esscmd-скрипт и получаем PL_Calc.log:
esscmd PL_Calc.scr

2. Анализируем лог.

Для анализа мне понравился RightLog. Качаем и запускаем вот с такими параметрами:
RightLog.exe -i PL_Calc.log -s ; -t -d EUR -f "1012668|1012555|1012553|1012579|1003052" > PL_Calc.csv
Получили PL_Calc.csv

3. Находим узкое место.

Открываем PL_Calc.csv в Excel делаем расчетную колонку "Время исполнения" - вот и весь поиск.

4. Типовые проблемы производительности и возможные варианты решения.
Долго работает XREF - меняйте на партиции.
Долго считается формула на sparse элементе - используйте FRMLBOTTOMUP ON;
Долго работает агрегация - необходимо настраивать порядок измерений, кэши, использовать параллельные вычисления.

По настройке оптимизации предлагаю почитать "Optimizing Calc Scripts" by Edward Roske

P.S. Если необходимо просматривать информацию о кол-ве обработаных блоков
RightLog.exe -i PL_Calc.log -s ; -t -d EUR -f "1012668|1012555|1012553|1012579|1003052|Calculations:|Block Created|1012574|1017018" > PL_Calc.csv

Комментариев нет:

Отправить комментарий