高频交易下证券公司交易系统的性能优化.docx

上传人:李司机 文档编号:7215119 上传时间:2024-06-29 格式:DOCX 页数:34 大小:37.37KB
返回 下载 相关 举报
高频交易下证券公司交易系统的性能优化.docx_第1页
第1页 / 共34页
高频交易下证券公司交易系统的性能优化.docx_第2页
第2页 / 共34页
高频交易下证券公司交易系统的性能优化.docx_第3页
第3页 / 共34页
高频交易下证券公司交易系统的性能优化.docx_第4页
第4页 / 共34页
高频交易下证券公司交易系统的性能优化.docx_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《高频交易下证券公司交易系统的性能优化.docx》由会员分享,可在线阅读,更多相关《高频交易下证券公司交易系统的性能优化.docx(34页珍藏版)》请在三一办公上搜索。

1、第一章概述交易系统性能优化是当前国内金融市场中一个备受关注的话期.近年来,随着T+0交易品种陆续上市,以及北交所、广期所的成立挂牌,金融交易市场机会不断涌现.在这个竞争激烈的环境下,如何在最短的时间内获取到最新的股票、期权、期货及相关的行情信息,并且能终以最快的速度向交易所提交订隼请求,是市场竞争的至要方向.对于一次委托来说,订单全链路耗时即投资者的交易订单从订单形成系统发至经纪公司订单处理系统经过其处理确认后发往交易所及交易所确认报单后按原路径返回至订单形成系统的往返整体链路的耗时。而对于高频交易来说,投资者除了要求订单全腌路耗时不断提速外,同时也会对分第行情的获取有极高的要求,因此整个高频

2、交易体系内的调优主要涵盖网络链路、订单形成系统、订单处理系统、交易所报盘网关、交易所内部系统.行情(接收)、分析行情(策略部分)等各环节。分析各环节的耗时占比及调优性价比权衡得出最适合当下的方案。各家应用场景各有不同,本文针对基他软硬件和网络简单介绍下通用方案供各位参考:第一,找寻影响因子,应当建立稳定、高速的全链路数据度星通道,保证实时、准确地获取网络快慢、系统优劣的度量数据.全链路度量是对高频交易系统整个交易流程进行全方位的度量和评估.通过全腌路度录,可以精确地评估每个环节的效率和时延,找出影响系统性能的瓶颈,并针对性地进行优化和改迸。第二,单元优选更换,使用高性能的硬件设备,能够在底层搭

3、好框架,保证提供高算力,完成订单匹配,减少交易时延,提高交易执行的效率和成功率.最终,系统调优观察,对于己获解的行情和交易数据,在高性能硬件上通过系统和软件优化使高频交易系统达到极限件值是目前证券公司的整体发力方向.在未来,也将成为证券期货公司提升核心竞争力追求长期稳定盈利的曳要手段之一.第二章常见问题整体性能优化包含但不限于下述步骤:1)影响因子评估;2)瓶颈观测及分析;3)单元调优;4)系统级优化;5)持续监控及改进.通常存在以下常见问题:找寻影响因子问题定位难:交易环境复杂,交易殖条长,无法精准定位系统性能问题;度量精度要求高:极速行情、交易软硬件频繁更新优化,常规测试方法无法达到精度要

4、求,对比测试大费周章;偶发问题难觉察:日常测试无法发现交易系统偶发问题(抖动、异常响应速度).单元优选更换高性能服务器选择:高频交易系统需要处理大量的市场行情数据、历史数据和实时数据,并进行豆杂的计算和分析.如何选择合适的高性能CPU和内存的服务器是至关重要的.高频率的多核处理器和大容量的内存可以快速处理数据,加速算法模型的计箕和决策生成.低延时网卡选择:高频交易系统需要及时获取和传输行情数据,而且通常需要与多个交易所和数据源连接.因此,选择具有高带宽和低延迟的网卡是必要的.高稳定低延时交换机选择:高频交易系统通常需要持续运行,并承受大规模的数据处理和交易流量.因此,选择具有高可匏性和低延时的

