[TOP]
做、评估一个基准测试时,思考以下问题
1、为什么不翻倍呢
如果基准测试报告一秒钟执行20000次,你应该问:为什么不是每秒40000次呢。这里面真正的问题是**“限制是什么?”**
这就像一个纯学术价值的家庭作业。找到“为什么不加倍”的答案,可能会激励每个人取寻找和修复这个限制,并使基准测试的结果加倍!
回答这个问题,通常需要在基准运行时,同时使用其他可观察性工具进行分析(我称之为“主动基准测试”)
2、是否突破了限制?
这是一个明智的测试。我曾经批评了很多基准测试,指出他们需要的网络吞吐量已经远远超过了最大网络(有的甚至高达十倍)。网络、PCle总线、CPU互联、内存总线和存储设备(吞吐量和IOPS)都有固定的限制。网络是最容易检查的。在某些情况下,基准可能看起来超过网络带宽,因为它从本地内存缓存而不是远程目标返回。如果您测试一个已知大小的数据传输,并显示他们的速率,您可以做一个简单的求和来查看所需要的最小吞吐量,然后将其与网络连接进行比较。
3、是否出错了?
操作出错的百分比是多少?0%?1%?100%?基准可能配置错误,也可能是压力测试将目标推到错误诱导的极限。错误的执行方式与正常操作不同,因此高错误率会使基准发生偏差。如果您养成了只从一个冗长的基准测试报告中读取操作速率和延迟数字的习惯(或者您有一个shell脚本来完成这项工作,并为GUI提供数据),那么很容易忽略报告中的其他细节,例如错误率。
4、它能再现吗?
如果您运行基准测试十次,结果的一致性如何?可能存在偏差(例如缓存)或者扰动(例如系统的定时任务),这些偏差会扭曲单次基准测试的结果。
检查系统扰动的一种方法是通过负载平均值:在开始基准测试之前让它们达到"0.00 0.00 0.00",如果它们没有达到零,调试并找出原因。