Firebird OLTP-EMULator-test
OLTP-EMUL is de officiële Firebird-test die een realistische OLTP-workload op Firebird 2.5 en hoger emuleert. Gebruik het voor prestatie- en regressiecontroles onder veel gelijktijdige ISQL-sessies. Lees deze handleiding zorgvuldig voordat u de test uitvoert.
Kloon de repository
Windows
git clone --config core.autocrlf=true https://github.com/FirebirdSQL/oltp-emul
Linux / POSIX
git clone --config core.autocrlf=false https://github.com/FirebirdSQL/oltp-emul
Snelstart op basis van werk van Pavel Zotov (Moskou). Vragen over de test zelf: [email protected]. IBSurgeon-ondersteuning: [email protected].
1. Vereisten
Installeer op de host die de ISQL-sessies zal uitvoeren een Firebird-client en zorg ervoor dat deze binaire bestanden beschikbaar zijn:
isql(op sommige POSIX-pakketten:isql-fb)fbsvcmgr
2. Kies en kopieer een configuratiebestand
Kies in de map src de standaardconfiguratie die overeenkomt met uw Firebird-hoofdversie en besturingssysteem, en kopieer deze zonder het achtervoegsel .default.
| Firebird | Besturingssysteem | Configuratiebestand |
|---|---|---|
| 2.5 | Windows | oltp25_config.win.default |
| 2.5 | Linux | oltp25_config.nix.default |
| 3.0 | Windows | oltp30_config.win.default |
| 3.0 | Linux | oltp30_config.nix.default |
| 4.0 | Windows | oltp40_config.win.default |
| 4.0 | Linux | oltp40_config.nix.default |
# Windows copy .\oltp30_config.win.default .\oltp30_config.winLinux
cp ./oltp30_config.nix.default ./oltp30_config.nix
3. Belangrijke instellingen
Bewerk de gekopieerde configuratie. Besteed speciale aandacht aan:
- fbc - pad naar
isqlop de machine die sessies start - clu - optionele niet-standaard ISQL-binaire naam (bijv.
isql-fbop POSIX-pakketten) - dbnm - volledig pad en bestandsnaam van de database op de server (alleen ASCII; geen alias als u wilt dat het script deze aanmaakt)
- host, port, usr, pwd - verbindingsparameters
- tmpdir - map voor ISQL-logboeken en tijdelijke testbestanden
- init_docs - documenten die vóór de gemeten workload moeten worden aangemaakt (probeer eerst 3000-5000)
- warm_time / test_time - opwarm- en meetfasen, in minuten
- sleep_min / sleep_max - pauze tussen transacties (stel
sleep_maxin op 0 om pauzes uit te schakelen) - sleep_ddl - optionele UDF voor pauzes (voorkeur boven shell
sleep/cscript); binaire bestanden onderutil/udf64/ - wait_for_copy - pauze na init zodat u een snapshot van de database kunt maken vóór opwarming/meting (nuttig voor herhaalde runs)
Na init voert de test eerst warm_time minuten opwarming uit en meet daarna test_time minuten.
4. Windows- en firebird.conf-tips
Sluit antivirus-/besturingssysteemscanning uit van tmpdir en van Firebird-temp-mappen (FIREBIRD_TMP / TMP / TEMP en TempDirectories in firebird.conf). Het afstemmen van FIREBIRD_TMP op TempDirectories vermindert vertragingen onder veel ISQL-sessies.
Verhoog ten minste:
DefaultDbCachePagesLockHashSlotsLockMemSizeFileSystemCacheThreshold- moet expliciet worden ingesteld en groter zijn danDefaultDbCachePages(de test wijst een ontbrekende/uitgecommentarieerde waarde af, behalve bij sommige POSIX-pakketindelingen)
Streef naar ongeveer 25% van het RAM-geheugen voor de paginacache. Stel DefaultDbCachePages niet in boven 2048 voor Classic / SuperClassic. De paginagrootte is vast ingesteld op 8192.
Voorbeeld van een gemiddelde belasting (~100 sessies):
| Parameter | SuperServer 3.0+ | [Super]Classic 3.0+ | [Super]Classic 2.5 |
|---|---|---|---|
DefaultDbCachePages |
~0,25 × RAM / 8192 | 1024 | 1024 |
LockHashSlots |
8191 | 16001 | 16001 |
LockMemSize |
4194304 | 16777216 | 16777216 |
Voor kant-en-klare configuraties, zie de Configuratiecalculator en referentieconfiguraties.
5. Voer de test uit
Open een shell, ga naar src en voer uit:
1run_oltp_emul <FbMajor> <NumSessions> [nostop]
- FbMajor -
25,30of40voor Firebird 2.5 / 3.0 / 4.0 - NumSessions - aantal te starten ISQL-sessies
- nostop - optioneel; slaat interactieve pauzes over (nuttig vanuit een planner)
Als het databasebestand niet bestaat en dbnm een volledig pad is (geen alias), kan het script het aanmaken. Onvolledige of lege eerdere databases worden indien nodig opnieuw aangemaakt.
6. Rapporten en stoppen
Na opwarm- + meettijd stoppen de sessies automatisch. De eerste ISQL-sessie schrijft het eindrapport onder tmpdir. Met make_html = 1 op Windows wordt ook een HTML-rapport geproduceerd (langzamer).
De naamgeving van rapporten hangt af van file_name_with_test_params:
- Uitgecommentarieerd (standaard) - bijv.
oltp**.report.txt regular- namen met tijdstempel, geschikt voor het bekijken van vele runs in een mappenlijstbenchmark- namen geschikt voor het vergelijken van instellingen/DDL-varianten
Rapporten bevatten architectuur en instellingen, algehele en per-interval prestaties (CNT_OK_PER_MINUTE / AVG_TIMES_PER_MINUTE), optionele monitoringdetails, uitzonderingen, databasestatistieken, versie-/recordverhoudingen, validatie voor gewijzigde tabellen en een firebird.log voor/na-diff.
U kunt ook query's uitvoeren:
select * from srv_mon_perf_dynamic; select * from srv_mon_perf_total;
Vroegtijdig stoppen
Gebruik 1stoptest.tmp (.bat / .sh) dat bij elke start in tmpdir wordt aangemaakt. Voor multi-host-starts kunt u in plaats daarvan ExternalFileAccess inschakelen in firebird.conf, use_external_to_stop instellen in de OLTP-configuratie en een teken in dat stopbestand schrijven (wis het vóór elke nieuwe run).
Herhaalbare basislijnen
Stel wait_for_copy = 1 in, laat init voltooien, kopieer de database en herstel die kopie vóór elke vergelijkende run, zodat elke meting vanaf hetzelfde punt begint.
Wat de workload modelleert
Het scenario volgt bedrijfsdocumenten in autoservicestijl:
- Klant- (of interne) bestellingen voor onderdelen
- Bestellingen worden gecombineerd en naar een leverancier gestuurd
- Leveranciersfactuur (volledig of gedeeltelijk)
- Voorraadontvangst; door klanten bestelde onderdelen worden gereserveerd
- Verkoop en voorraadafschrijvingen
- Annuleringen mogelijk bij meerdere stappen
- Gedeeltelijke/volledige betalingen en annuleringen die saldi beïnvloeden
- Eerste sessie produceert prestatie-, uitzonderings-, statistiek- en validatierapporten