Výkonnostné požiadavky

Výkonnostné požiadavky

Aplikačný server reálneho času Ipesoft D2000 je použiteľný na celú škálu aplikácií - od malých SCADA systémov (postavených na platforme Raspberry PI alebo na priemyselných počítačoch s OS Windows/Linux) až po veľké systémy typu MES/EMS s desiatkami užívateľov, veľkými aplikačnými databázami (v rozmeroch jednotiek TB), multiterabajtovými archívmi a trezormi. V tejto kapitole sa pokúsime sumarizovať niektoré osvedčené spôsoby a praktiky pri navrhovaní a správe D2000 systémov.

 

Virtualizácia

Aplikačný server D2000 je dnes často prevádzkovaný aj vo virtualizovanom prostredí (VMware, Hyper-V, Proxmox), najmä pre systémy typu MES, EMS, SELT a bilančné systémy, zriedkavejšie pre SCADA systémy.
V tomto prostredí dochádza ku zdieľani zdrojov, z čoho vyplývajú dva základné problémy so zdieľaním spojené:

  • pridelenie dostatočného množstva zdrojov

  • monitorovanie a diagnostika

Osvedčila sa nám "hyperkonvergovaná architektúra", v rámci ktorej používame výkonné servery s lokálnymi diskami (v diskovom poli RAID10, prípadne RAID50). Ideálne je, keď majú virtualizované D2000 aplikácie vlastné servery (ktoré nie sú zdieľané s inými aplikáciami) a keď správcovia D2000 aplikácií majú nielen administrátorské práva na virtuálne stroje, na ktorých je D2000 prevádzkovaná, ale majú zároveň prístup do virtualizačného prostredia, takže môžu operatívne vykonať výkonnostnú diagnostiku v prípade problémov.

V prípade viacerých administrátorov (napr. pre sieťovú infraštruktúru a firewally, virtualizáciu, Active Directory, aplikačné servery) odporúčame zavedenie prevádzkového denníka, v ktorom budú zaznamenávané všetky operácie, ktoré mohli ovplyvniť funkčnosť serverov, najmä:

  • konfiguračné zásahy do sieťovej infraštruktúry

  • konfiguračné zásahy do virtualizácie, pridávanie virtuálnych serverov, zmeny v prideľovaní a obmedzení prostriedkov (CPU, RAM)

  • presuny virtuálnych serverov, presuny ich diskov

  • konfiguračné zásahy do diskových polí, pridávanie ďalších hostov

  • konfiguračné zásahy do politiky AD

  • zmeny v nastaveniach antivírusov a antimalware softvéru

  • inštalácie a upgrady softvéru

  • upgrady firmware (serverov, switchov, firewallov)

  • zmeny v nastaveniach serverov v BIOSe (výkonnostné, bezpečnostné, iné)

Následnú analýzu (spravidla pokiaľ dôjde k spomaleniu a zníženiu výkonu) existencia prevádzkového denníka značne uľahčuje. Na zdieľanie denníka možno použiť napr. SVN alebo GIT repozitár, prípadne SharePoint úložisko a podobne. 

Pridelenie dostatočného množstva zdrojov vo virtualizovanom prostredí

