Deze pagina is automatisch vertaald. Lees het Engelse origineel. English

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.5Windowsoltp25_config.win.default
2.5Linuxoltp25_config.nix.default
3.0Windowsoltp30_config.win.default
3.0Linuxoltp30_config.nix.default
4.0Windowsoltp40_config.win.default
4.0Linuxoltp40_config.nix.default
# Windows
copy .\oltp30_config.win.default .\oltp30_config.win

Linux

cp ./oltp30_config.nix.default ./oltp30_config.nix

3. Belangrijke instellingen

Bewerk de gekopieerde configuratie. Besteed speciale aandacht aan:

  • fbc - pad naar isql op de machine die sessies start
  • clu - optionele niet-standaard ISQL-binaire naam (bijv. isql-fb op 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_max in op 0 om pauzes uit te schakelen)
  • sleep_ddl - optionele UDF voor pauzes (voorkeur boven shell sleep / cscript); binaire bestanden onder util/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:

  • DefaultDbCachePages
  • LockHashSlots
  • LockMemSize
  • FileSystemCacheThreshold - moet expliciet worden ingesteld en groter zijn dan DefaultDbCachePages (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, 30 of 40 voor 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 mappenlijst
  • benchmark - 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:

  1. Klant- (of interne) bestellingen voor onderdelen
  2. Bestellingen worden gecombineerd en naar een leverancier gestuurd
  3. Leveranciersfactuur (volledig of gedeeltelijk)
  4. Voorraadontvangst; door klanten bestelde onderdelen worden gereserveerd
  5. Verkoop en voorraadafschrijvingen
  6. Annuleringen mogelijk bij meerdere stappen
  7. Gedeeltelijke/volledige betalingen en annuleringen die saldi beïnvloeden
  8. Eerste sessie produceert prestatie-, uitzonderings-, statistiek- en validatierapporten