OuroPlatform Benchmark

85 minut napětí

Vojtěch Mareš, Vendula Lucáková 9 min

Moderní smart-grid řešení potřebují spolehlivé, škálovatelné a bezpečné získávání dat. Ať už se jedná o elektřinu, plyn, vodu nebo teplo — poskytovatelé služeb stále častěji požadují platformy, které dokáží nasbírat miliony datových bodů během minut, ne hodin.

V tomto článku sdílíme podrobný benchmark OuroPlatform — našeho výkonného, protokolově nezávislého systému pro sběr a zpracování dat.

Simulovali jsme 1,2 milionu zařízení, spustili 1,2 milionu úloh a měřili, jak rychle platforma umí číst a ukládat DLMS profilová data ve velkém měřítku.

Pokud hledáte technologie pro AMI, HES nebo velkokapacitní DLMS akviziční systém — poskytne vám tento benchmark refereční měřítko výkonosti.

Co je OuroPlatform

OuroPlatform je moderní aplikace pro vzdálený sběr a monitorování dat. Je navržená tak, aby zvládla:

  • Vysoký objem dat
  • Ultra-rychlé zpracování úloh
  • Špičkové zabezpečení
  • Podporu široké škály komunikačních ovladačů

Testovaný systém

OuroPlatform je řešení složené z komponent, které komunikují pomocí gRPC nebo přes fronty událostí. S virtuálními měřiči drivery komunikují protokotel DLMS se zapnutou bezpečnostní sadou 2. úrovně. Všechna komunikace je šifrovaná a autentizovaná pomocí AES-GCM-256 jak požaduje norma DLMS protokol, každé simulované zařízení má svoji sadu kryptografických klíčů.

Schéma testovaného systému

Pojmy

  • Device - Výraz pro měřič. Zařízení mohou představovat různé druhy měřičů (elektřina, plyn, aj.) od různých výrobců.
  • Periodical Profile - Datová sada, kde jsou všechny hodnoty zarovnány k pevnému intervalu (např. každých 15 minut) s časovými značkami začínajícími vždy v 00:00.
  • Job - Úloha, která popisuje akce nad jedním měřičem.
  • Simulator - Náš DLMS Meter Simulator. Nástroj, který simuluje reálný měřič včetně chování, struktury dat a zpoždění. Jedna instance simulátoru dokáže simulovat desítky tisíc (i miliony) virtuálních měřičů.
  • Virtual meter - Jeden měřič simulovaný instancí Simulátoru.
  • Driver - Komponenta OuroPlatform zodpovědná za komunikaci se zařízeními konkrétního typu pomocí příslušných komunikačních protokolů (např. DLMS).

Scénář benchmarku

Cílem benchmarku bylo:

Co nejrychleji vyčíst všechny nakonfigurované 15minutové a 10minutové profily za jednu celou hodinu (4 a 6 hodnot na profil) z 1,2 milionu zařízení.

Nastavení

Testovací prostředí

Benchmark byl proveden v naší laboratoři na fyzickém hardware s následující konfigurací:

  • Kubernetes cluster: 3 master nody, 4 worker nody
  • Ceph storage cluster: 2-node pro HA úložiště (běžící mimo Kubernetes)
    • Všechna data jsou ukládána na 2 replikách (storage-level HA mód)
  • PostgreSQL cluster v Kubernetes s rozšířením TimescaleDB přes CLoudNativePG
    • 2 nody (HA mód na úrovni databáze), primární + synchronní replika
    • Data ukládána na Ceph
    • WAL logy ukládány lokálně na hostitelském nodu
  • NATS queue cluster v Kubernetes
    • 3 nody (HA mód na úrovni fronty), RAFT distribuovaný algoritmus
    • Data ukládána na Ceph
  • OctopusMQ queue cluster v Kubernetes
    • 3 nody (HA mód na úrovni fronty), RAFT distribuovaný algoritmus
    • Data ukládána na Ceph
  • Síť
    • Kuberntes nody: bonding 2x1 Gbps (celkem 2 Gbps)
    • Ceph cluster (Ceph-Ceph): 10 Gbps optické vlákno

K simulaci elektroměrů jsme použili DLMS Meter Simulator, který simuluje virtuální elektroměry. Abychom napodobili reálné chování, byly implementovány různé náhodné faktory, jako například náhodné zpoždění komunikace (250 ms až 1 s).

Celý systém byl nastaven podobně jako realné nasazení v distribuovaném clusteru. Běžely dvě databázové a frontové repliky v režimu active-active HA, všechna data byla ukládána na 2 Ceph nody v režimu active-active HA. Data PostgreSQL byla asynchronně zálohována na NAS.

Zdroje

Celkem bylo v clusteru rezervováno 50 CPU cores, 137 GB RAM.

  • Základní komponenty OuroPlatform: 16 CPU cores, 25 GB RAM
  • Driver komponenty OuroPlatform: 24 CPU cores, 64 GB RAM
  • PostgreSQL: 10 CPU cores, 48 GB RAM

Testovací scénář

Benchmark měl za úkol naplánovat 1,2 milionu jobů pomocí OuroPlatform API, následně vyčíst požadovaná data ze simulovaných měřičů a co nejrychleji je uložit.

Celkem bylo paralelně simulováno 1,2 milionu virtuálních měřičů:

  • 24 instancí simulátoru
  • 50 000 virtuálních měřičů na instanci