Zdroje, ktoré D2000 primárne potrebuje, sú tri: pamäť (RAM), CPU a diskový priestor (zatiaľ sme nezaznamenali problémy s limitmi priepustnosti na sieťových rozhraniach). Odporúčame:

  • RAM - pridelenie dostatočného množstva pamäte. Ideálne je vo virtuálnom prostredí pamäť rezervovať, takže nedochádza k zdieľaniu pamäte medzi virtuálnymi strojmi  (tzv. balooning).
    Malé D2000 aplikácie potrebujú orientačne 1 GB RAM (minimum pre aplikačný server na Windows/Linux je 4-8 GB), veľké niekoľko GB až desiatok GB, podľa počtu nakonfigurovaných objektov, procesov a používateľov. Ak je k dispozícii viac pamäte, odporúčame ju prideliť SQL databáze pre archív (odporúčame PostgreSQL) a archívnej cache (odporúčame niekoľko GB pre tzv. izochrónnu cache). Aplikácie využívajúce EDA technológiu (Energetická databanka) benefitujú z niekoľkých GB pamäte pridelených EDA serveru.

  • CPU - spotreba CPU silne závisí od povahy aplikácie (konštantná spotreba CPU pre aplikácie typu SCADA, výrazné špičky pre bilančné systémy alebo systémy, kde prebiehajú deje spúšťané užívateľmi - napr. príprava podkladov pre mesačné fakturácie). V prípade fyzických serverov majú dnešné procesory dostatok potrebného výkonu. Vo virtualizovanom prostredí sme sa stretli s prípadom, keď správcovia VMware umelo obmedzili maximálnu použiteľnú frekvenciu pre bilančný systém, lebo sa im zdalo, že "spotrebúva príliš veľa CPU". Jednak spôsobili výraznú nespokojnosť užívateľov (príprava fakturačných podkladov namiesto 30 minút trvala niekoľko hodín) a jednak analýza ukázala, že významnú časť výkonu spotreboval antivírus (ESET NOD), keďže nemal nakonfigurované výnimky.
    Pre veľké aplikácie je vhodné prideliť viac vCPU (4-8-16) - architektúra D2000 umožňuje dobrú paralelizáciu (paralelné tasky v rámci procesov D2000 Kernel, D2000 Event, D2000 Archiv [konfigurovateľne]).

  • Diskový priestor:

    • na partíciu s OS odporúčame cca 20 GB (Linux) resp. 100 GB (Windows)

    • na partíciu s D2000 odporúčame ako základ aspoň 40 GB, pričom najväčiu spotrebu má zvyčajne archívna databáza - jednotky GB až jednotky TB (pre SELT systémy monitorovacia databáza - až desiatky GB)

    • ak je zapnuté v D2000 Archíve trezorovanie (ukladanie historických údajov s neobmedzenou hĺbkou), tak na trezorové databázy odporúčame samostatnú partíciu (veľkosť trezorových databáz na nej bude postupne rásť). V súčasnosti existujú zákazníci s viac ako 20 TB trezorových databáz, pričom ale novšie verzie D2000 umožňujú zapnúť kompresiu dát trezorov, ktorá má zvyčajne kompresný pomer 1:10 a lepší, čo výrazne šetrí diskový priestor.

Na partíciu s OS a D2000 odporúčame rýchle disky (SSD), na partíciu s trezormi postačujú aj pomalšie HDD, prípadne NAS.

Monitorovanie a diagnostika vo virtualizovanom prostredí

Vo virtualizovanom prostredí je nevyhnutné mať prístup k monitorovaniu prevádzkových parametrov, aby bolo zaručené, že D2000 aplikácia netrpí v dôsledku zdieľania zdrojov. Odporúčame, aby správcovia prostredia monitorovali a vedeli poskytnúť tieto dáta (podľa vzoru grafov dostupných vo vCentre):

  • grafy CPU záťaže D2000 serverov, iných virtuálnych serverov v rámci hosta a celkovej záťaže CPU hostov (na diagnostiku, či nedochádza k nedostatku CPU výkonu)

  • grafy spotreby RAM (dôkaz, že nedochádza k balooningu - zdieľaniu pamäte medzi servermi pri nedostatku RAM a k následnému swapovaniu)

  • grafy záťaže I/O subsystému (metriky: počty čítaní/zápisov za sekundu, množstvá načítaných/zapísaných dát [kB/s], latencie čítania/zápisu) - opäť, pre D2000 servery, iné virtuálne servery v rámci hosta, a pokiaľ sa jedná o zdieľané úložisko, tak záťaže všetkých hostov používajúcich diskové úložisko (na diagnostiku, či nedochádza k nedostatku I/O výkonu). Niektoré zdieľané úložiská poskytujú vlastnú diagnostiku záťaže od jednotlivých hostov, ktorá sa dá využiť (LeftHand, 3PAR).

Všetky tieto grafy a dáta pre ne odporúčame mať k dispozícii aspoň 3 mesiace, kvôli dlhodobému sledovaniu výkonu.