5、交换机可以提高系统的稳定性和可靠性.系统调优观察调优方案定夺:除了硬件层面优化,系统层面的优化包括且不限制于进程调用、函数处理等,在开销及时延消耗比较大的函数栈中,通过进行定制化工具开发,实施埋点等操作,从而进行代码级性能瓶颈分析,并助力给出针对性的调优方案持续观察分析:在调优手段淹盖之后,基于目前券商大多数系统环境,即使在某一次调优后达到了不错的数据,但是由于负载均衡、内核污染等等不可避的问题存在,单次调优无法达到应有效果,所以持续分析是不可缺少的一环.第三章优化思路找寻影响因子一度量极速高频交易环境中,需要采用最快的网络设备进行组网,并且要对全链路节点的处理时延、流取、抖动等性能指标进行高

6、精准统计与展示,帮助运维人员对应用系统性能异常和故障做出精准快速定位.行情链路包括:行情网关,行情解码,行情转发,客户端,网络设备等;交易链路包括:客户策略,交易系统,报盘网关,网络设备、防火墙等。现有业务分析及监控平台主要采用系统内置分析模块,但只能分析单节点性能,不能分析全腌路端到端性能;目软件麋作系统打点,时间精度抖动较大,准确性不足。上图为一种全链路的高精度度量方案,此方案通过将网络流量旁路导出至高精准时间做设备,在数据包尾部添加上可识别的时间战标识,并实时进行流量解析计n,计肾精度为皮秒级别,可以支持全链路时延精准度量.单元优选更换一匹配交易链的不同参与者对于设备的要求会有所不同,从

7、底层链路、网络的选择上,都需要选择合适匹配的参与单元,而作为关键点的交易系统和宿主机,在满足高性能低延时的同时,还需考虑载体、温度、功耗等一一来进行选型,并逐步建立测评选型基准.交易系统不光需要追求极低的延时,更垂要的是保持整体稳定,稳定即可预期,可掌控,如果相对波动较大,就无法预测报单策略的有效性.系统调优观察一定性机器从出厂之后,就会有相关参数,而通过PCIE和速率、IO和负载、字节和网速等等,会计算出一个理想数值,但现实情况中往往达不到理想值.此时则需在整体系统中,对当前CPU、10、Memory等迸行密集性、内存负载、IO基准等测试,如性能监控下,可采用PCP测试;系统追踪中,运用Pc

8、ef;针对于系统调用,用Toolkit进行跟踪等等.如此以来,将将硬件、系统、应用等进行一连串调优,再根据每次调优后的数据计算出基线和饱和率,审视工作流.在审视工作流完成基数标定之后,OS层承上启下,单点定性后往往在某次调优后牵一发而动全身.基于操作系统蜃面实现交易系统优化往往非常有效,比修改应用程序、改善硬件环境等问题解决更彻底、整体TCO更优。这个时候,针对于OS层面,往往需要确认四件事情.1 .命令集:在调优OS层面时,首先需要确认使用的命令集.不同的硬件架构和处理器可能支持不同的命令集,例如x86、X86-64、ARM等.了解命令集对于确定可用的优化选项以及应用程序的性能影响非常正要.

9、2 .BIOS设置:BIOS(基本箱入/箱出系统)是在计算机启动过程中加载的固件,它负责初始化硬件并传递控制权给操作系统.在调优OS层面时,需要确认BIOS设置是否合理.例如,检壹BIOS中的电源管理选项、内存配置、硬件虚拟化支持等设舌,以确保它们与应用程序的性能需求相匹配。3 OS本身:操作系统本身也可能对系统性能产生影响.确保掾作系统已经进行了必要的优化和调整,例如启用了适当的内核参数、关闭了不必要的服务.设置了正确的文件系统选项等.此外,还可以考虑更新操作系统补丁和驱动程序,以修夏可能存在的性能问期.4 .负载容量规划:在调优OS层面时,需要对负载容量进行规划和评估.这包括确定系统的预期

