一、性能基准与目标设定:为什么需要基准?如何定义延迟、吞吐量、抖动等核心指标

做量化交易系统这么多年,我见过太多团队一上来就撸代码,结果上线后才发现——系统跑得慢,但说不清慢在哪。没有基准,你连自己到底行不行都不知道。

说白了,基准就是一把尺子。你用它量一量,才知道系统是胖了还是瘦了。我个人习惯,在写第一行代码之前,先把这个尺子定好。

1.1 为什么需要性能基准?

你想想看,没有基准会怎样?

  • 优化了半天,自我感觉良好,结果一测,延迟反而高了
  • 换了硬件,觉得肯定快了,但实际效果没人说得清
  • 团队里你说快,他说慢,吵半天没有结论

我在项目中遇到过一件事。有个同事说他的模块延迟只有10微秒,我拿基准一测,好家伙,实际是50微秒。为什么?他测的是单线程空闲状态,而线上是并发压力场景。基准没定好,数据就是骗人的。

核心观点:基准不是用来炫耀的,是用来做决策的。没有基准,你无法判断优化是否有效,也无法评估系统是否达标。

1.2 延迟:系统响应的快慢

延迟,就是一笔订单从发出去到收到确认,花了多长时间。单位通常是微秒(μs)或纳秒(ns)。

这里有个坑,我刚开始做交易系统时也踩过。延迟不是只有一个数字,它分好几种:

延迟类型 定义 典型场景
网络延迟 数据包在网络上传输的时间 从交易服务器到交易所
处理延迟 系统内部处理订单的时间 订单校验、风控检查
端到端延迟 从客户端发起到收到响应的总时间 用户感知的完整交易流程

我个人习惯,重点看端到端延迟。因为用户只关心这个。你内部优化得再好,网络一堵,用户照样骂娘。

避坑指南:我曾经只盯着处理延迟优化,把内部逻辑从50微秒压到10微秒,结果端到端延迟还是100微秒。后来才发现,网络延迟占了90%。嗯,方向错了,白忙活。

1.3 吞吐量:系统能扛多少活

吞吐量,就是单位时间内系统能处理多少笔交易。常见单位是TPS(Transactions Per Second,每秒交易笔数)。

你想想看,延迟和吞吐量是什么关系?

很多人以为延迟低,吞吐量就一定高。其实不一定。我见过一个系统,单笔延迟只有5微秒,但并发一上来,吞吐量直接崩了。为什么?因为它的架构是串行的,来一笔处理一笔,来多了就排队。

吞吐量的测量,要注意两个点:

  • 峰值吞吐量:系统能承受的最大压力,再高就崩了
  • 持续吞吐量:系统能长期稳定运行的吞吐量

我在项目中遇到过,有个系统峰值能扛10万TPS,但持续跑5分钟就过热降频。这种系统,你敢用吗?

注意:不要只看峰值。持续吞吐量才是系统真实能力的体现。我曾经吃过这个亏,上线第一天就出事故。

1.4 抖动:稳定性的隐形杀手

抖动,说白了就是延迟的波动。你测100次延迟,有的5微秒,有的50微秒,有的甚至100微秒。这种波动,就叫抖动。

为什么抖动这么重要?

你想想看,量化交易里,策略是依赖稳定延迟的。如果延迟忽高忽低,策略的预测模型就会失效。我见过一个团队,平均延迟只有10微秒,但抖动高达200微秒。结果呢?策略在低延迟时赚钱,在高延迟时亏钱,最后整体是亏的。

抖动的衡量指标,常用的是:

  • P99延迟:99%的请求延迟低于这个值
  • P999延迟:99.9%的请求延迟低于这个值
  • 标准差:延迟数据的离散程度

我个人习惯,重点看P99和P999。平均延迟可以骗人,但P99不会。你想想看,100笔交易里,有1笔延迟特别高,那1笔可能就让你亏大钱。

核心观点:平均延迟是骗人的,P99才是真相。我见过太多系统平均延迟漂亮,但P99惨不忍睹。

1.5 如何设定性能目标?

基准有了,指标也清楚了,接下来就是定目标。目标怎么定?

我建议分三步走:

  1. 摸底:先跑一遍基准,看看当前系统是什么水平
  2. 对标:看看行业标准或竞争对手是什么水平
  3. 定标:结合业务需求,定一个合理的目标

举个例子,我之前做一个高频交易系统,摸底发现端到端延迟是50微秒。对标行业,头部玩家是10微秒。业务需求呢?策略要求20微秒以内。最后目标定在15微秒,留点余量。

避坑指南:我曾经定目标时太激进,直接对标头部玩家的10微秒。结果优化了三个月,死活达不到。后来才发现,人家的硬件和网络环境跟我们不一样。目标要结合实际,不能盲目对标。

1.6 核心知识体系

下面这张图,是我整理的核心知识体系。你一看就明白,基准、延迟、吞吐量、抖动之间的关系。

性能基准 延迟 吞吐量 抖动 网络延迟 处理延迟 端到端延迟 峰值吞吐量 持续吞吐量 P99延迟 P999延迟 标准差 性能基准与核心指标关系图

1.7 总结

基准是起点,没有它,你连自己在哪都不知道。延迟、吞吐量、抖动,这三个指标缺一不可。只看延迟,你会忽略吞吐量;只看平均延迟,你会被抖动坑死。

我个人习惯,每次优化前先跑一遍基准,优化后再跑一遍。对比一下,心里就有数了。嗯,这就是基本功,没什么花哨的。

一句话记住:基准定方向,延迟看快慢,吞吐量看容量,抖动看稳定。四个东西合在一起,才是系统的真实面貌。

公众号:蓝海资料掘金营,微信deep3321