Vo virtualizovanom prostredí je pre D2000 Archív dôležitá nielen rýchlosť, ale aj latencia diskov. Treba si uvedomiť, že pri archivácii sa zapisuje paralelne do stoviek a tisícov databázových tabuliek pre jednotlivé archívne objekty.
Pozn: pre staršie inštalácie D2000 odporúčame zväčšiť parameter PostgreSQL ODBC BatchSize (od PostgreSQL ODBC verzie 12.2) z prednastavenej hodnoty 100 na 10000 - zmena môže zrýchliť prepočty intervalov (RECALC) a akciu INSERTARCHARR.

 

Problémy s grafickým výkonom na virtualizovanom Windows Server 2025

V prípade zníženia grafického výkonu (napr. proces D2000 HI) po migrácii na virtualizovaný Windows Server 2025 platí:

V rámci Windows Server 2025 sú podporované 2 možné spôsoby ako zvýšiť zobrazovací výkon vo VM (virtual machine):

  1. GPU Partitioning (GPU-P) – NOVINKA - GPU výkon sa rozdeli na "časti" a každú takúto "partíciu" potom možno priradiť VM.

  2. Discrete Device Assignment (DDA) - Ide o klasický "GPU Passthrough", kde celú fyzickú kartu priradíte výhradne jednej VM - odporúčame zapnúť tento režim.

V obidvoch prípadoch predpokladáme, že GDI api na pozadí využíva GPU hardware. Podrobnosti sa dajú násť tu:

Troubleshooting guidance for Hyper-V GPU assignment, partitioning, and passthrough - Windows Server

V prípade použitia RDP je zaujímavé posúdiť aj nasledovné: Problém s pomalým vykresľovaním textu a GDI prvkov cez RDP na Windows Serveri 2025 je často spôsobený tým, že systém predvolene používa Microsoft Basic Render Driver (softvérové vykresľovanie) namiesto fyzického GPU.

  1. Vynútenie GDI akcelerácie cez registre na urovni HOST: - odporúčame zapnúť.
    GDI aplikácie sú často limitované "vzdialeným ovládačom". Skúste na serveri pridať/upraviť túto hodnotu v registroch, ktorá vynúti hardvérové spracovanie:

    1. Cesta: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows

    2. Kľúč (DWORD): DisableHWAcceleration (uistite sa, že je nastavený na 0)

  2. Aktivácia H.264/AVC 444 pre čistý text v GPO na úrovni HOST: - odporúčame zapnúť. Podrobnosti na obrázku nižšie
    Práve pre vykresľovanie textu (GDI) zapnite v GPO režim H.264/AVC 444. Tento režim zabraňuje rozmazaniu písma pri kompresii obrazu, čo často vyzerá ako "pomalé prekresľovanie", pričom využíva hardvérový enkóder vo vašom Xeone (Intel QuickSync).

  3. Aktivácia "Hardware Rendering" v GPO na úrovni HOST: - odporúčame zapnúť. Podrobnosti na obrázku nižšie
    Pre integrované čipy Xeon je kľúčové v Policy Editor-e (gpedit.msc) zapnúť politiku "Použiť hardvérový grafický adaptér pre všetky relácie služieb vzdialenej plochy". Bez tohto nastavenia Xeon iGPU pri RDP pripojení odpočíva a všetko počíta procesor (softvérovo), čo spôsobuje spomínanú pomalosť.
    Cesta v rámci Policy Editora:
    Konfigurácia počítača (Computer Configuration)
    → Šablóny pre správu (Administrative Templates)
    → Súčasti systému Windows (Windows Components)
    → Služba vzdialená plocha (Remote Desktop Services)
    → Hostiteľ relácií vzdialenej plochy (Remote Desktop Session Host)
    → Prostredie vzdialenej relácie (Remote Session Environment)

local_group_policy_editor.png

Podrobnosti sa dajú násť tu:

https://forum.level1techs.com/t/windows-11-remote-desktop-using-built-in-rdp-service-with-intel-i7-12700t-uhd-770-enable-h-264-avc-444-graphics-mode-or-hardware-encoding/236278

 

Grafické objekty - proces D2000 HI

Pokiaľ sa pri behu procesu D2000 HI objaví hláška typu:

Bola prekrocena hranica použitia 98% GDI objektov.
GDI objekty: 9802 / 10000 > 98%
Zvacsite hranicu maximalneho poctu objektov vo window registroch:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\GDIProcessHandleQuota
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Windows\GDIProcessHandleQuota