10、负载和性能需求,以便为其分配足纺的资源.可以考虑调整CPU调度策略、内存管理设置、文件系统缓存大小等,以优化系统的性能和响应能力.而完成以上俩点后.金融行业的系统最佳不应当为系统在某一刻可以达到的峰值,而是针对于当前应用此匹配的一系列方案才可以称为最佳。比如在证券客户交易系统方面,缩短延时(加快响应速度)比提高吞吐量(完成更多操作)更重要。而这二者往往互相制约。同时针对干不同系统不同应用,也需要通过对业务的分析,进行某一点的最佳调优,再由点及面,才可以达到系统的最佳调优.第四章性能天梯高频交易端到端链路从架构上可分为应用交付层、支撑环境层.操作系统层、硬件设备层和基础设施层。应用交付层主要是交

11、易应用程序和箕法,支撑环境层包括了消息中间件、程序加速软件等环境软件,基础设施层主要由机房基础设施组成.端到端整体时延可以理解为证券公司从接收交易所行情入口到报盘至交易所间各个节点的延时之和,其中包括了行情系统、交易系统、网络设备、服务器网卡、光纤传输等等环节,各环节目前的时延星级如下:身秒(10-3秒)级别:运营商专线百微秒(10-6秒)级别:交易系统、行情系统、交易网关等微秒(10-6秒)级别:FPGA系统、服务器网卡百纳秒(10-9秒)级别:低延时网络设备纳秒(10-9秒)级别:光纤、一层交换机早期“端到端低延时研究”主要集中在交易系统的改进上,这是因为端到端交易流程整体延时的瓶颈集中在

12、交易系统上.交易系统的每一次大的改进和创新,都有可能为整体交易速度带来几倍甚至几十倍的提升,在证券交易系统的延迟方面,2006-2008年间,性能很好的交易系统延迟都达到了100皂秒.2009-2011年间,较快交易系统的延迟达到了100微秒左右,目前,交易系统的延时已经来到了做杪级,行情系统的延时已经来到了百纳秒级别,底层的传输网络、服务网卡和光纤传输在端到端流程的整体延时占比不断提高,第五章调优技术在选用合适的硬件之后,仅仅完成了初始阶段.怎么达到最佳性能,在目前的阶段还是没有尽头的。而在低延迟领域,如高频系统或实时媒体系统,大多要求服务器在10微秒以下提供一致的系统响应,这就需要硬件、操

13、作系统、应用、网络等领域进行调优以达到这一要求,本章节将主要针对硬件及操作系统层面的调优技术做一些探索和分享.硬件配置要实现微秒级的低延迟,首先需要了解被测系统的硬件配置.影响时延的重要因素包括核心数、每个核心的执行线程数、插槽数、NUMA节点数、CPU和内存在NUMA拓扑中的排列以及NUMA节点中的缓存拓扑。UnUX系统可以时延Iscpu命令,对硬件拓扑情况进行直看.从上图,我们知道这是一台双路CPU的服务,总共安装了两颗CPU,Numa节点数为2等信息.请注意,如果应用系统所需线程数较少,单路CPU的服务器也是不错选择,它会减少一些槽位间通信的短杂性。为了获得最佳的响应时间,需要对系统拓扑

14、进行优化,其中内存需要均匀的在NUMA节点上进行安装,井尽量最大化使用本地内存.关域应用需要运行在隔离CPU上,并且与Numa节点、PCiE网卡在系统拓扑上保持一致,以获得最优的数据路径.NUea和内存以我们常用的双路服务器为例,NUma架构大致如下.我们可以通过numactl来查看numa节点信息CPU远程访问Numa节点时,距离毕竟长,性能会受到极大影响,低时延应用程序需要避免跨NUma的远程内存访问,从下面的命令,我也可以看出远程访问Numa的性能远低于本地访问.NUMA内存平衡1.inux支持基于自动NUMA内存平衡和手动迁移内存,但在NUMA节点之间迁移内存页面将导致内存的T1.B被

