本文选自 《交易技术前沿》总第三十三期文章(2018年12月)

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

摘要:订单延时(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.1 软件时间打戳

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

2.2 硬件时间打戳

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

2.2.1 交换机打时间戳

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

2.2.2 专用采集卡打时间戳

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

2.2.3 网卡打时间戳

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

综上所述,几种延时度量方法优缺点比较,参见表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 展望

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

参考文献

[1]徐广斌, 武剑锋, 白硕. 低延时证券交易系统关键技术研究[J]. 计算机工程, 2011, 37(18):28-31.

[2]杨明秋. 论全球证券交易系统七大发展趋势[J]. 世界经济研究, 2010(11):31-38.

[3]徐广斌. 高效率证券市场基础架构研究[J]. 交易技术前言 201506:4-10.

[4].Cinober 公司. A Cinnober white paper on: latency. 2009

[5]章庆. 使用交换机度量系统超低延时的实践[J]. 测试技术与质量管理 201706:58-62.

量化延时法时间测量_「交易技术前沿」交易系统低延时测试与分析相关推荐

  1. 量化延时法时间测量_干货分享:直线度测量发展及几种方法详解

    摘要:直线度是很多轧材需要检测的一项重要尺寸,直线度的测量已经从人工测量方式发展为直线度测量仪自动测量. 关键词:直线度:测量方式: 主要是测量圆柱体和圆锥体的素线直线度误差.机床和其他机器的导轨面以 ...

  2. 企业防火墙代替路由器_「防火墙技术连载」基础知识篇 1、什么是防火墙

    这是我多年以前学习的防火墙的时候学到的文章,是华为官方强叔的分享,文章由浅入深,非常适合初学者,我学习了之后受益匪浅,现在整理一下分享给头条的伙伴们,希望对IT技术感兴趣的初学者朋友们可以从中有所收获 ...

  3. 京东的商品搜索功能是如何实现的_「商品架构day8」京东几百亿的商品怎么搜索...

    本文来自京东王春明老师的分享,主要介绍京东商品搜索的整体架构. 京东商品搜索简介 京东商品搜索引擎是搜索推荐部自主研发的商品搜索引擎,主要功能是为海量京东用户提供精准.快速的购物体验.目前入口主要有P ...

  4. 成都中考生专门学计算机哪个学校好,「计算机网络技术专业」2021年成都哪所计算机网络技术专业学校好_学校推荐...

    为了让大家详细的了解关于计算机网络技术专业的一些信息内容,四川中考升学网为大家整理了<「计算机网络技术专业」2021年成都哪所计算机网络技术专业学校好_学校推荐>这样一篇文章,一起来阅读一 ...

  5. 「分布式技术专题」基于Gossip协议的去中心服务

    概述 Gossip 协议可以翻译为流言协议.它是在 1987 年发表在 ACM 上的论文 <Epidemic Algorithms for Replicated Database Mainten ...

  6. 【交易技术前沿】实时计算系统建设经验分享

    摘要:实时计算技术已经应用到广告.电商.游戏.文娱等各个领域,比如电商网站实时分析用户属性,基于分析结果给客户推送相关商品:网络游戏实时分析玩家数据,进而对游戏参数和平衡性进行调整.本文重点讲述中信建 ...

  7. [转] 年终回顾,为你汇总一份「前端技术清单」

    记得年初的时候我给自己制定了一个学习计划,现在回顾来看完成度还不错.但仍有些遗憾,一些技术点没有时间去好好学习. 在学习中我发现,像文章这样的知识往往是碎片化的,而前端涉及到的面很多,如果不将这些知识 ...

  8. 图层上下_「只要功夫深 不用关键帧」之图层序号的玩法

    「只要功夫深 不用关键帧」将不定期更新一些AE表达式和脚本的奇技淫巧,希望能给大家带来一些启发. AE里的图层,都有一个自己的唯一编号,在表达式里我们可以访问并利用这些图层序号,在某些场景下能提高效率 ...

  9. 一致 先验分布 后验分布_「分布式技术」分布式事务最终一致性解决方案,下篇...

    各位志同道合的朋友们大家好,我是一个一直在一线互联网踩坑十余年的编码爱好者,现在将我们的各种经验以及架构实战分享出来,如果大家喜欢,就关注我,一起将技术学深学透,我会每一篇分享结束都会预告下一专题 上 ...

最新文章

  1. 命令行下从bak文件恢复sqlserver数据库方法
  2. What to bring in UK?
  3. CH9102 USB转串口应用体验
  4. Vue动态组件和组件缓存
  5. 关于面向对象以及三大特征的解释
  6. 面试pythone_Python面试考题
  7. 50 - 算法- LeetCode 104 -二叉树
  8. 现代质量管理方法的应用思考和实践
  9. vba遗传算法之非一致性突变
  10. 信步漫谈之JDK—源码编译
  11. python UI自动化(一)
  12. java servlet继承_servlet继承什么类
  13. Python 鸡肋面试题总结
  14. 模拟电子电路技术基础 | 基本放大电路
  15. 35个优秀的电子商务网站设计案例
  16. 关于CDN那些名词,你知道吗?
  17. NO.013-2018.02.18《鹊桥仙·纤云弄巧》宋代:秦观
  18. mysql rds数据库优势_云数据库 RDS MySQL究竟有何优势呢?
  19. MySql 笔记(五)InnoDB引擎页分裂与页合并的原理
  20. vue01-前端知识体系(狂神)

热门文章

  1. 大数的菲波那契计算/Huge Fibonacci Numbers - ACM
  2. Dynamic LAN-to-LAN ××× 之 Router-to-Router
  3. VS2008快捷键大全
  4. リアルタイム3Dニャンニャン 汉化补丁
  5. ASP.NET自定义错误页面(转)
  6. 10G DB_LINK的问题
  7. Nginx+Supervisor安装部署.NET Core项目
  8. QoS是否提供更多带宽?-Vecloud
  9. 小测试来检验一下你原型链理解的怎么样。
  10. 重新设计一款Android App,我会怎么做?