Pod pokličkou
Specifika při zadávání úloh - určení maximální doby běhu úlohy
Pro efektivní plánování je zapotřebí co nejpřesnější znalost o povaze úloh, přičemž jednou z klíčových informací je předpokládaná maximální doba jejich trvání. Ačkoliv mnohdy není možné předem přesně odhadnout, jak dlouho výpočet úlohy potrvá, přesto je klíčové poskytnout rozumný horní odhad doby jejího trvání. Na jednu stranu by tento odhad (v ideálním případě) neměl být kratší než je skutečná doba trvání úlohy (aby se po vyčerpání vyhrazeného časového rámce zabránilo předčasnému násilnému ukončení úlohy ze strany plánovacího systému), na druhou stranu není vůbec rozumné specifikovat tento odhad příliš vysoký (neboť obecně platí, že dlouhé úlohy na své spuštění čekají déle).
Ve srovnání s výpočetní infrastrukturou MetaCentra se tak specifikace maximální doby běhu úlohy v rámci CERIT-SC infrastruktury neprovádí začleněním do jedné z časově omezených předpřipravených front (short, normal, long, atp.), ale začleněním do jediné (implicitní) fronty a uživatelovou specifikací předpokládané maximální doby běhu úlohy skrze parametr walltime (detaily viz Specifikace vlastností uzlů/úloh. Na základě této specifikace jsou pak úlohy z implicitní fronty automaticky převedeny do nejvhodnější, časově omezené interní fronty plánovacího systému Torque, kde vyčkávají na své spuštění (viz ilustrace na obrázku níže).
Oproti systému s jednoduchými předpřipravenými frontami poskytuje tento přístup mnoho zásadních výhod, jako například:
- flexibilnější specifikaci očekávané maximální doby běhu úloh ⇒ snadnější/rychlejší přístup k výpočetním zdrojům (kratší úlohy jsou při spouštění preferovány),
- snazší interní plánování úloh ⇒ snadnější/rychlejší přístup k výpočetním zdrojům,
- možnost interního ladění logiky práce s frontami dle zpětné odezvy uživatelů.

Tímto bychom Vás rádi poprosili, abyste se skutečně pokusili co nejlépe odhadnout, jak dlouhý čas Vaše úlohy pro svůj běh potřebují. Není dobré pro všechny Vaše úlohy "paušálně" používat jeden "bezpečný (= dostatečně dlouhý) odhad" - takovéto počínaní totiž znemožňuje provádět některé efektivní plánovací optimalizace, a tím pádem obecně zhoršuje dobu odezvy systému pro Vás, uživatele. V mnoha studiích založených na skutečném nasazení plánovacích optimalizací bylo prokázáno, že při přesnější specifikaci doby trvání úloh lze s využitím tzv. backfillingu (vyplňování "skulinek" v plánovacím rozvrhu pomocí krátkých "výplňových" úloh) zvýšit prostupnost a vytížení systému v průměru o cca 30 %.
Příklad: Význam výše zmiňovaného backfillingu lze ilustrovat na situaci, kdy poté, co některá z úloh nevyčerpá svůj vyhrazený časový rámec - což je častý jev - a zároveň následující úloha v plánu nemůže být prozatím spuštěna (např. čeká se na uvolnění dalšího výpočetního uzlu), tak se nalezne vhodná krátká "výplňová" úloha, která zaplní uvolněné místo. Je zřejmé, že takovéto krátké úlohy jsou mnohem dříve spočítány a přitom neovlivní garantované startovací časy delších čekajících úloh. Klíčem k tomuto efektivnímu a spravedlivému využívání výpočetních zdrojů je právě dostatečná různorodost odhadů dob trvání úloh.