15、清除和页面故獐,从而影响程序性能.可以使用以下命令禁用自动丽MA内存平衡:echo0procsyskernc1/numabalancing还可以禁用用户空间的nmad服务,关闭NUMA内存平衡.绑定核心中断是CPUeore收到的,可以让关犍线程绑定在某个Core上,然后避免各种中断通向这个COre发送中断,绑定程序在一个核上运行,有两种方法:taskset和sched_setaffinity,其中Sched.Setaffinity是程序代码对绑核的实现,我们主要介绍通过taskset进行绑核.CPUAffinityCPU亲和性,是指在SMP结构下,能够将一个或多个进程绑定到一个或多个处理器上运

16、行.杳看进程分配的CPUCore,可以使用tasksel命令杳看:taskset-c-p该CPIJ亲和力列表表明该进程可能会被安排在3-5中任意一个CPUCore.更具体地杳看某迸程当前正运行在哪个CPilCore上,我们可以使用top命令杳看:top-ptaskset使用Uskset命令将进程绑定到指定核,比如将31693绑定到1.2.3核上taskset-cp1,2,331693该例会将PID为31693的进程绑定到1-3核上运行。屏蔽硬中断(硬盘、网卡)中断源(IRQ)向CPUCore发送中断,CPUCore调用中断处理程序对中断进程处理。我们可以通过改写/proc/irq/*/SmP.

17、affinity文件,避免中断源(IRQ)向某些CPUCore发送中断。该方法对硬盘、网卡等设备引起的硬中断有效。查看设备中断数据通过查procinterrupts文件可查看设备中断数据:-第一列是Ig号-第二列开始表示某CPU内核被多少次中断.SMP-AFFINITYSMP即SymmetriCmUItiPrOCeSSing(对称多处理SS,通过多个处理器处理程序的方式.smpaffinity文件处理一个IRQ的中断亲和性。我们可用procirq1RQDUMBER)/smp_affinitylist来制定所需要绑定的核,这里的IRQNIMBER就是前面中断输出中的IRQ号,比如我们想将eusl

18、60的所有中断绑定到CPUl和CPU2.echol-2/pocirq/57/smp_affinity1istecho1-2procirq58smpaffinitylistecho1-2procirq59smpaffinitylistecho1-2/proc/irq/60/smp_affinity_list内核参数WatchdogWatchdog在进行监控的过程中会触发中断,会引起抖动,可通过以下命令进行关闭:echoOprocsyskernelwatchdogSWHPPineSS交换倾向性,描述操作系统在内存不足时将数据移动到交换分区的偏好程度,swappiness的值可以在Q到100之间,为

19、0表示不使用交换分区,针对低时延系统定议设置为较低值,或直接关闭。echo10procsysvmswappinessdirtyJatioDirtyJatio是控制脏页的比例,如果脏页超过一定比例,所有的写操作都会阳富,知道一部分的脏页被写入磁盘。echo10procsysvmdirty,ratiodirty_backRroundJatioDirtybackRfoundratio是一个限制值,当脏页数超过该值时,开始将这些脏页写入磁盘。echo3/proc/sys/vm/dirty_background_ratioSChedlatenCynS指定在发生任务切换之前,任务可以在一个CPU核心上运行

20、的最长时间(以纳秒为单位)echo24000000/proc/sys/kernel/sched_latency_nsSehedJilin_granularity_ns指定了奴小的时间粒度(以纳秒为单位)不会被抢占的时间,在这个时间粒度内,一个任务可以在一个CPU核心上运行。echo10000000/proc/sys/kernel/sched_min_granularity_nsSChedjtruntimes用于控制系统中实时任务的运行时间片(以微秒为单位),默认他为950000,总共为100OoO0,设St为T则禁止这个限制。echo-1/proc/sys/kernel/sched_rt_ru

21、ntime_usstat_interval以秒为单位的更新虚拟内存统计信息的间隔.默认值是1秒,这导致每秒进行信息统计.将其更改为1000秒可以避免这些中断,至少延迟了16分钟。调频策略SCalingJoVemor调配策略的作用是控制CPU如何管理和调整其运行频率以平衡性能和能耗,同以下命令,选择performance”使CPU保持在最高频率,以提供最大的计算性能。echoperformancesysdevicesSyStemcpucpu57/CPUfreq/scaling_governor操作系统配置操作系统侧调优类别包括但不限J1)硬件资源调优;2)依架构数据采样MDS3)SMTI中断:4

22、)内核:5)文件系统:6)存储:7)CPU:8)MEMs9)网络等,其中网络部分主要涉及:1)网卡驱动层面的优化,包括多队列,中断集合,ringbuffer等各种配置参数;2)内核协议栈优化,Kernelbacklog队列优化,相关内核参数对应用性能的优化;3)网络相关的系统服务优化:1RQBaIanCe优化;网络延迟优化;大量连续数据流的吞叶肚优化:高吞吐量调解TCP连接优化等等:4)网络应用优化:5)网络连接优化性能验证等:最巾要的是.操作系统可以与应用一起做性能联调.通过工具做持续性能监控、分析及优化。例如RHE1.中有大法性能监控工具。SySSIat软件包实用程序从内核计数器获取原始数

23、据,并提供有关CPU使用率、磁盘1/0、进程使用、内存使用等内容的性能监控。PerformanceCo-Pilol(PCP)软件包提供了一个框架来监控和管理实时数据,以及记录和检索加史数据.系统监控工具同时以命令行和图形用户界面形式提供。BIOS配量(点击图片可放大)CPU安全洞近年频繁聚露出CPU漏洞,比如MDSxZombieload.Spectre.Meltdownv1.iTF在IMelx86微处理器中发现的安全漏洞,它们都利用了微处理器的预测执行(speculativeexecution)功能来窃取敏感数据.这些漏洞都需要在固件和内核层面进行修补,但这会导致性能的下降.MDS(Micro

24、architecturalDataSampling,微架构数据采样)是一组在2018年发现的漏洞,它们可以通过读取处理器内部的数据缓冲区来泄露跨越保护边界的数据.Zombieload是MDS的一种变体,它可以通过监视处理器执行的指令来获取敏感数据,例如密码、密钥、浏览历史等.Spectre(幽灵)是一组在2018年初公开的漏洞,它们可以通过探纵处理器的分支预测(branchprediction)功能来迫使目标程序执行非预期的指令,并从其缓存中读取敏感数据.Meltdown(熔断)是一组与Spectre类似的漏洞,它们可以通过利用处理器的乱序执行(OUt-Of-Orderexecution)功能

25、来绕过内存隔离机制,并从内核或其他进程中读取敏感数据.1.lTF(1.lTerminalFault,1.l终端故障)是一组在2018年中公开的漏洞,它们可以通过访问1.l缓存中的无效或不可访问的物理地址来泄露跆越保护边界的数据.1.lTF包括以下几种变体ForeshadowJoreshadow-NG(OS,SMM1VMM).这些漏洞都对Intel86微处理器造成了严点的威胁,尤其是使用超线程技术(Hyper-Threading)的处理器。为了防止这些漏洞的攻击,用户需要更新系统和固件,并可能需要关闭超线程技术.但这些措施都会影响处理器的性能,不同的工作负载会有不同程度的下降.在高频交易领域,特

26、别是针对券商行情、交易系统、报盘这些应用,因为部署环境处于内网,安全环境比较好,可以通过内核参数mitigations=off来关闭缓解措施,以提升系统性能。屏蔽软中断(1.ocalTieerInterrupt)1.inux63schedulertimeslice是通过1.OC实现的,如果我们让一个线程独占一个CPUCore,就不需要scheduler在这个CPUCore上切换进程.可以通过isolcpus系统启动选项隔离一些核,让他们只能被绑定的线程使用。同时,我们还可以启用-adaptive-ticks模式,达到减少独占线程收到1.oC频率的效果,这可以通过nohzjull和rcu-noc

27、bs启动选项实现.假设令6-8三个核心屏蔽软中断,我们需要在系统启动选项中加入:tetnohz三onnohz-full三6-8rcu-nocbs三6-8,进入adaptive-ticks模式后,如果CPUCore上的runningtask只有一个时,系统向其发送的1.OC频率会显著降低,但IoC不能被完全屏蔽,系统内核的一些操作比如计算CPU负载等仍然需要周期性的1.OC.关闭交换分区关闭所有的交焕分区和文件,择放交焕空间中的数据到内存中.这样可以提薪系统的性能:swapoff-a关闭透明大页1.inUX透明大页(W)允许内核自动将常规内存页面提升为大虫。大页减少T1.B的压力,但将页面提升为

28、大页会触发内存压缩,引入了延迟峥值。通过提供内核命令行参数transparenJhUgePage=never或运行以下命令来禁用透明大页支持:echoneversysker11plrmtransparenthugepageenabled同页合并1.inux内核同页合并(KSM)是一项功能,用于去重包含相同数据的内存页面.合并过程需要侦定页面表并清除T1.B,从而导致内存访问延迟不可预测.KSM仅对已经通过madvise(.MADV_MERGEAB1.E)选择加入同页合并的内存页面进行藻作.如果需要,可以通过运行以下命令在系统范围内禁用KSM:echo/sys/kernel/m/ksm/run使

29、用大页应用程序访问的页面在T1.B中映失时,内存管理单元(MMU)遍历整个页表,会有极大的性能开销.通过使用2MB或IGB的大页面,可以显著的减少T1.B未命中次数.我们可以使用perf工具监控T1.B未命中情况:#perfstat-e,dT1.B1.oads,dT1.B1.oad-nisses,iT1.B-1.adsjiT1.B-1.oad-misses,-atimeout1&e0Performancecounterstats:r,systemwide*:l,525,620dT1.B-loads2,964,792dT1.B-load-misses-28,171,998,243iT1.B-lo

30、ads1,068,635iT1.B-load-misses逸存命中的53.A8%l.2451754秒的己用时间上述输出显示了未命中的数据加载(dT1.B)和指令加载(iT1.B)的比例。我们观察到大量的T1.B未命中,应考虑使用大页面以减少T1.B未命中次数.关闭服务关闭一些多余服务,减少系统扰动nforSERVICEinavahi-daemon.servicecrond.servicednsmasq.servicefirewalld.servicelvm2-monitor.servicepostfix.servicercgssd.servicercidmad.servicerpcsvcgss

31、d.servicewpa_supplicant.ServicedcSystemctldisableSSERVICESystemctlstopSSERVICEdone*应用配置屏蔽orkqueueWorkqUeUe是自kernel2.6引入的一种任务执行机制,和softirq,tasklet并称下半部(bottomhalf)三剑客。WorkqUeUe在进程上下文异步执行任务,能够进行睡眠.可以通过改写sysdevicesVirtUal/workqueue/*/CPUmaSk文件实现屏蔽Workqueue的软中断。sysdevicesVirtUal/workqueue/CPUmaSk文件中记录了全

