Kontaktné údaje
- info@ipesoft.com
- +421 907 703 854
- Obchodná 9076/3D
010 08 Žilina
Slovensko
© Copyright IPESOFT 2023
Ako viem zistiť, čo v D2000 ESL skripte mi trvá najdlhšie a kde sú jeho úzke hrdlá? Dnešný blog Vás prevedie základmi toho, čo sa nazýva v softvérovej terminológii aj profiling.
Aplikačný server reálneho času Ipesoft D2000 už od skorých verzií obsahuje proces D2000 Event. Tento má na starosť vykonávanie skriptov v jazyku ESL (Event Script Language). ESL skripty, ktoré sú voliteľnou súčasťou schém, interpretuje zas dynamická knižnica (event.dll), ktorú používa proces D2000 HI.
ESL je skriptovací jazyk vyvinutý priamo pre potreby D2000. Je to na jednej strane výhoda - v priebehu rokov pribudli rôzne akcie a funkcie, napr. podpora práce s databázami, synchrónne/asynchrónne volanie procedúr (RPC CALL) v rámci toho istého alebo vzdialeného procesu D2000 Event, parsovanie JSON a XML, práca s archívnymi dátami, inštančné ESL skripty, UNIT-y (knižnice) a iné. Na druhej nevýhoda – na rozdiel napr. od Visual Basicu nie sú k dispozícii rôzne knižnice funkcií (čo bol jeden z dôvodov, prečo v D2000 pribudla aj podpora jazyka Java).
Pre ESL vzniklo vývojové a ladiace prostredie, ktorého staršia verzia používala editačný komponent Scintilla.
Neskôr (od D2000 verzie 12) sa prešlo na editor založený na Visual Studio Code, do ktorého sú dodnes dopĺňané nové vlastnosti a rôzne vylepšenia.
Užívatelia sa môžu pripojiť k skriptom a ladiť ich bez ohľadu na to, či sa jedná o lokálny D2000 Event proces alebo sú skripty spustené v kontexte vzdialeného procesu (prípadne ako súčasť schémy v D2000 HI u konkrétneho užívateľa).
Čo ale v tom prípade, že nechcem ladiť konkrétny beh skriptu, ale získať informácie napr. o spotrebe pamäte alebo iných systémových prostriedkov - napr. handle otvorených súborov alebo počty/veľkosti kontajnerov či počty otvorených databáz/tabuliek?
Alebo odpoveď na veľmi konkrétnu a ťažkú otázku mnohých používateľov D2000 – prečo je môj skript pomalý a čo mu trvá najdlhšie?
Takéto a podobné otázky priviedli kolegu Borisa k tomu, aby implementoval ESL Diagnostic Pack. Jedná sa o súčasť nástrojov D2000 Cnf a D2000 GrEditor.
Principiálne sa jedná o jedno veľké okno, do ktorého sa pri otvorení nasypú informácie o všetkých ESL skriptoch v D2000 aplikácii. Jednotlivé stĺpce je možné filtrovať a zoraďovať (ak by to nestačilo, obsah okna sa dá skopírovať do schránky Windows a preniesť na podrobnejšiu analýzu napríklad do programu Excel). Aké informácie sú zobrazené o každom skripte?
Tieto informácie sú užitočné a umožňujú ľahko diagnostikovať rôzne „leaky“ – nezatvárané spojenia/súbory, XML či JSON dokumenty, prípadne nedealokované kontajnery. Stačí zotriediť zostupne zoznam podľa vybraných stĺpcov a pozrieť sa, či sa na horných priečkach nenachádzajú neočakávane vysoké hodnoty.
Tlačidlo Refresh slúži na opätovné načítanie aktuálnych informácií o všetkých ESL skriptoch, takže je možné sledovať meniace sa hodnoty v reálnom čase.
Opäť, podrobné informácie je možné skopírovať napr. do Excelu a ďalej analyzovať tam. Väčšinou ale stačí (pokiaľ sa jedná o pomalosť skriptu a hľadanie kritických miest) zoradiť akcie podľa stĺpcov Duration a DurationPassive (celkové aktívne/pasívne trvanie akcie), prípadne maxDuration a maxDurationPassive (najdlhšie aktívne/pasívne trvanie akcie) a zamerať sa na akcie, ktoré individuálne či kolektívne zaberajú najviac času.
PS: Pamätáte si ešte, že som vyššie napísal o tom, že editor ESL sa neustále vyvíja? Tak keď som sa po dopísaní tohto blogu rozprával s jeho vývojárom, dozvedel som sa, že okno s detailnými informáciami o skripte, ktoré poskytuje ESL Diagnostic Pack, je v najnovšej verzii D2000 integrované priamo do ESL editora a po pripojení sa k ESL skriptu je možné si zobrazovať tieto informácie na záložke Diagnostics:
Záver
ESL Diagnostic Pack je veľmi užitočným nástrojom na ladenie výkonnosti a korektnosti ESL skriptov. Tento blog si určite nekladie za cieľ vyčerpávajúco informovať o všetkých jeho možnostiach (na to má slúžiť dokumentácia), ale chce iba informovať, že takéto možnosti aplikačný server reálneho času Ipesoft D2000 už niekoľko rokov ponúka – a to všetkým jeho užívateľom a bez potreby túto užitočnú funkcionalitu extra licencovať.
19.12.2024, Ing. Peter Humaj, www.ipesoft.com