【交易技术前沿】交易系统低延时测试与分析

2023年2月7日15:12:50449

本文选自《交易技术前沿》总第三十三期文章

证券期货行业测试中心(中金所) 魏畅 陈冬严 张鸿晔

摘要:订单延时(Latency)是衡量交易系统性能的重要指标。本文利用交换机端口流量镜像功能(Port Mirroring)和低延时交换机产生的纳秒级时间戳,实现了高精度的交易系统逐笔订单延时测量。通过分析逐笔订单延时数据,验证了交易系统性能微笑曲线,获得了交易系统的最佳表现区间(舒适区),同时也对比了逐笔订单延时与现有日志采样方案的优势。

关键词:低延时交换机;时间戳;交易系统;逐笔订单延时

1 前言

证券期货交易系统具有交易时间相对集中、交易指令和数据密集的特点,对交易系统处理速度具有很高的要求[1]。近年来,全球各大交易所都在不断对交易系统升级改造,其中“低延时”成为各大交易所竞争的核心[2]。几所典型国外交易所交易系统性能数据如表1[3]所示,可见交易系统延时竞争已经进入微秒量级。目前,国内交易所交易系统延时性能与国外顶级交易系统还存在一定的差距,需要进一步加大投入进行研发、建设。在建设“低延时”交易系统过程中,也就必然少不了对交易系统“低延时”性能的测试

【交易技术前沿】交易系统低延时测试与分析

2 方案介绍

交易系统延时有多种维度定义,参照Cinobber 公司白皮书[4],定义端到端(End-to-end)、门到门(Door-to-door)、撮合器(Business logic)三个延时指标,参见图1。对于交易所,重点关注的是门到门(Door-to-door)延时指标,以及整个门到门链路上的分段延时指标,分段延时指标不是本文讨论的重点,故不做具体讲解、分析。后文涉及的交易延时指标,如果不作具体说明,都是指门到门(Door-to-door)延时指标。交易延时指报单进入交易前置,经交易系统处理,返回交易系统接入点的总时长。交易延时反映了交易系统处理报单的速度,延时越小,订单处理越快,性能越好。

【交易技术前沿】交易系统低延时测试与分析

目前市场针对系统延时度量与分析方法众多,如图2所示,主要分为软件时间打戳和硬件时间打戳两大类。

【交易技术前沿】交易系统低延时测试与分析

2.1 软件时间打戳

软件时间打戳通常采用嵌入式时间统计代码或者基于Weblogic等中间件记录时间戳。该方案实施简单,缺点也很明显,比如精度差,会增加系统负担从而增加系统延时波动幅度等。目前,很多交易所通过在交易系统中直接加入探针,对交易指令进行采样计算延时,通过系统日志输出,从而得到订单延时。但是,通过该方法获得延时存在一些问题,比如:时间戳取自服务器,导致精度无法满足测量需求;只能获得少量采样订单延时,具有一定的偶然性,不能完全反映采样周期内全部订单延时性能。因此,无法满足交易系统“低延时”性能测试的需求。

2.2 硬件时间打戳

硬件时间打戳顾名思义是利用硬件打时间戳,目前主流网络流量采集、打时间戳和分析的解决方案有三种:交换机打时间戳、专用采集卡打时间戳、网卡打时间戳。

2.2.1 交换机打时间戳

交换机打时间戳方法是在网络包通过交换机时采用SPAN技术(交换机端口镜像方法)将网络包实时异步镜像至可以打精准时间戳的交换机,然后将带有时间戳的网络数据转发给分析服务器,网络拓扑图如图3所示。该方案优点是部署简单、灵活,对现有拓扑结构和系统环境影响小;缺点是成本高,需要特定低延时交换机支持,比如Cisco Nexus 3548交换机就是典型的带硬件时间戳的低延时交换机。

【交易技术前沿】交易系统低延时测试与分析

2.2.2 专用采集卡打时间戳

专用采集卡打时间戳方法直接将专用网络采集卡部署在分析服务器上,交换机将网络包镜像至采集卡后,由采集卡完成打时间戳和解包分析等工作,网络拓扑图如图4所示。该方案的优点是部署简单,可容纳吞吐量大,能够实时分析和观测;其缺点是需要绑定厂商的采集卡,通用性不强,扩展性较差,受到厂商限制。

【交易技术前沿】交易系统低延时测试与分析

2.2.3 网卡打时间戳

该方案使用专用网卡打时间戳并旁路路由至分析服务器,网络拓扑图如图5所示。优点在于更精确的应用延时分析(除去了网络延时),但是也存在每台主机必须部署专用网卡、多网卡间需PTP精确对时等问题。

【交易技术前沿】交易系统低延时测试与分析

综上所述,几种延时度量方法优缺点比较,参见表2。

【交易技术前沿】交易系统低延时测试与分析

对项目需求进行详细分析,包括拟度量的网络和业务时间段,度量所需的技术和难度,对现有系统的影响大小,项目成本,以及项目后续可能存在的需求,结合上述方案的比较,最终选择了交换机打戳的方案。该方案结合应用场景,有如下优点:

1) 高精度,如采用超低延时交换机,精度可提高1-2个数量级;

2) 逐笔测量,而现有监控系统/性能测试的结果采集采用日志采样方式获取;

3) 旁路测量,对交易系统无侵入;

4) 通过订单的关联,可以实现前置以及撮合核心的分段延时统计。

3 方案实施