32、局的Cpumask,可以影响所有的workqueue.比如我们只希望CPUO和CPU3来执行workqueue.我们计算初CPUO和CPU3的cpmask为0x9(二级制:10001)echo9sysdevicesVirtUaI/workqueue/CPUmaSk网卡配置检查网卡NUaa信息根据网卡的numa.node设置对应的RPS队列,变为网卡的中断绑定catsysclassnetens3fldevicenuma,nodeKernalBypassKernelBypass技术在高频交易系统中有大Sl应用.在不变更程序代码的角度来说,目前可用的解决方案有:Solarflareonload.Me

33、llanoxVMA和Exasock三种.KernelBypass的优点就是实现了用户态网络协议栈(USer-SPaCeNetworking)允许应用程序在用户态中运行网络协议栈,避免了数据包在1.inux内核中的传输过程,以及涉及内核态的切入切出,还有零CoPy等技术的使用,极大的提升效率,降低传箍时延.OnloadSolarflareonload是一种由SoIarflareCommunications开发的网络加速技术,旨在提高服务器和数据中心网络性能,降低网络通信的延迟和CPU负载.这项技术主要用于高性能计算(HPC)、云计算和金融领域等需要低延迟和高吞吐量网络连接的应用程序.OnlOad

34、无需对应用程序进行修改就可实现加速效果.onloadsockperfserver-i11.4.3.3VMAMellanoxVMA(VirtualMemoryAcceleration)是一种由MellanoxTechnologies(现在是NVIDIA的一部分)开发的网络加速技术,它旨在提高网络性能,减少网络传输的CPU负载,井降低延迟.VMA无需对应用程序进行修改就可实现加速效果。1.D,PRE1.OAD=Iibvma-SOVMA.SPEC=Iatencysockperfserver-i11.4.3.3Exasock思科NexusSmartNIC(前身为ExaNIC)KernalBypass方

