您现在的位置是:电脑教程 >>正文
X86服务器性能调优三板斧
电脑教程775人已围观
简介PART 01 简介 随着现代社会互联网、5G的飞速发展,越来越多的设备接入到网络中,从而给各类型的网络服务器处理能力带来了很大的挑战。但出于能耗成本和硬件采购成本等因素的考虑,单方面增加服务器数量或 ...
PART 01 简介
随着现代社会互联网、服务斧5G的器性飞速发展 ,越来越多的优板设备接入到网络中,从而给各类型的服务斧网络服务器处理能力带来了很大的挑战。但出于能耗成本和硬件采购成本等因素的器性考虑,单方面增加服务器数量或者更换处理性能更高的优板CPU 、高频率内存等部件显然不是服务斧最佳方案 。为了满足网络处理性能快速增长的器性需求 ,CPU性能调优 、免费模板优板内存调优 、服务斧NUMA(Non Uniform Memory Access)优化等技术应用而生 ,器性这些技术通过提高CPU利用率 、优板CPU Cache命中率、服务斧TLB(Translation Lookaside Buffer)命中率、器性适当调整应用的优板线程并发数 ,使得充分利用多核能力和资源争抢之间达到平衡等提升服务器的处理能力 。
本文以VPN服务器为例子 ,介绍定位服务器性能瓶颈的三个步骤以及三种优化X86 NUMA架构服务器网络处理性能的方法。
PART 02 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
PART 03 三个步骤确定优化方向
第一步 :建立优化基准在性能优化之前,我们需要对设备当前的性能做全面的评估建立基准。这个基准就是在当前硬件配置下 ,基于某一个特定版本软件(比如: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 、网卡参数等。
PART 04 三种方法提升处理性能
下面介绍三种提升网络设备性能的方法 :
CPU核隔离CPU不仅要运行进程还要处理中断,如果一个进程运行的CUP处理中断的次数过多,势必会影响进程的运行 。为了不影响进程,可以将CPU进行隔离 ,比如有4核CPU,可以隔离出2核CPU,并和进程进行绑定用于专门运行进程,剩下的两核处理中断,这样运行进程的CPU就不会处理中断,提高进程的运行效率 。
查看隔核情况的代码如下,从运行结果可以看到我的这台机器目前未开启核隔离功能。

vim /etc/default/grub #根据实际情况在GRUB_CMDLINE_LINUX后边添加下面配置isolcpus=2-11 #设置核隔离 ,使转发核专注用于转发rcu_nocbs=2-11 kthread_cpus=0-1#将RCU Callback,内核线程 ,中断移出转发核 irqaffinity=0-1 #将转发核设置成无时钟滴答核 ,减少时钟中断次数default_hugepagesz=1G hugepagesz=1G hugepages=64 #设置大页内存默认页大小为1G, 分配大页内存nmi_watchdog=0 #关闭看门狗
使用下面命令更新grub配置文件 :
复制grub2-mkconfig -o /boot/grub2/grub.cfg1.
接下来重启机器再次查看核隔离情况:

可以看到我们前面添加的一些配置都生效了。
在核隔离设置完成后 ,我们可以通过下面Linux系统提供的亲核性接口设置我们的程序,提高程序的处理性能。那什么是CPU“亲核性”呢?CPU的亲核性就是让某个进程(比如我们的程序)长时间运行在某个或者某些我们设定的核上 ,不参与Linux 内核进程调度器的调度。我们可以利用Linux内核提供给用户的API ,强制将进程或者线程绑定到某一个指定的CPU核运行。
进程亲核性设置接口:

线程亲核性设置接口:

/proc/interrupts 文件列出了我这台VM虚拟机四个CPU分别对应的中断处理情况以及当前CPU支持的中断类型。我们可以看到这台机器的CPU0和CPU3都处理了中断事件 。通过设置核隔离和应用程序的亲核性,我们希望应用程序能专注于处理数据包,然而在没有设置中断隔离情况下 ,应用程序绑定的核依然还要处理中断事件 。这种情况下应用程序处理性能会受到一定影响 。

设置中断隔离的方法:
复制#查看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; done1.2.3.4.5.6.7.8.9. CPU开启性能模式复制#安装cpupowerutilsyum -y install cpupowerutils1.2.安装cpupowerutils cpupower frequency-info查看CPU支持的cpufreq governors模式,可以看到当前这台机器支持performance(性能模式)和powersave(节能模式)。

我们可以通过下面的命令查询当前CPU正在使用的模式 ,可以看到当前设备的CPU0已经被设置为性能模式 。

如果通过查询后,我们的设备并没有设置性能模式,可以通过以下命令行设置CPU为性能模式提升网络处理性能。
复制#开启高性能cpupower frequency-set -g performance1.2.以下截图来自于intel Xeon(R) Gold 5218 CPU @ 2.30GHz x 2 。

查看开启性能模式的CPU频率:

模式说明:
Performance:性能模式Powersave :省电模式Userspace :用户指定频率Ondemand:按需快速动态调整CPU频率,一有CPU计算量的任务,就会立即达到最大频率运行,空闲时间增加就降低频率Conservative:按需快速动态调整CPU频率,比 ondemand 的调整更保守Schedutil :基于调度程序调整 CPU 频率PART 05 总结
以上我们介绍了三种优化X86服务器性能的方法 。性能调优是一个长期的过程 ,在性能优化的初期阶段,很容易找到性能瓶颈并实施有效的优化,优化成果也往往十分明显 ,但是越到后期优化的难度就会越大,优化方案也会更难寻找,优化效果也会越来越弱 。因此日常使用时,要有一个合理的平衡点。
作者介绍
范晓波 ,51CTO社区编辑,资深网络安全工程师。精通SDN、SD-WAN 、VPN、NFV等网络相关技术 。精通二三层网络转发 。熟悉DPDK 、VPP、OVS高性能网络开源框架。喜欢打羽毛球 、烹饪美食。

Tags:
转载:欢迎各位朋友分享到网络,但转载请说明文章出处“商站动力”。http://www.noorid.com/html/248e399748.html
相关文章
简析信息安全风险评估的方法与特点
电脑教程网络安全是信息化持续发展的根本保障,网络安全中的安全风险评估则是网络安全保障工作的基础性工作和重要环节。本文将从目前应用较成熟的安全风险评估方法出发,梳理探讨其他的可行的风险评估方法,并从资源能力、不 ...
【电脑教程】
阅读更多如何防范生成式AI的钓鱼邮件攻击
电脑教程今年ChatGPT火爆全网,近年来AI人工智能取得了长足的进步,给各行各业带来了革命性的变化。然而,与任何技术一样,总是有人试图利用它来达到恶意目的。如今,黑客正在使用一种名为WormGPT的人工智能 ...
【电脑教程】
阅读更多物联网安全:如何保护您的解决方案
电脑教程当谈到互联网连接设备时,最大的担忧之一是黑客攻击的可能性,这可能导致关键数据的丢失。今天,在物联网技术时代,当攻击者不断寻找更复杂的方法来访问用户数据时,显然物联网安全应该成为开发公司的核心优先事项之 ...
【电脑教程】
阅读更多
热门文章
最新文章
友情链接
- iOS10.2.1省电的技巧(提高iPhone续航的有效方法)
- 安卓手机用久了会变卡怎么办
- 超强 useMCP() 钩子来了,三行代码搞定各种 MCP 服务器!
- 康佳58寸9600电视4k怎么样?(性能超群,画质出众,细节震撼!)
- 简单三步 Android 5.0版本就能更省电
- Nexus 5/6/9 升级最新 Android M 系统教程
- 苹果系统如何重装win7系统教程(详细教你在苹果系统上重装win7系统的方法)
- 魅族mx4usb调试在哪儿打开?魅族mx4usb调试使用方
- 先进算力新选择 | 2025华为算力场景发布会暨北京xPN伙伴大会成功举办
- 使用U盘重装系统教程(简明易懂的U盘重装系统步骤及技巧) 源码库香港物理机亿华云企业服务器云服务器b2b信息平台网站建设