Load management: Rozdiel medzi revíziami
(Vytvorená stránka „Počas spracovania veľkého počtu úloh môže dôjsť k dočasnému preťaženiu niektorých zdrojov. Typicky pri databázach dochádza k preťaženiu IO subsystému,...“) |
(→Nastavenie exkluzívnej závislosti medzi úlohami) |
||
| (5 medziľahlých úprav od rovnakého používateľa.) | |||
| Riadok 6: | Riadok 6: | ||
DWFC poskytuje niekoľko nástrojov umožňujúcich riadiť záťaž: | DWFC poskytuje niekoľko nástrojov umožňujúcich riadiť záťaž: | ||
| − | * Nastavenie celkového limitu | + | * Nastavenie celkového limitu úrovne paralelizmu |
* Nastavenie limitu paralelizmu na úrovni skupiny/pripojenia | * Nastavenie limitu paralelizmu na úrovni skupiny/pripojenia | ||
* Nastavenie limitu záťaže na úrovni skupiny/pripojenia | * Nastavenie limitu záťaže na úrovni skupiny/pripojenia | ||
* Nastavenie exkluzívnej závislosti medzi úlohami | * Nastavenie exkluzívnej závislosti medzi úlohami | ||
| + | |||
| + | Jednotlivé spôsoby riadenia je možné medzi sebou ľubovoľne kombinovať. | ||
| + | |||
| + | ==Nastavenie celkového limitu úrovne paralelizmu== | ||
| + | Celkový limit úrovne paralelizmu je zohľadňovaný pri každom pokuse o spustenie úlohy. Algoritmus pre spustenie úloh vyhodnocuje počet aktuálne bežiacich úloh a v prípade dosiahnutia globálneho limitu nie je spustená ďalšia úloha až kým niektorá z bežiacich úloh neskončí (nezáleží na spôsobe ukončenia, či úspešne alebo neúspešne). | ||
| + | Tento limit sa nastavuje v administračnej časti aplikácie v sekcii Settings/ParallelLimit. V pravej časti obrazovky sa zobrazí aktuálne nastavená hodnota, ktorú môže administrátor aplikácie zmeniť na požadovanú hodnotu. Stlačením tlačidla '''Ok''' je zmena uložená a aktívna. | ||
| + | Jedná sa o najjednoduchší spôsob riadenia záťaže a je vhodný pre jednoduché konfigurácie s homogénne zaťažujúcimi úlohami. | ||
| + | |||
| + | ==Limit paralelizmu na úrovni skupiny/pripojenia== | ||
| + | Mierne sofistikovanejší spôsob riadenia záťaže, ktorý umožňuje pre vytvorené skupiny, alebo pre definované pripojenia určiť limit na maximálny počet naraz bežiacich úloh. Limity sú nastavované pre každú skupinu/pripojenie samostatne a pokiaľ je nastavený limit pre skupinu aj pripojenie súčasne, použije sa prísnejší limit. Ak je napr. úloha v skupine s limitom paralelizmu 5, v ktorej súčasne bežia 3 úlohy a zároveň je pre ňu definované pripojenie s limitom paralelizmu 6, pristredníctvom ktorej už beží 6 úloh, potom úloha nie je spustená. V takomto prípade sú vyhodnocované postupne ďalšie úlohy podľa priority, viď [[Prioritizácia]]. | ||
| + | Tento spôsob riadenia záťaže je vhodný pre stredne zložité spracovania, pri ktorých nedochádza k významnejším preťaženiam, prípadne ako prvý krok pred vykonaním ďalších analýz potrebných k jemnejšiemu nastaveniu pomocou nastavenia limitu záťaže (nasledujúci bod). | ||
| + | |||
| + | ==Limit záťaže na úrovni skupiny/pripojenia== | ||
| + | V prípade, že jednotlivé úlohy zaťažujú server rôzne, je možné jednotlivým úlohám priradiť váhu. Na každej úlohe sa nachádza položka Weight (v časti editácia, Advanced settings). Jedná sa o číslo, ktoré vyjadruje akým podielom sa daná úloha podieľa na celkovej záťaži skupiny, alebo pripojenia. Napríklad ak má úloha nastavenú váhu 20 a celková povolená záťaž je nastavená na pripojení na 100. Takéto nastavenie vyjadruje, že úloha sa na celkovej záťaži podieľa 20%. | ||
| + | Jednotlivé váhy sú prideľované administrátorom a nie sú automaticky menené podľa skutočnej záťaže. To znamená, že v prípade, ak dôjde k zmene úlohy spôsobujúcej výrazné zmeny v zaťažení, je potrebné toto číslo manuálne upraviť. | ||
| + | Pri pokuse o spustenie úlohy je vyhodnocovaná záťaž podľa aktuálne bežiacich úloh v danej skupine ako aj prostredníctvom pripojenia. Pokiaľ by spustenie danej úlohy znamenalo prekročenie nastaveného limitu, úloha nebude spustená a podobne ako v predchádzajúcom type riadenia sú vyhodnocované ďalšie úlohy podľa priority, viď [[Prioritizácia]]. | ||
| + | Typické nastavenie limito pri spracovaní DWH je možné iniciálne nastaviť odhadom počtu záznamov. Plnenie malých tabuliek do 1000 záznamov prispievajú k záťaži 1-5%, plnenie tabuliek do 100.000 záznamov prispieva 10-30% a väčšie tabuľky je potrebné vyhodnocovať individuálne, prvotne nastaviť na cca 40%. | ||
| + | Tieto odporúčané hodnoty sú pre jednoduché scenáre, kedy ETL nevykonáva komplexné transformácie ani joiny veľkých tabuliek, v takých prípadoch je potrebné záťaž posúdiť individuálne na základe spustenia úlohy manuálne a sledovaní ukazovateľov OS a databázy. | ||
| + | |||
| + | ==Nastavenie exkluzívnej závislosti medzi úlohami== | ||
| + | Tento typ riadenia záťaže je doplnkovým spôsobom riadenia a vlastne sa jedná skôr o nástroj na obmedzenie konfliktov najmä z dôvodu zamykania stránok, tabuliek apod. Typicky je možné týmto spôsobom zabrániť situácii, kedy by sa mohli dve ETL úlohy stretnúť v bode vkladania do rovnakej cieľovej tabuľky. Na niektorých DB takéto vkladanie spôsobuje performance problémy, prípadne deadlocky, na iných DB (napr. Sybase IQ) spôsobuje pád úlohy a je potrebné ju opakovať. | ||
| + | Exkluzívna závislosť medzi úlohami sa nastavuje na každej úlohe pridaním závislosti a následne zmenou jej typu na typ Exclusive. | ||
| + | |||
| + | [[File:dependency_exclusive.png|Nastavenie exkluzívnej závislosti]] | ||
Aktuálna revízia z 09:40, 17. august 2017
Počas spracovania veľkého počtu úloh môže dôjsť k dočasnému preťaženiu niektorých zdrojov. Typicky pri databázach dochádza k preťaženiu IO subsystému, alebo nedostatku operačnej pamäte, môže však byť preťažené CPU. O preťažení hovoríme z hľadiska riadenia spracovania o situácii, kedy je súčasný beh kombinácie úloh vykonaný neskôr ako by bola táto istá skupina úloh vykonaná sériovo alebo s nižším stupňom paralelizmu.
Preťaženie zdrojov je vo všeobecnosti považované za nežiadúci jav a je potrebné ho identifikovať pomocou nástrojov DB servera a OS. Dlhším sledovaním je možné v spracovaní identifikovať časti, ktoré vyžadujú samostatný beh, prípadne môžu bežať len vtedy, ak nebeží iná náročná úloha.
DWFC poskytuje niekoľko nástrojov umožňujúcich riadiť záťaž:
- Nastavenie celkového limitu úrovne paralelizmu
- Nastavenie limitu paralelizmu na úrovni skupiny/pripojenia
- Nastavenie limitu záťaže na úrovni skupiny/pripojenia
- Nastavenie exkluzívnej závislosti medzi úlohami
Jednotlivé spôsoby riadenia je možné medzi sebou ľubovoľne kombinovať.
Obsah
Nastavenie celkového limitu úrovne paralelizmu
Celkový limit úrovne paralelizmu je zohľadňovaný pri každom pokuse o spustenie úlohy. Algoritmus pre spustenie úloh vyhodnocuje počet aktuálne bežiacich úloh a v prípade dosiahnutia globálneho limitu nie je spustená ďalšia úloha až kým niektorá z bežiacich úloh neskončí (nezáleží na spôsobe ukončenia, či úspešne alebo neúspešne). Tento limit sa nastavuje v administračnej časti aplikácie v sekcii Settings/ParallelLimit. V pravej časti obrazovky sa zobrazí aktuálne nastavená hodnota, ktorú môže administrátor aplikácie zmeniť na požadovanú hodnotu. Stlačením tlačidla Ok je zmena uložená a aktívna. Jedná sa o najjednoduchší spôsob riadenia záťaže a je vhodný pre jednoduché konfigurácie s homogénne zaťažujúcimi úlohami.
Limit paralelizmu na úrovni skupiny/pripojenia
Mierne sofistikovanejší spôsob riadenia záťaže, ktorý umožňuje pre vytvorené skupiny, alebo pre definované pripojenia určiť limit na maximálny počet naraz bežiacich úloh. Limity sú nastavované pre každú skupinu/pripojenie samostatne a pokiaľ je nastavený limit pre skupinu aj pripojenie súčasne, použije sa prísnejší limit. Ak je napr. úloha v skupine s limitom paralelizmu 5, v ktorej súčasne bežia 3 úlohy a zároveň je pre ňu definované pripojenie s limitom paralelizmu 6, pristredníctvom ktorej už beží 6 úloh, potom úloha nie je spustená. V takomto prípade sú vyhodnocované postupne ďalšie úlohy podľa priority, viď Prioritizácia. Tento spôsob riadenia záťaže je vhodný pre stredne zložité spracovania, pri ktorých nedochádza k významnejším preťaženiam, prípadne ako prvý krok pred vykonaním ďalších analýz potrebných k jemnejšiemu nastaveniu pomocou nastavenia limitu záťaže (nasledujúci bod).
Limit záťaže na úrovni skupiny/pripojenia
V prípade, že jednotlivé úlohy zaťažujú server rôzne, je možné jednotlivým úlohám priradiť váhu. Na každej úlohe sa nachádza položka Weight (v časti editácia, Advanced settings). Jedná sa o číslo, ktoré vyjadruje akým podielom sa daná úloha podieľa na celkovej záťaži skupiny, alebo pripojenia. Napríklad ak má úloha nastavenú váhu 20 a celková povolená záťaž je nastavená na pripojení na 100. Takéto nastavenie vyjadruje, že úloha sa na celkovej záťaži podieľa 20%. Jednotlivé váhy sú prideľované administrátorom a nie sú automaticky menené podľa skutočnej záťaže. To znamená, že v prípade, ak dôjde k zmene úlohy spôsobujúcej výrazné zmeny v zaťažení, je potrebné toto číslo manuálne upraviť. Pri pokuse o spustenie úlohy je vyhodnocovaná záťaž podľa aktuálne bežiacich úloh v danej skupine ako aj prostredníctvom pripojenia. Pokiaľ by spustenie danej úlohy znamenalo prekročenie nastaveného limitu, úloha nebude spustená a podobne ako v predchádzajúcom type riadenia sú vyhodnocované ďalšie úlohy podľa priority, viď Prioritizácia. Typické nastavenie limito pri spracovaní DWH je možné iniciálne nastaviť odhadom počtu záznamov. Plnenie malých tabuliek do 1000 záznamov prispievajú k záťaži 1-5%, plnenie tabuliek do 100.000 záznamov prispieva 10-30% a väčšie tabuľky je potrebné vyhodnocovať individuálne, prvotne nastaviť na cca 40%. Tieto odporúčané hodnoty sú pre jednoduché scenáre, kedy ETL nevykonáva komplexné transformácie ani joiny veľkých tabuliek, v takých prípadoch je potrebné záťaž posúdiť individuálne na základe spustenia úlohy manuálne a sledovaní ukazovateľov OS a databázy.
Nastavenie exkluzívnej závislosti medzi úlohami
Tento typ riadenia záťaže je doplnkovým spôsobom riadenia a vlastne sa jedná skôr o nástroj na obmedzenie konfliktov najmä z dôvodu zamykania stránok, tabuliek apod. Typicky je možné týmto spôsobom zabrániť situácii, kedy by sa mohli dve ETL úlohy stretnúť v bode vkladania do rovnakej cieľovej tabuľky. Na niektorých DB takéto vkladanie spôsobuje performance problémy, prípadne deadlocky, na iných DB (napr. Sybase IQ) spôsobuje pád úlohy a je potrebné ju opakovať. Exkluzívna závislosť medzi úlohami sa nastavuje na každej úlohe pridaním závislosti a následne zmenou jej typu na typ Exclusive.