Tak proces D2000 HI potrebuje na vykreslenie komplexných schém veľké množstvo grafických handlov a približuje sa maximu, ktoré Windows povoľuje (štandardne 10000). Je potrebné zväčšiť toto maximum nastavením hodnoty GDIProcessHandleQuota vo Windows Registry (maximálna akceptovaná hodnota je 65536). Prvá uvedená cesta v Registry (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows) je platná pre 64-bitový D2000 HI, druhá pre 32-bitový D2000 HI.
Príklad nastavenia z príkazového riadku:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v GDIProcessHandleQuota /t REG_DWORD /d 65535 /f
Pozn: Pri snahe o použitie väčšieho množstva GDI objektov, ako je povolené maximum, bude proces D2000 HI ukončený.
Viac info: https://learn.microsoft.com/sk-sk/windows/win32/sysinfo/gdi-objects .

 

Užívateľské objekty - proces D2000 HI

Pokiaľ sa pri behu procesu D2000 HI objaví hláška typu:

Bola prekrocena hranica použitia 98% uzivatelskych objektov.
Uzivatelske objekty: 9802 / 10000 > 98%
Zvacsite hranicu maximalneho poctu objektov vo window registroch:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Windows\USERProcessHandleQuota

Tak proces D2000 HI potrebuje na vykreslenie komplexných schém veľké množstvo užívateľských handlov a približuje sa maximu, ktoré Windows povoľuje (štandardne 10000). Je potrebné zväčšiť toto maximum nastavením hodnoty USERProcessHandleQuota vo Windows Registry (maximálna akceptovaná hodnota je 18000). Prvá uvedená cesta v Registry (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows) je platná pre 64-bitový D2000 HI, druhá pre 32-bitový D2000 HI.
Príklad nastavenia z príkazového riadku:
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v USERProcessHandleQuota /t REG_DWORD /d 18000 /f
Pozn: Pri snahe o použitie väčšieho množstva užívateľských objektov, ako je povolené maximum, bude proces D2000 HI ukončený.
Viac info: https://learn.microsoft.com/en-us/windows/win32/sysinfo/user-objects .

Kompresia zložiek na Windows

Windows kompresia zložiek (compressed folders) zmenšovala veľkosť, ktorú zaberali na disku PostgreSQL databázy (najmä archívna databáza). Bola užitočná na starších verziách Windows (do 2012 včítane), ale na Windows 2016 a vyššie odporúčame ju nezapínať na adresároch s PostgreSQL databázami. Kvôli zmenám v implementácii NTFS kompresie dochádza k rezervovaniu veľkého množstva diskového priestoru v dôsledku častých náhodných zápisov do PostgreSQL databázy. Toto miesto sa uvoľní až reštartom Windows (alebo dekomprimáciou komprimovaných zložiek).

Napríklad na 200 GB disku môže rezervované miesto za mesiac narásť na viac ako 40 GB pri 100 GB archívnej databáze a cca 100 I/O operáciách za sekundu.
Pozn: rezervované miesto (napríklad na disku D:) je možné zistiť príkazom fsutil fsinfo ntfsinfo d:

C:\>fsutil fsinfo ntfsinfo d:
NTFS Volume Serial Number : 0xf82a3db62a3d732c
NTFS Version : 3.1
LFS Version : 2.0
Total Sectors : 419,424,255 (200.0 GB)
Total Clusters : 52,428,031 (200.0 GB)
Free Clusters : 15,719,772 (60.0 GB)
Total Reserved Clusters : 11,312,766 ( 43.2 GB)

 

Antivírusy

V prípade použitia antivírusov a antimalware programov (Microsoft Defender, ESET Nod, Symantec a iné, na platforme Linux napr. McAfee 'OAS Manager') je nutné správne ponastavovať výnimky, aby antivírusy nezahltili CPU a nespomalili funkčnosť D2000 systémov.

Výnimky na adresáre: štandardne odporúčame pridať adresáre s D2000 a databázami pre D2000, napr. na platforme Windows:

  • C:\Program Files\PostgreSQL - inštalácia PostgreSQL databázy

  • D:\D2000 - inštalácia D2000

  • D:\_FTP - adresár pre FTP update

  • D:\_Backup - adresár na vytváranie záloh

