证券行情调优攻略
行情调优
参看链接:证券行情接收效率调优全攻略来了
随着极速行情普及,客户接收证券行情时的一些问题也开始显现。比如,客户主机CPU频率不够,没有采用高性能的网卡,没有配置CPU绑核,没有做CPU的隔离等等的问题都会引起客户在接收极速行情时没有处于一种良好的状态,而不良好的接收状态直接就会引起客户端接收的丢包。盛立科技集合这些年在服务客户过程中遇到的相关问题,将八年调试心得做一汇总,干货满满,在此分享给大家以便客户后续在遇到类似的情况可以做一些参考。
在客户端接收极速行情时一般对于接收的客户端都有一些基本的要求,典型的配置要求是CPU 3.6G及以上,高性能网卡Solarflare 2522 Plus 。在这样配置接近的情况下才是一个接收客户端的基本起点,当然如果客户采用超频机那么就是一种更好的选择,这样客户可以获得更高的速度。
针对客户端接收服务器在达到典型配置的情况下,盛立证券行情系统的优化主要可以分为以下几个方向:
- 机器平台方面的调优。
- 高性能网卡加速方面的调优。
- 接收程序方面的调优。
机器平台的调优
一般服务器的CPU都支持自动睿频,而服务器的CPU一般默认运行于ondemand模式,会有中断开销,睿频的时候提升下降也是有额外的开销,特别是对于一些低端cpu比如C2350,C2338,N2800这些低价独服的CPU,影响更大。可以通过具体的命令查看当前机器的cpu五种工作模式以及频率。
除了cpu的工作模式的调优外, 我们还应该注意系统的调优,通过tuned-adm list命令来查看目前tuned支持的工作模式。
高性能网卡加速方面的调优
目前市面上典型的高性能网卡的供应商有Solarflare/Mellanox/Exablaze等。但从稳定性与性能以及易用性多个方面来考虑的话还是Solarflare X2522是比较合适的选择。我们做过一些简单的测试, 以intel普通10G网卡与solarflar 2522 plus 在 3.5G主频下, 大约相差一个数量级(20-50us 对 2-5us)的样子。
在使用Solarflare网卡时如果需要获得更优的性能(在正确安装好相应的高性能驱动的前提下)还需要注意以下一些事项:
- 开启大页机制
- 采用CPU核的绑定方案
- 采用绑核方案时,可以把要绑的核先进行隔离;需要先测定当前网卡与CPU核心的亲缘性,需绑在跟网卡亲缘性好的cpu核心上
接受程序方面的调优
1、可以考虑对可执行文件在编译生成时添加优化选项, 比如 - 1)gcc优化参数优化级别。 - 2)使用gcc -Q –help=optimizers命令查看开启的优化项目。
2、采用内联函数:在内联函数被调用前,使用inline关键字修饰内联函数定义,同时在编译时打开对内联函数的优化。
3、消除循环的低效率。例如需要执行多次(在循环里)但是结果不会改变的计算,可以将这类计算移动到代码前面不会被多次求值的部分。
4、系统调用会导致进程从用户态切换到内核态,开销通常较大。部分系统调用可能在微秒级别或以上,尽量避免系统调用可以大幅提高我们的程序性能。
5、内存初始化程序在使用new或者malloc等分配内存后,这些内存可能并未在物理内存中分配。我们可采用初始化的方式将这些内存分配到物理内存中,避免运行过程中使用这些内存时引起缺页中断。
6、算术运算和浮点数乘除法或浮点运算相对于整型的加减运算,性能开销较高。我们可留意是否能将这些耗时的运算转换为整型加减或者位运算来提升性能,或者避免乘除法和浮点运算。
7、在逻辑运算符‘||’和‘&&’中,我们可以利用与短路和或断路特性,对条件进行排序。例如‘||’中更容易为真的条件放在前面,‘&&’中更容易为假的条件放在前面。