Nederlandse FEWS Gebruikersdag Delft-FEWS Database Analyse & Performance Marc van Dijk, Onno vd Akker 0
Inhoud Presentatie Aanleiding Delft-FEWS tools voor systeem analyse Analyse Delft-FEWS performance Analyse van Delft-FEWS database Conclusies - Acties
Aanleiding Sommige Delft-FEWS gebruikers hebben performance problemen met hun Delft-FEWS applicatie en melden dit bij FEWS support Symptomen Workflows lijken langer te duren FEWS OC hangt af en toe Synchronisatie loopt vast (JBOSS) Geheugen problemen computers (OC en FSS) Dit komt voornamelijk door Grote databases; localdatastores (OC en FSS) bij synchronisatie Grote cache files bij Direct Database Access Sub-optimale configuratie Delft-FEWS applicatie Onvoldoende CPU / geheugen van de FSS en
Aanleiding Afgelopen jaren zijn er verschillende analyses uitgevoerd bij gebruikers en binnen Delft- FEWS projecten om performance problemen duidelijk te krijgen: FEWS Scotland (Micha) - document NFFS NorthEast (Marc) - document HyFS (Marc) memo FEWS FOEN (Simone, Marc) Kennis opgedaan tijdens deze analyses gaan we delen met grote groep gebruikers Moet uiteindelijk resulteren in adviezen voor op te zetten infrastructuur en configuratie richtlijnen
Delft-FEWS Tools voor Analyse HyFS End User Training 24 Feb 2014 26 Feb 2014
Tools binnen Delft-FEWS software Er zijn een aantal FEWS (debug) tools met bruikbare informatie over de FEWS applicatie About box FEWS build nummer (en patch nummer) Geheugen gebruik tijdreeksen en configuratie Queries naar de database F12 (Debug) Q database log database table spaces database info
Tools binnen Delft-FEWS software Status Bar Verbonden met MC Server Lees snelheid uit database Downloadsnelheid bij Direct Database Access Leessnelheid localdatastore bij Synchronisatie Geheugen gebruik OC client Dubbelclick schoont geheugen OC op Als het rood wordt zit je aan je maximum geheugen OC Logging van database queries bij DDA
Tools binnen Delft-FEWS software Database Viewer Start en End date van external historical series. Als deze rood zijn dan eerste /laatste waarde missing. Incidenteel mag dat; als het vaak optreed moet het opgelost worden in de configuratie (blaast database op) Value Resolution: Sla waarden op met significante cijfers Disk Space geeft aan hoeveel ruimte nodig is voor opslaan reeksen Blob Count en Weighted Blob Count. Voor scalaire data geeft dit aan hoeveel blobs gemerged kan worden. BC moet liefst 1 zijn. WBC van 0.2 geeft aan dat 5 reeksen in 1 blob zitten. Time Series Count geeft aan hoeveel reeksen er in een workflow zitten.
Tools binnen Delft-FEWS software Detail analyse FEWS database: FEWS VJDBC Server en DBVisualiser (procedure staat op WIKI) Werkt alleen op localdatastore Bij DDA, download eerst database met replicate functie (F12 database)
Tools binnen Delft-FEWS software Logging op de FSS: log.txt file INFO - ForecastingShell.init - ForecastingShell.Info: version: 2014.02, build: 54359 (patched from 50595) Jun2, type: BOM, jre: 1.7.0_71, os:windows 7, user:aubo, mx: 1037m, db: Oracle 12.1, region: HyFS INFO - TaskRun.run - TaskRun.Started: Starting Task ImportExternal with ID AUBOMC00:000247950 and T0 2015-06-08 09:22:00 and default forecast length, available memory 831 MB INFO - Workflow.run - Workflow.ActivityCompleted: Workflow ImportExternal completed in 5s INFO - TaskRun.run - TaskRun.TimeSpend:SecondaryValidation 4s 75% TimeSeriesImport 1s 23% datastore 1s 24% cache files 6.3 MB database 0s 0% (7 ms/query, 17 kb, 50 kb/s, 49 queries, 4481 rows) reloaded 0 B time series read 9013 (unique=7927) time series written 9013 (changed=0) files 0s 0% logging 0s 0% gc 1s 10% cpu 90% max mem. 231 MB index mem. 28 MB db con. acquire time 0s 0% lock. acquire time 0s 0% Vooral garbage collector (gc) is belangrijk, >30% dan is er iets aan de hand. Onvoldoende geheugen computer waardoor geheugen gaat swappen naar schijf (VM servers) Scan de tijd van opstarten, afsluiten en verschillende modules
Tools binnen Delft-FEWS software Admin Interface tools: Database Analyse Gebruik om grootte database en aantal records te monitoren
Performance HyFS End User Training 24 Feb 2014 26 Feb 2014
Performance Aandachtspunten Performance van een systeem is afhankelijk van verschillende factoren Gebruikservaring FEWS gebruiker Hoeveelheid gegevens, grootte database ICT-Infrastructuur Configuratie FEWS Applicatie Ervaringen FEWS Applicaties Grote systemen kunnen goede performance hebben Performance problemen zijn tot nu toe (bijna) allemaal oplosbaar Voor een betrouwbaar performant Delft-FEWS systeem is (dagelijks) monitoren van de verschillende componenten belangrijk: Detecteer potentiele problemen voordat het een probleem gaat worden Detecteer problemen welke niet direct zichtbaar zijn voor normale gebruikers Documenten beschikbaar bij Deltares met voorbeelden basis Health Checks.
Performance Voorbeelden Voorspellingsysteem van National Weather Service; regionaal systeem (VS) Veel metingen (relatief grote tijdstap), relatief weinig grids Heel veel losse modellen (>1000) met complexe FEWS xml configuratie Veel simulaties met ensembles en losse tijdreeksen Een dagelijkse voorspelling bevat 900.000 individuele tijdreeksen Ondanks grote hoeveelheid tijdreeksen is de performance goed
Performance Voorbeelden Voorspellingsysteem van Bureau of Meteorology (Australië) Veel metingen voor +- 10.000 meetlocaties (kleine tijdstap); import elke 3 minuten. Veel Meteo en Radar grids Beperkte hoeveelheid centrale simulaties op back-end servers Veel locale runs op Operator Client Getest met 70 gelijktijdige gebruikers, performance bleef goed Meest problematische data is bewerkte neerslag data (elke 3 minuten andere waarde)
Performance Voorbeelden Voorspellingsysteem van FFC, Environment Agency (Engeland) Nationaal neerslag en waterstand meetnetwerk +- 3.000 meetlocaties (alles 15 minuten tijdstap, dus eenvoudig). Veel Meteo en Radar grids; vooral veel ensembles Weinig simulaties in FEWS, meeste model simulaties op super computer MetOffice Veel Nowcast ensembles (elke 15 minuten), +- 10 Gb dag. Geoptimaliseerd door data maar tijdelijk op te slaan (2-6 uur), hierdoor database maar 2-3 Gb groot.
Voorbeelden Performance bottlenecks External historical reeks verdeeld over meerdere blobs is sub-optimaal Kan door import komen (Import formaat met original missings) Processen van dezelfde data in verschillende workflows Bewerkingen die elke run veranderen (bv ruimtelijke interpolaties van neerslag)
Performance Aandachtspunten Zorg voor goed ICT infrastructuur Voldoende geheugen op een OC en FSS Snel netwerk, of Virtual Desktop oplossingen Aandachtspunten gebruik Direct Database Access Verschil PostGresSQL en ORACLE maakt niet veel uit PostGResSQL geeft iets meer netwerkverkeer maar eenvoudiger onderhoud Bij SQL-Server en PostgresSQL is performance slechter bij database met veel records van korte levensduur Optimaliseer de Configuratie Korte locatie ID s en parameter ID s. Mergen van Blobs gaat beter Gebruik veel temporary series als je de data toch niet laat zien Processen van data in 1 workflow
Performance Aandachtspunten Grootste performance problemen zien we bij. Delft-FEWS als operationeel voorspellingsysteem: Gebruik ensemble voorspellingen (veel grids met beperkte houdbaarheid) Draaien grote modellen met veel grid uitvoer en grote model states Complexe configuratie met veel modellen en configuratie bestanden Delft-FEWS als WIS systeem Lange historische scalaire reeksen. Vooral processing optimaliseren. Radar grids gebruiken veel database ruimte
Grote Databases HyFS End User Training 24 Feb 2014 26 Feb 2014
Grote localdatastore / centrale database Wat is een grote database? FSS localdatabase > 3-5 GB Uitzondering kan zijn een systeem waarbij enkele grote grids gebruikt worden Probleem meestal in dynamische tabellen, soms ook statische config tabellen Enkele tabellen hebben veel records TimeSeries > 1 miljoen records Streef naar max van 500.000 600.000 ThresholdEvents > 250.000 Reports WarmStates Logentries
Analyse NFFS - NorthEast Probleem NFFS: performance van NFFS regio systemen gaat achteruit Waarschijnlijk gevolg van grotere databases Eerste analyse: NFFS Northeast Conclusies Database is niet heel groot (2.5-3 GB) Verouderde configuratie; enkele nieuwe FEWS functies niet gebruikt Grootste problemen bij: ModuleDataSets (veel verschillende versies van oude config) ThresholdEvents (veel records in tabel, lange tijd opgeslagen) Reports (500 MB reports worden in database opgeslagen) TimeSeries (vooral probleem van grote grids en external historical)
Analyse NFFS - NorthEast Statische Configuratie FEWS database is geen SVN repository Zorg ervoor dat configuratie regelmatig worden opgeschoond Vooral ModuleDataSets kunnen veel volume hebben Effect vooral zichtbaar op FSS localdatastore, is replica van hele database Module Instance Number of moduleinstance datasets in database (-) Northeast_Modules 9 67.34 Northeast_Modules_Triton 7 59.19 R_Part4_Module 1 10.38 R_Part2_Module 1 10.17 R_Part3_Module 1 4.21 R_Part1_Module 1 3.84 Northeast_ColdStates 8 2.61 Northeast_HFPT_Modules 1 2.53 Report_Export 14 1.71 Report_Export_ZIPFile 14 1.71 ISIS_Don_Forecast 2 0.50 Northeast_Reports 1 0.12 Report_Export_System_ZIPFile 1 0.02 ISIS_Gaunless_Forecast 3 0.01 Total Size in database (MBytes)
Analyse NFFS - NorthEast TimeSeries table Analyse uitgevoerd met VJDBC en DBVisualizer Kopie van OC localdatastore en FSS localdatastore Uitvoeren van verschillende queries om te zien waar probleem ligt Query 1: Counts the number and size of records according to time series type SELECT Count(blobid) as NumBlobs, TimeSeriesType, Sum(blobsize) as BlobSize FROM TimeSeries GROUP BY TimeSeriesType; FSS Time series type No. Records (-) Size on Binary Object (MBytes) Average size of record (Bytes) Percentage (%) External Historical 289443 137 473 9.95% External Forecasting 82750 724 8749 52.61% Simulated Historical 17028 9 544 0.67% Simulated Forecasting 360478 506 1404 36.77% Temporary Total 749699 1376 100.00% OC Time series type No. Records (-) Size on Binary Object (MBytes) Average size of record (Bytes) Percentage (%) External Historical 67198 32 478 7.82% External Forecasting 43695 373 8541 90.82% Simulated Historical 855 0 562 0.12% Simulated Forecasting 3045 5 1674 1.24% Temporary Total 114793 411 100.00%
Analyse NFFS - NorthEast Aanbevelingen: external historical Verbeter de amalgamate module instance Maak configuratie transparant; misbruik moduleinstanceid niet Verwijder processing module instances uit forecast workflows Voorbeeld: grafiek met records per dag voor 1 jaar Geeft inzicht in hoe je database zal groeien na config aanpassing
Analyse NFFS - NorthEast Aanbevelingen: external forecasting Voor grids: maak grid domein kleiner na import origineel grid Verander resolutie grids na import Kijk goed naar valueresolution; geen schijnnauwkeurigheid opslaan Sla alleen die grids (parameters op) die gebruikt worden Verander Change <synchlevel>6</synchlevel> naar <synchlevel>7</synchlevel> voor alle grids die op FSS kunnen blijven Parameter No. Records Size of data Object (MBytes) (-) Pressure.msl 32 10.16 Wind.u 49 17.04 Wind.v 49 17.03 Parameter No. Records (-) Size of data Object (MBytes) Pressure.msl 32 10.16 Wind.u 10 2.89 Wind.v 10 2.95
Analyse HyFS Amalgamate is heel belangrijk (getrapt geïmplementeerd, dag, week, maand))
Conclusies - Acties HyFS End User Training 24 Feb 2014 26 Feb 2014
Conclusies - Acties Verschillende analyses hebben een aantal zaken duidelijk gemaakt Configuratie Gebruik getrapte amalgamate oplossing voor external historical series Na aanpassingen van wind grids, thresholdsevents en meteo processing in EA Northeast configuratie is database grootte met 50% gereduceerd Zorg voor duidelijke configuratie met gescheiden workflows voor import, processing en simulaties Delft-FEWS software Problemen met mergen blobs verbeterd Geheugen gebruik cache bestanden verbeterd, enkele fouten gevonden en opgelost Gezamenlijk gebruik FEWS operationele database en FEWS Archief gaat steeds belangrijker worden
Algemene aanbevelingen Belangrijk: elk klein stukje winst kan later belangrijk blijken te zijn Oplossingen kunnen verschillend zijn voor Synchronisatie en DDA Zorg voor goede afstemming tussen expiry time in operationele database en FEWS Archief Tijd nemen in projecten voor het reviewen van configuratie Leren van elkaar: uitwisselen analyses en tips Presentaties en analyses komen op de WIKI