Pozn: v prípade antivírov firmy ESET je potrebné pridať do Performance exclusions nielen názvy adresárov, ale aj všetky súbory (tj. za menom adresára je nutné "\*" , napr. D:\D2000\* ). Do Detection exclusions odporúčame pridať súbory z inštalácie D2000 (napr. D:\D2000\D2000_EXE\bin64\* ) a PostgreSQL (napr. C:\Program Files\Postgresql\15\bin\* ).

Na platforme Linux:

  • /opt/d2000 - inštalácia D2000 + aplikačný adresár (obsahuje tablespace pre Syscfg, Logfile, Archiv)

  • /var/lib/pgsql - inštalácia PostgreSQL databázý

Výnimky na programy v pamäti - kvôli tomu, aby sa antivírusy nesnažili analyzovať komunikáciu (externú -  D2000 KOM, medzi procesmi - D2000 Kernel, s databázami - D2000 DbManager). Odporúčame pridať výnimky na D2000 procesy, ktoré spotrebúvajú najviac CPU, štandardne sú to:

  • postgres.exe - SQL databáza (pre Oracle DB proces oracle.exe, v prípade Sybase SQL Anywhere 12 procesy dbsrv12.exe a dbeng12.exe)

  • kernel.exe

  • kom.exe

  • calc.exe

  • dbmanager.exe, dbmanager_ora.exe

  • event.exe, event_edathin.exe

  • archiv.exe, archiv_ora.exe

  • gtwcli.exe, gtwsrv.exe

  • tcts.exe

  • alarm.exe

Pozn: dokumentácia pre Microsoft Defender odporúča vo výnimke zadávať úplnú cestu k procesu (napr. d:\D2000\D2000_EXE\bin\kernel.exe), aby sa zabránilo malvéru použiť rovnaký názov súboru a tak sa vyhnúť odhaleniu.

Na platforme Linux:

  • postgres, postmaster

  • kernel

  • kom

  • calc

  • dbmanager, dbmanager_ora

  • event, event_edathin

  • archiv, archiv_ora

  • gtwcli, gtwsrv

  • tcts

  • alarm

V prípade niektorých antivírusov (Microsoft Defender) je vhodné sledovať celkovú spotrebu CPU antivíru (msmpeng.exe) v Task Manageri. Ak je vysoká, výnimky sú nedostatočné (a treba nastaviť výnimky pre ďalšie procesy, zvyčajne tie, ktoré majú tiež vysokú spotrebu CPU). Iné antivírusy (ESET NOD) pracujú "v utajení" a spotrebúvajú CPU v kontexte bežiacich procesov - Task Manager tak ukazuje napr. vysokú spotrebu CPU pre postgres.exe.

Negatívne skúsenosti sú aj s programom xagt.exe (FireEye Endpoint Security), ktorý (pravdepodobne kvôli chýbajúcim výnimkám) jednak spotreboval pomerne veľa CPU výkonu (4 zo 16 dostupných CPU) a jednak znefunkčnil niekoľko realtime komunikácií (IEC 870-5-101, IEC 870-5-104).

 

Užitočné diagnostické nástroje

Na platforme Windows:

  • Resource monitor (dostupný z Task Managera) - zobrazenie štatistík o CPU, spotrebe pamäte, diskových operáciách a využití siete 

Na platforme Linux:

  • utilita iotop slúži na zobrazenie štatistík diskových operácií
    iotop (interaktívne zobrazenie aktuálnych hodnôt jednotlivých procesov)
    iotop -ao (zobrazenie kumulatívnych I/O štatistík jednotlivých procesov)

  • utilita ps (zobrazenie informácií o jednotlivých procesoch)
    ps -eo pcpu,pid,user,args | sort -nk 1 -r | head -20  (zobrazenie všetkých procesov - využitie CPU, PID procesu, užívateľ a argumenty - a zotriedenie podľa CPU, pričom sa zobrazí 20 procesov s najvyšším využitím CPU)

  • utilita perf
    perf top (zobrazí najzaťažujúcejšie programy a procedúry/knižnice s najvyššou záťažou)