Часть 1. Как было настроено до оптимизации
Настройки Essbase.cfg
Порядок измерений (песочные часы):
Dimension Type Declared Size Actual Size
=============================================
Account DENSE 809 785
Period DENSE 20 18
Currency Rates SPARSE 6 5
Scenario SPARSE 7 6
SparseDimA SPARSE 8 6
Years SPARSE 8 7
Currency SPARSE 10 8
Version SPARSE 15 15
SparseDimB SPARSE 17 13
SparseDimC SPARSE 125 122
SparseDimD SPARSE 125 124
Entity SPARSE 198 196
SparseDimE SPARSE 199 197
SparseDimF SPARSE 288 144
Скрипт агрегации:
Часть 2. Что получилось улучшить
1. Сделал динамическими родителей в измерениях Period и Account +25%
Размер блока:
P.S. Не делайте динамическими dense элементы с комплексными формулами (есть ссылка на другой блок)
2. Изменил порядок измерений +15%:
Dimension Type Declared Size Actual Size
=============================================
/* Dense от большего к меньшему */
Account DENSE 809 705
Period DENSE 20 13
/* Агрегируемые */
SparseDimC SPARSE 125 122
SparseDimD SPARSE 125 124
SparseDimE SPARSE 199 197
SparseDimA SPARSE 8 6
SparseDimB SPARSE 17 13
/* Прочие (неагрегируемые) измерения */
Currency Rates SPARSE 6 5
Scenario SPARSE 7 6
Years SPARSE 8 7
Currency SPARSE 10 8
Version SPARSE 15 15
/* Измерения для параллельных расчетов */
Entity SPARSE 198 196
SparseDimF SPARSE 288 144
P.S. Измерения SparseDimA и SparseDimB логичнее поставить выше, но на них не хватит CalcCache, поэтому эти измерения перемещены ниже
P.S.S. Какие sparse измерения необходимо переместить вниз, а какие вверх определяется только опытным путем т.е. тестируем-тестируем-тестируем
3. Включил параллельные вычисления +40%
SET CALCPARALLEL 4;
SET CALCTASKDIMS 2;
4. Расчитал Calculator Cache +5%
SparseDimC (122) х SparseDimD(124) х SparseDimE (197) х 8байт / 1024 = 23 282 кб
Изменения в essbase.cfg
5. Изменил скрипт агрегации +50%
Часть 3. Не забываем про стандартные рекомендации
- ACR (Average clustering Rate) должен стремится к 1, для этого запускайте dense реструктуризацию
- Размер блока должен быть между 10 и 100KB (может быть больше для 64 bit essbase)
- Data cache должен быть около 12.5% от общего размера pag файлов
- Index cache должен быть таким же как ind файлы
- В одном приложение только 1 куб
Настройки Essbase.cfg
... CALCCACHEHIGH 200000000 CALCCACHEDEFAULT 50000000 CALCCACHELOW 10000000 ...
Порядок измерений (песочные часы):
Dimension Type Declared Size Actual Size
=============================================
Account DENSE 809 785
Period DENSE 20 18
Currency Rates SPARSE 6 5
Scenario SPARSE 7 6
SparseDimA SPARSE 8 6
Years SPARSE 8 7
Currency SPARSE 10 8
Version SPARSE 15 15
SparseDimB SPARSE 17 13
SparseDimC SPARSE 125 122
SparseDimD SPARSE 125 124
Entity SPARSE 198 196
SparseDimE SPARSE 199 197
SparseDimF SPARSE 288 144
Скрипт агрегации:
SET CACHE ALL; SET CACHE HIGH; SET AGGMISSG ON; SET UPDATECALC OFF; SET FRMLBOTTOMUP ON; SET MSG SUMMARY; SET LOCKBLOCK HIGH; SET EMPTYMEMBERSETS ON; FIX(InputValue, FY10, RUR, Work, Budget) CALC DIM (Account, Period, SparseDimA, SparseDimB...) ENDFIX
Часть 2. Что получилось улучшить
1. Сделал динамическими родителей в измерениях Period и Account +25%
Размер блока:
- было Account(785) х Period(18) х 8байт = 113040
- стало Account(705) х Period(13) х 8байт = 73320 (~уменьшился на 30%)
P.S. Не делайте динамическими dense элементы с комплексными формулами (есть ссылка на другой блок)
2. Изменил порядок измерений +15%:
- Dense - от большего к меньшему
- Sparse - от меньшего агрегируемого к большему, неагрегируемые измерения, большие плоские измерения для паралельных вычислений
Dimension Type Declared Size Actual Size
=============================================
/* Dense от большего к меньшему */
Account DENSE 809 705
Period DENSE 20 13
/* Агрегируемые */
SparseDimC SPARSE 125 122
SparseDimD SPARSE 125 124
SparseDimE SPARSE 199 197
SparseDimA SPARSE 8 6
SparseDimB SPARSE 17 13
/* Прочие (неагрегируемые) измерения */
Currency Rates SPARSE 6 5
Scenario SPARSE 7 6
Years SPARSE 8 7
Currency SPARSE 10 8
Version SPARSE 15 15
/* Измерения для параллельных расчетов */
Entity SPARSE 198 196
SparseDimF SPARSE 288 144
P.S. Измерения SparseDimA и SparseDimB логичнее поставить выше, но на них не хватит CalcCache, поэтому эти измерения перемещены ниже
P.S.S. Какие sparse измерения необходимо переместить вниз, а какие вверх определяется только опытным путем т.е. тестируем-тестируем-тестируем
3. Включил параллельные вычисления +40%
SET CALCPARALLEL 4;
SET CALCTASKDIMS 2;
4. Расчитал Calculator Cache +5%
SparseDimC (122) х SparseDimD(124) х SparseDimE (197) х 8байт / 1024 = 23 282 кб
Изменения в essbase.cfg
...
CALCCACHEHIGH 200000000
CALCCACHEDEFAULT 50000000
CALCCACHELOW 25000000
...
5. Изменил скрипт агрегации +50%
SET CACHE ALL; SET CACHE LOW; /* 25Мб */; SET AGGMISSG ON; SET UPDATECALC OFF; SET FRMLBOTTOMUP ON; SET MSG SUMMARY; SET LOCKBLOCK HIGH; SET EMPTYMEMBERSETS ON;SET CALCPARALLEL 4;SET CALCTASKDIMS 2;/* WaterFall agreggetion */ FIX(InputValue, FY10, RUR, Work, Budget, @RELATIVE(YearTotal,0)) /*main*/ FIX(@RELATIVE(&vEntity,0)) FIX(@RELATIVE(SparseDimA,0)) FIX(@RELATIVE(SparseDimB,0)) FIX(@RELATIVE(SparseDimC,0)) FIX(@RELATIVE(SparseDimD,0)) FIX(@RELATIVE(SparseDimE,0)) FIX(@RELATIVE(SparseDimF,0)) CALC DIM (Account); ENDFIX FIX(@DESCENDANTS(Account)) AGG(SparseDimF); ENDFIX ENDFIX /*SparseDimF*/ FIX(@DESCENDANTS(Account) @DESCENDANTS(SparseDimF)) AGG(SparseDimE); ENDFIX ENDFIX /*SparseDimD*/ FIX(@DESCENDANTS(Account) @DESCENDANTS(SparseDimF) @DESCENDANTS(SparseDimE)) AGG(SparseDimD); ENDFIX ENDFIX /*SparseDimC*/ FIX(@DESCENDANTS(Account) @DESCENDANTS(SparseDimF) @DESCENDANTS(SparseDimE) @DESCENDANTS(SparseDimD)) AGG(SparseDimC); ENDFIX ENDFIX /*SparseDimB*/ FIX(@DESCENDANTS(Account) @DESCENDANTS(SparseDimF) @DESCENDANTS(SparseDimE) @DESCENDANTS(SparseDimD) @DESCENDANTS(SparseDimC)) AGG(SparseDimB); ENDFIX ENDFIX /*SparseDimA*/ FIX(@DESCENDANTS(Account) @DESCENDANTS(SparseDimF) @DESCENDANTS(SparseDimE) @DESCENDANTS(SparseDimD) @DESCENDANTS(SparseDimC) @DESCENDANTS(SparseDimB)) AGG(SparseDimA); ENDFIX ENDFIX /*Entity*/ FIX(@DESCENDANTS(Account) @DESCENDANTS(SparseDimF) @DESCENDANTS(SparseDimE) @DESCENDANTS(SparseDimD) @DESCENDANTS(SparseDimC) @DESCENDANTS(SparseDimB) @DESCENDANTS(SparseDimA)) @IDESCENDANTS(&vEntity, -1); @ANCESTORS(&vEntity); ENDFIX ENDFIX /*main*/
Часть 3. Не забываем про стандартные рекомендации
- ACR (Average clustering Rate) должен стремится к 1, для этого запускайте dense реструктуризацию
- Размер блока должен быть между 10 и 100KB (может быть больше для 64 bit essbase)
- Data cache должен быть около 12.5% от общего размера pag файлов
- Index cache должен быть таким же как ind файлы
- В одном приложение только 1 куб
Комментариев нет:
Отправить комментарий