35、案,无需对应用程序进行修改.通过简单的在应用程序前加exasock来执行.exasocknc-u-I1234KernalBypass在降低网络时延的同时,也带来了一系列的问题,他们一般都会对阻塞select(),poll(),epoll.wait(),recv(),read()和accept。这些调用来等待数据到来,会较多占用CPU运行时间,导致这段时间可用CPU数变少,如果应用程序的线程数大于可用CPU资源数时,就会存在CPU资源竞争,导致性能下降.所以是否应用KernelByPaSS方案,要根据实际程序的运行情况来确定.网络配置证券交易网络通信通常具有一个非常明显的特征:Microburs

36、t.即从宏观结构上来看,平均每眇流量非常小,但是缩放到亮秒级刻度,则会出现链路使用率几乎满载的情况,如下图所示:交易数据从局域网内部一台主机传输到另一台主机,沿途会经历几种不同类型的时延:丢包时延(PacketDropDelay)、排队时延(QueuingDelay)、路由交换转发时延(SwitchProcessingDelay)、传输时延(PropagationDelay)和串行化时延(SerializationDelay).其中丢包时延、排队时延、串行化时延都和交奂机端口带宽和端口缓存直接相关,而传输时延一股受距离影响较大,路由交换转发时延则是交换机设备的转发耗时。因此,使用更低时延的交换

