X86服务器性能调优三板斧

作者 | 范晓波
简介
随着现代社会互联网、5G的飞速发展,越来越多的设备接入到网络中,从而给各类型的网络服务器处理能力带来了很大的挑战。但出于能耗成本和硬件采购成本等因素的考虑,单方面增加服务器数量或者更换处理性能更高的CPU、高频率内存等部件显然不是最佳方案。为了满足网络处理性能快速增长的需求,CPU性能调优、内存调优、NUMA(Non Uniform Memory Access)优化等技术应用而生,这些技术通过提高CPU利用率、CPU Cache命中率、TLB(Translation Lookaside Buffer)命中率、适当调整应用的线程并发数,使得充分利用多核能力和资源争抢之间达到平衡等提升服务器的处理能力。
本文以VPN服务器为例子,介绍定位服务器性能瓶颈的三个步骤以及三种优化X86 NUMA架构服务器网络处理性能的方法。
NUMA架构介绍
NUMA(Non-Uniform Memory Access,非统一内存访问)架构,能够很好地解决SMP技术对CPU核数的制约。NUMA架构将多个核结成一个节点(Node),每一个节点相当于是一个对称多处理机(SMP),不同的CPU之间采用QPI(Quick-Path Interconnect)实现高带宽低时延的片间通讯。Intel QPI与AMD HT互连比较类似。
上图中我画是Intel X86通用服务器架构中的一种,每颗CPU有一个NUMA Node,每个NUMA Node有固定数量CPU Core。下面我会以Intel Xeon(R) Gold 5218 CPU @ 2.30GHz作为VPN服务器的CPU,介绍三种常见的X86网络服务器性能优化的方法。VPN服务器的硬件参数配置如下:
CPU:
网卡:Intel x710-DA4
系统:CentOS Linux release 8.4.2105
三个步骤确定优化方向
第一步:建立优化基准
在性能优化之前,我们需要对设备当前的性能做全面的评估建立基准。这个基准就是在当前硬件配置下,基于某一个特定版本软件(比如:VPN ver1.0.1),使用专业的网络压力测试仪(比如:思博伦Testcenter、信尔泰Bigtao、ixia等)对系统进行网络压力测试。评估系统当前设备CPU利用率、网络吞吐、网络时延等参数,建立一个优化的基准线。在测试仪参数配置方面,可根据具体产品功能特性,尽量配置接近现网运行的流量参数。
以VPN ver1.0.1为例,我们可以根据产品自身的一些功能特性记录相应的参数。下边是一部分我记录的一部分基准参数:
第二步:确定性能瓶颈
使用专业的网络压力测试仪表对设备进行全面的压力测试,同时观察和记录设备和仪表的运行状态。比如线性增加仪表吞吐量分别记录设备在各个吞吐量级别的CPU利用率、丢包率、CPU Cache Miss情况、参与处理流量设备CPU核数量。记录的越详细和评估的越全面(比如使用小包、中长包、大包、随机长度包进行压力测试)将更有助于软件性能瓶颈的分析和确认优化的方向。
第三步:实施优化
压力测试和详细记录测试过程是为了确定性能瓶颈和优化方向。通过详细分析对比测试记录去确定我们的优化方向。系统的性能瓶颈通常会在CPU利用率较低、IO阻塞、Cache Miss较多、存在跨NUMA访问内存等方面。在确认了几个优化方向后,我们就可以从硬件和软件程序两个方向对设备性能进行优化。比如通过修改代码提高CPU Cache命中率、调整网卡PCIE插槽避免跨访问和在BIOS中(Basic Input Output System)一些CPU、网卡参数等。
三种方法提升处理性能
下面介绍三种提升网络设备性能的方法:
CPU核隔离

grub2-mkconfig -o /boot/grub2/grub.cfg




隔离中断

#查看cpu支持的中断数
irqs=`ls /proc/irq | grep -E '[0-9]'`; for irq in $irqs; do echo $irq; done
#设置只有核0处理中断
irqs=`ls /proc/irq | grep -E '[0-9]'`; for irq in $irqs; do echo 1 > /proc/irq/$irq/smp_affinity; done
#查看
irqs=`ls /proc/irq | grep -E '[0-9]'`; for irq in $irqs; do echo $irq; cat /proc/irq/$irq/smp_affinity; done
CPU开启性能模式
#安装cpupowerutils
yum -y install cpupowerutils


#开启高性能
cpupower frequency-set -g performance


Performance:性能模式
Powersave:省电模式
Userspace:用户指定频率
Ondemand:按需快速动态调整CPU频率,一有CPU计算量的任务,就会立即达到最大频率运行,空闲时间增加就降低频率
Conservative:按需快速动态调整CPU频率,比 ondemand 的调整更保守
Schedutil:基于调度程序调整 CPU 频率
总结
作者介绍
直播预告
代码疫苗技术,是通过运行时插桩技术做应用漏洞检测及安全防护的技术,其涵盖的IAST技术和RASP技术,连续数年被Gartner列在十大安全技术中。相较传统的安全技术,其特点是检测及防护更精准、更有针对性、对绕过技术更敏感。本次直播将与大家一起探讨代码疫苗技术原理实现、场景及落地。
点击卡片,立即预约直播
扫码加入直播群,了解更多直播详情


关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

随时掌握互联网精彩
- 1 分析研究当前经济形势和经济工作 7904097
- 2 枪击事件后第三天 印巴直接交火了 7809035
- 3 男子为亡妻殉情希望合葬 岳母发声 7712603
- 4 美滥施关税 中国外贸人如何破局 7618191
- 5 日本大爷掉下水道3个月仍未获救 7521654
- 6 王祖贤现身上海 眉眼美丽气质优雅 7427360
- 7 多地宣布发钱奖励结婚 7328524
- 8 女子手机失控冲进派出所民警让砸掉 7235850
- 9 美学者:美42年间64次想颠覆他国政权 7136563
- 10 姜文提醒年轻人多用脑子少用手机 7048259