Übersicht über Benchmarking
Client-Tool
Wir haben Garnet mit einem von uns entwickelten Benchmarking-Client-Tool namens Resp.benchmark evaluiert. Das Tool wurde entwickelt, um verschiedene Parameter sorgfältig zu steuern und Overhead auf Client-Seite zu vermeiden, damit der Fokus auf dem Server liegen kann. Erfahren Sie hier mehr über das Tool hier.
BDN-Leistungsmetriken
Wir haben BDN (BenchmarkDotNet) integriert, um die Leistung als Teil der Garnet CI (Garnet CI BDN.benchmark) zu verfolgen und zu überwachen. Die BDN CI läuft bei jedem Push auf main und protokolliert die Metriken dieses Laufs sowohl für Windows als auch für Linux.
Die BDN CI prüft zunächst die "allozierten" Bytes aus diesem spezifischen Lauf und vergleicht sie mit den Erwartungen. Wenn der gefundene "alloziierte" Wert 10 % höher ist als der erwartete "alloziierte" Wert, schlägt die BDN CI fehl. Wenn dieser Teil der CI bestanden wird, wird der "Mittelwert" mit dem "Mittelwert" des vorherigen Laufs verglichen. Zu diesem Zeitpunkt protokolliert die CI auch den "Mittelwert", damit er hier gezeichnet werden kann.
Hinzufügen Ihres BDN zur Garnet BDN CI
-
Das GitHub Action YML: .github\workflows\ci-bdnbenchmark.yml
a) Aktualisieren Sie den "test" mit der Hinzufügung Ihres BDN-Tests (~Zeile 45)
b) Fügen Sie in diesem YML-Datei keinen BDN.benchmark-Präfix zu Ihrem Test hinzu
-
Fügen Sie die erwarteten Ergebnisse zu \test\BDNPerfTests\BDN_Benchmark_Config.json hinzu
a) Diese Werte sind die erwarteten "allozierten" Bytes. Wenn der gefundene Wert höher ist als 10 %, wird die GH-Aktion als Fehler angezeigt.
b) Folgen Sie dem Muster für die Bezeichnungen der erwarteten Werte, die andere haben, und verwenden Sie "_".
c) Wenn die erwarteten allozierten Werte für Linux und Windows unterschiedlich sind, verwenden Sie den höheren Wert.
d) Wenn die erwarteten Werte nicht hochgradig deterministisch sind, ist es ratsam, zu vermeiden, dass der Test fehlschlägt, wenn diese Werte nicht konform sind. Um Fehlalarme zu vermeiden, fügen Sie WARN-ON-FAIL_ statt expected_ jedem erwarteten Wert voran. Dadurch werden die Werte zwar geprüft, aber es werden nur Warnungen generiert, ohne einen Pipeline-Fehler zu verursachen. Die Werte werden auch dann in den Diagrammen enthalten sein, wenn sie als Warnungen gekennzeichnet sind.
BDN-Leistungstests lokal ausführen test/BDNPerfTests/run_bdnperftest.ps1
-
Nur Parameter (optional) ist BDN-Test. Zum Beispiel Operations.BasicOperations (Standard), Operations.ObjectOperations, Cluster.ClusterMigrate, Lua.LuaScripts usw.
-
Es wird die gefundenen allozierten vs. erwarteten allozierten Bytes überprüft (mit 10 % Toleranz) und die Ergebnisse in der Ausgabe angezeigt.
-
BDN-Testergebnisse befinden sich in test/BDNPerfTests/results/*.results mit der Zusammenfassung am Ende der Datei.