37、机和更大的带宽通常可以有效缓解延迟问题.极致的网络环境中可以适当选择一层或FPGA交换机来做到极低时延的网络的发.一层交换机的实现原理是通过自制电平高低信号来实现信号的快速豆制传播,并且能够将电信号进行增强及平稳处理,使得直通的发时延低至5ns以内.较适用于高速行情分发场景.FPGA交换机可以将同一用户的策略服务器订单上报后进行汇聚输出,时延低至40ns以内;也针对不同用户的策略服务器连接,可以通过V1.AN进行划分隔离。调优工具调优工具JS踪机制常用工具内核版本低于4.1以Centos7系统为例,其依赖3.10.0内核版本,这就决定了我们只能通过perf_event,ftrace/utrac

38、e和systemtap的方式进行系统调试.在实际使用的时候我们需要考虑不同的需求使用不同的工具,如下所示为简单的总结:(点击图片可放大)如果Redhat/Centos7内核高于3.10.0-940.el7.x86.64,可以酌情使用基于eBPF的bcc-tools工具。内核版本高于4.1高于4.1+版本的系统可以直接通过eBPF获取想要调试的信息。当然也可以继续使用trace,systemtap等工具工具示意在当前的1.inux发行版中,perf和Strace是两个得到广泛支持的分析工具.它们提供了丰富的功能,用于诊断和优化系统性能问题,它们安装最为便捷,同时对于环境的依赖较小,输出信息可读性