Každé zařízení obsahuje šest (6) 15minutových profilů a osmnáct (18) 10minutových profilů a simuluje následující OBIS kódy:

  • 15minutové profily:
    • 1-0:1.4.0
    • 1-0:2.4.0
    • 1-0:5.4.0
    • 1-0:6.4.0
    • 1-0:7.4.0
    • 1-0:8.4.0
  • 10minutové profily:
    • 1-0:12.4.0
    • 1-0:12.6.0
    • 1-0:12.3.0
    • 1-0:21.4.0
    • 1-0:22.4.0
    • 1-0:23.4.0
    • 1-0:24.4.0
    • 1-0:31.4.0
    • 1-0:41.4.0
    • 1-0:42.4.0
    • 1-0:43.4.0
    • 1-0:44.4.0
    • 1-0:51.4.0
    • 1-0:61.4.0
    • 1-0:62.4.0
    • 1-0:63.4.0
    • 1-0:64.4.0
    • 1-0:71.4.0

Požadovaná data pokrývala hodinové období, což představuje:

  • 28,8 milionu datapointů pro 15minutové profily
  • 129,6 milionu datapointů pro 10minutové profily

Předpokládaný počet paralelních spojení potřebných ke čtení těchto zařízení do hodiny byl 8 000.

Aby se zátěž rozložila v Kubernetes clusteru, tato spojení obsluhovalo 16 instancí driverů, z nichž každá umožňovala až 500 paralelních spojení. Počet driverů byl škálován automaticky v závilosti na množství jobů v rozmezí 0 až 16.

Měření a metriky

OuroPlatform poskytuje bohatou sadu Prometheus metrik. Sledovali jsme metriky z:

  • Komponent OuroPlatform
  • NATS
  • PostgreSQL

Zaměřili jsme se na metodiky USE a RED:

Zároveň jsme měřili celkový čas dokončení definovaný jako:

Čas od spuštění dávky po moment, kdy je poslední datapoint úspěšně zapsán do PostgreSQL.

Výsledky byly stabilní napříč stovkami pokusů s variabilitou kolem ≈ 3 %.

Výsledky benchamarku

Celková doba trvání

Systém dokončil celou dávku 1,2 milionu úloh za 1 hodinu, 24 minut a 30 sekund.

Fáze sbírání dat

Všechna data z 1,2 milionu meřičů byla sesbírána za 50 minut a 30 sekund.

Graf níže ukazuje rychlost zpracování dat v čase.

Zpracování dat v čase

Průměrná rychlost dokončování úloh byla ≈ 400 úloh/sekundu.

Graf níže ukazuje rychlost, jakou byly úlohy dokončovány v této konfiguraci systému.

Rychlost dokončování úloh

Dokončené úlohy

Fáze ukládání dat

Data byla ukládána asynchronně od okamžiku, kdy dorazila první data ze zařízení.

Po dokončení všech úloh (komunikace s měřiči) potřeboval systém ještě 34 minut k uložení zbývajících dat do datového úložiště.

Síťová propustnost

  • Maximální síťový provoz: 52 Mb/s
  • Průměr při komunikaci se zařízeními: 44 Mb/s
  • Průměr při ukládání dat: 21 Mb/s

Total receive bandwidth

Total transmit bandwith

Využití zdrojů

Každá komponenta testovaného systému měla vyhrazenou paměť a CPU. Hodnoty byly naddimenzované a všechny komponenty dohromady měly:

  • Maximální využití paměti: 32 GiB
  • Průměr využití paměti: 31.8 GiB
  • Maximální využití CPU: 22.8 cores
  • Průměr využití CPU: 21.9 cores

Využití paměti

Využít procesoru

Závěr

Výsledky benchmark ukazují, že OuroPlatform dokáže přečíst a zpracovat více než 1,2 milionu zařízení a 156,8 milionu datapointů za méně než 90 minut, a to i na středně velkém clusteru v laboratoři. Síť (10 Gbit) se může zdát předimenzovaná, ale poskytla nízkou latenci pro všechny komponenty napříč servery.

Fronta úloh a sada komunikačních driverů vyčetly data ze všech měřičů za 50 minut a 30 sekund.

Data byla nejprve dočasně uložena v datové frontě. Asynchronní komponenta je následně zpracovala a uložila do databáze. Tento proces běží nepřetržitě od prvního dokončeného výčtu až do konce testu.

Když bylo spuštěno všech 16 instancí driverů, byly nároky na zdroje vyšší. Po zbytek času byly drivery automaticky škálované dol, čímž se šetřily rezervované zdroje.

Klíčová zjištění:

  • PostgreSQL bylo největším bottleneckem
    Primární node pracoval na 100 % CPU, což limitovalo celkovou rychlost ukládání dat.
  • Přidání dalších CPU samo o sobě nepomůže
    Zvýšení výpočetní kapacity PostgreSQL pouze přesune bottleneck jinak.
  • OuroPlatform zpracovala úlohy mimořádně efektivně
    Komunikace s měřiči byla dokončena za pouhých 50 minut, zbytek času představovalo ukládání dat.

Shrnutí

Tento benchmark potvrzuje, že OuroPlatform dokáže:

  • Obsloužit více než milion zařízení
  • Udržet předvídatelnout propustnost
  • Zvládnout náročné DLMS/COSEM zatížení

Pokud váše energetika, integrátor, nebo AMI projekt vyžaduje výkonné, odolné a bezpečné získávání data ve elkém měřítku, pak OuroPlatform poskytuje spolehlivý a moderní základ.