通过上节的对比,本次交易系统低延时测试最终确定为交换机打戳方案。

3.1 部署架构

网络拓扑图如图6所示,客户端为压力服务器,用其进行报单发压力;交易前置是外界连接交易的“窗口”,客户端通过交易前置连接交易系统;交易核心是交易系统最重要的部分,用来处理客户订单;交易总线交换机是一台万兆交换机,负责客户端、交易前置以及交易核心三台服务器之间的数据交换;延时度量交换机选择的是Cisco Nexus 3548,将交易总线交换机镜像过来的数据打上高精度时间戳,然后分发给分析服务器;通过分析服务器上的应用程序对数据进行解析、处理,实现订单的逐笔追踪以及各个节点的延时度量。

【交易技术前沿】交易系统低延时测试与分析

客户端、交易前置、交易核心以及分析服务器四台服务器硬件配置,参见表3。

3.2 数据流向

订单数据流如图7所示,客户端、交易前置以及交易核心通过交易总线传输交易数据。

1) 客户端申报订单首先进入交易前置,再到交易核心,交易核心处理完毕后,再将订单的处理结果信息发送至前置。

2) 部署的另外一台延时度量交换机,它将交易总线上的交易数据打上精准时间戳,然后转发至分析服务器上。

3) 分析服务器上部署了用于解析交易数据包的应用程序,从而实现订单的逐笔追踪以及各个节点的延时度量。

【交易技术前沿】交易系统低延时测试与分析

4 测试案例与结果分析

本节共进行两个案例的测试与分析:

1)寻找交易系统最佳表现区间;

2)对比采样方式和逐笔方式的结果差异。本文数据都已做了脱敏处理,不代表真实结果。

4.1 最佳表现区间

交易系统存在一个舒适区,即延时最佳表现是一个区间。当报单速率从小到大递增的过程中,交易系统由冷变热,由热变烫,交易系统的延时也由大变小,再由小变大。

测试方法:用报单工具在某一合约下以同一价格重复报“买卖开平”单,所有订单均被成交,且价格无变化。报单速率从1笔/秒逐步上升至20k笔/秒,逐笔延时数据采用稳定报单后60秒的报单数据。

根据获取的不同报单速度下的延时数据,绘制相应速度下的交易系统延时帕累托图,如图8、图9所示。根据图8、图9可以看出,在测试环境下,交易系统延时最佳表现在1k笔/秒的报单速率下。

【交易技术前沿】交易系统低延时测试与分析 【交易技术前沿】交易系统低延时测试与分析

根据获取的不同报单速率下的延时数据,绘制各报单速率下的交易系统延时分位图,如图10。从图10中可以看出,在测试环境下,交易系统的最佳表现区间如表4所示。从表4中可知,报单速度在100笔/秒~3k笔/秒时,符合三种分位数要求,表现最优。

【交易技术前沿】交易系统低延时测试与分析 【交易技术前沿】交易系统低延时测试与分析

4.2 与采样方式对比

采样方式获取延时存在一些问题,但以往都是从定性方面来分析,本案例将从定量方面来比较采样方式和逐笔方式的结果差异,证明采样方式的局限性。

测试方法:用报单工具在某一合约下以同一价格重复报“买卖开平”单,所有订单均被成交,且价格无变化。报单速率保持在10k笔/秒,逐笔延时数据采用稳定报单后60秒的报单数据;采样数据选取该段时间对应的Syslog里面的延时数据。

根据获取的逐笔延时数据和采样数据,绘制相应交易系统延时帕累托图,如图11。根据图11可以看出,测试环境中,在10K笔/秒报单速度下,通过Syslog获取到的采样数据显著比逐笔的数据要小,特别是延时小于100us时,延时越大,差距越大,表示采样数据失真度越大。

【交易技术前沿】交易系统低延时测试与分析

根据获取的逐笔延时数据和采样数据,绘制相应交易前置延时分布分位图,如图12。根据图12可以看出,50分位下,Syslog采样数据比逐笔数据小10us;99分位下的数据要小55us。

【交易技术前沿】交易系统低延时测试与分析

根据获取的逐笔延时数据和采样数据,统计分析得到小于200us和小于210us的数据占比如表5所示。从表中可以看出,通过采样方式获取到毛刺数据不全,在10K笔/秒报单速率下,采样得到的最大延时在200us以内,遗漏了1%左右的大于200us的订单。

【交易技术前沿】交易系统低延时测试与分析

4.3 结论

根据前面两个案例,可以得到以下三点结论:

1) 交易系统存在一个最佳报单速率,此速率下系统延时状况最佳;

2) 根据对交易系统不同的延时要求,存在不同最佳表现区间,要求越严格,最佳表现区间范围越小;

3) 采样数据和逐笔数据对比,存在失真的情况,因此只能用来粗略了解系统运行状况;想要全面掌握系统运行状态,需要通过逐笔数据来观测。

5 展望

本文在多种延时度量方案中选择了一种相对较好的方案,针对交易系统进行了两个案例的低延时测试,获得了一些测试结果。虽然该项工作是围绕交易系统进行的,但是该方法具有一定的普适性。同时,本次测试是在测试环境下进行的,绝对数据存在一定的失真,希望以后能在生产环境进行尝试,获取更加真实的数据给开发运维同事提供一定的参考。

  • 特别声明:本文由互联网用户自行发布,仅供参考,不作为投资建议。股市有风险,炒股需谨慎!
  • 本文链接:https://www.gpboke.com/19935.html