基准测试概述
客户端工具
我们使用自己编写的基准测试客户端工具 Resp.benchmark 对 Garnet 进行了评估。该工具旨在精确控制各种参数,并避免客户端开销,从而专注于服务器性能。在此处了解更多关于该工具的信息。
BDN 性能指标
我们已将 BDN (BenchmarkDotNet) 纳入 Garnet CI (Garnet CI BDN.benchmark) 中,作为跟踪和监控性能的一部分。BDN CI 在每次推送到主分支时运行,并记录 Windows 和 Linux 的运行指标。
BDN CI 首先查看该特定运行中的“已分配”字节数,并将其与预期值进行比较。如果发现的“已分配”值比预期的“已分配”值多 10% 以上,则 BDN CI 将失败。如果 CI 的这一部分通过,则将“平均”值与上次运行的“平均”值进行比较。此时,CI 还会记录“平均”值,以便在此处进行图表绘制。
将您的 BDN 添加到 Garnet BDN CI
-
GitHub action yml: .github\workflows\ci-bdnbenchmark.yml
a) 更新“test”,添加您的 BDN 测试(约第 45 行)
b) 在此 yml 文件中,您的测试中不要添加 BDN.benchmark 前缀
-
将预期结果添加到 \test\BDNPerfTests\BDN_Benchmark_Config.json
a) 这些值是预期的“已分配”字节数。如果发现的值超过 10%,则 GH action 将显示为失败。
b) 遵循其他人对预期值标签的模式,并使用“_”。
c) 如果 Linux 和 Windows 的预期已分配值不同,请使用较高的值。
d) 如果预期值不是高度确定性的,建议在这些值不符合要求时避免使测试失败。为了防止误报失败,请在每个预期值前添加 WARN-ON-FAIL_ 而不是 expected_。这确保了这些值得到检查,并且只会生成警告而不会导致管道失败。这些值仍将包含在图表中,即使它们被标记为警告。
本地运行 BDN 性能测试 test/BDNPerfTests/run_bdnperftest.ps1
-
唯一参数(可选)是 BDN 测试。例如,Operations.BasicOperations(默认)、Operations.ObjectOperations、Cluster.ClusterMigrate、Lua.LuaScripts 等
-
它将验证发现的已分配值与预期的已分配值(给予 10% 的容差),并在输出中显示结果。
-
BDN 测试结果位于 test/BDNPerfTests/results/*.results 中,文件末尾有摘要。