39、也比较好.Perf进行信息采集示例1 .通过perfstat命令可以统计程序的性能指标例如指令数、周期数、缓存命中率等。例如,要统计当前系统的1.ocalTimer中断情况,同时安装每个CPU进行汇总:Perfstat-eirq_vectors:local_timer_entry-a-A-timeout300002 .通过perfrecord命令可以记录程序的性能事件,然后使用,perfreport命令来分析记录的数据。例如,要记录驱动程序接受网络数据包事件:pertrecord-enet:netif_recevie_Skb-a记录perf.data数据以后还可以通过perfreport进行查

40、看3.perftrace是perf工具套件的一部分,用于跟踪系统上的函数调用和事件流.以便分析应用程序和系统的行为.它的主要作用是提供更详细的系统跟踪和分析.以帮助识别性能问题和故障排除.例如:我们可以用perfrecord-s-p3329来记录进程系统调用的汇总信息,通过汇总信息我们可以初步评估进程主要的系统调用情况。strac*进行信息采集使用,strace,来跟踪程序的系统调用.例如,要跟踪某一进程的系统调用,可以运行以下命令:strace-tt-T-yy-ff-p8661通过输出的信息,我们可以跟踪某一进程的recvfrom和sendto的系统调用.第六章成果及效益通过探索系统整体调优

41、方案,我们获得了以下方面的收益:1)从系统性能提升的优化目标而言,实现了4.8GHZ服务器在非实时普通内核上,系统定时的抖动误差从优化前的30us,降低到4us以内;2.6GHZ服务器的系统定时抖动误差也从优化前的80us,降低到IOUS以内.2构建了一套持续性能优化的方法体系:找寻影响因了一电元优选更涣一系统调优观察,通过持续对业务系统进行时延和性能的监控度此用可视化的方式早.现问题,琮合运用工具定位问题,针对性对系统进行优化或调整体系化方案的建立,也有利干软硬件知识的沉淀,支撑逐步向其他系统、甚至整个IT体系进行传导.第七章总结和展望总结对投资者和经纪公司来说,交易的延时无疑至关更要,本文

42、通过关注找寻全微路各环节的影响因子、单元优选更换、系统调优观察几个维度,对系统优化提出了体系化的方法思路,并取得了一定的成果,对我司有效支持机构高频客户对交易全链路稳定和低延时的极致需求,全面提升公司交易服务能力有指导性意义.基于操作系统层实现交易系统性能优化,需要对1.inux内核等深度掌握.券商同行可以一方面持续提高自己的队伍在这方面的能力,同时也可考虑采用红帽等专业厂商的调优服务来为己所用。我们此次主要针对操作系统和网络层面进行了优化探索,但1.inux内核、CPU知识体系庞大,仍需持续深入学习研究.包括上层应用系统的架构及代码均可持续优化。同时我们也要意识到,速度虽然重要但不是全部,目前交易系统的军备竞赛已经上升到微秒级,去除交易所侧在百微县至几十微的也不在少数,而这种情况下一个网络抖动、开盘的脉冲干扰或者交易所侧的其他不确定因素可能直接覆盖了其他环节的耗时.因此我们同样需要做好稳定性的保障.券商作为经纪业务服务商,如何利用各方面资源服务好投资者,留住投资者个人认为更是我们的核心竞争力.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号