写这个话题的起点是因为大多数网管(包括我自己)都奢望有个自动化工具,一键完成服务器的调优,尤其是网络性能调优。
可惜并没有这样的工具。因为,网络性能调优是个庞大的话题。
笔者:国际认证信息系统审计师、软考系统分析师
不仅服务器的各个部件都会对网络性能产生影响,还包括 Windows 服务器操作系统每个版本都独有的网络优化设置,以及在不同的计算应用场景下需要策略化、针对性的优化措施。
单一的软件工具最多只能完成操作系统范围内的调优设置,但对于操作系统之外的因素还是得网管员自己动脑和动手。
本篇涉及知识点:CPU、BIOS、网卡、操作系统、应用计算场景。
一开始先介绍一个专业调优工具,SpeedGuide TCP Optimizer,当前版本是4.1.1。下载地址是:
https://www.speedguide.net/downloads.php
SG TCP Optimizer 是免费且简单易用的Windows系统网络性能调优软件。它的设计和开发的目标主要是针对宽带互联网连接进行优化调节,但是它也可以帮助调整任何互联网连接类型,从低速拨号连接到千兆网络连接都行。该软件完全免费(但不是开源软件),适用于当前所有版本的Windows操作系统。
这个软件不需要安装,下载后以管理员身份运行,通过直观的界面,无论是什么水平的管理员都可以轻松调节和优化网络连接,调整Windows操作系统内所有相关的TCP/IP设置参数,比如MTU,RWIN,甚至是高级一点的设置例如QoS和ToS/Diffserv优先级等,使系统的网络优化能与网络连接情况相匹配,尤其是对互联网的链接。主界面如下:
该软件本身带有相关的网络设置调整算法功能和查找带宽、时延的功能,可以根据网络连接的速度等因素计算出最好的TCP窗口,从而实现细粒度的调优。软件还包括一些其他功能,例如对多个主机测试平均延迟,以及找出最大传输数据包(MTU)的大小等。
需要注意的是,该工具虽然有自动计算和判断优化设置的功能,但并不是一个无脑优化工具,而是优化操作的聚合和简化工具。如果没有基于对设置的理解而盲目应用调节,效果很可能会适得其反。所以这个网络优化的系列最后会专门介绍如何有效使用该工具。
吞吐量和时延是网络性能最基本的两个指标。书本上的解释都太抽象了,具体点说,吞吐量是单位时间比如一秒内数据输入输出的总数据量。时延是响应的速度,对于服务器来说是从收到询问到发出应答所需要的时间;对于客户端则是从发出询问到收到应答的时间,也就是加上网络传输过程的时间。
对于服务器来说,吞吐量的上限是固定的。服务器有多少个网络接口,理论上的总吞吐量就是这些接口各自吞吐量的总和。所以优化的目标是达到100%的吞吐量利用率,减少波动。时延在理论上也有下限:时间为0。当然这是不可能达到的,只可能尽可能逼近。
CPU对服务器任何方面的性能都会有影响。在传统上,数据在输入输出时需要CPU进行缓冲区调度,响应DMA传输的中断等操作。即使现在的网卡有着大量卸载CPU处理工作的功能特性,但CPU始终是关键核心因素。
CPU影响到网络优化最明显的参数就是频率、物理核心数量和缓存容量,再加上内存总线带宽。
1、频率
频率越高响应速度就越快时延就越低。提升CPU的频率,提高了处理速度,可以达到降低时延的效果。另外,如果CPU支持动态频率提升功能特性(如Intel Turbo或AMD Precision Boost Overdrive等),可以增强降低时延的效果。
2、物理核心数量
物理核心数量越多对网络性能干扰就越少吞吐量就更稳定。因此,核心数量不应少于网络接口的数量,并且还要考虑服务器要承担的计算负载去配置更多的核心数量。需要注意超线程功能实际是共享同一物理核心,仅依靠超线程去实现提升核心数量反而可能降低稳定性。另一方面,由于网络吞吐本质上是线性的,不考虑计算负载时,更多的核心并不会对稳定吞吐量有明显帮助。
3、缓存容量
本来CPU的缓存不应该作为独立因素考虑。但如果服务器整体(尤其是网卡)支持Direct Cache Access(I/OAT技术的一部分)功能,那就可以把数据从网卡直接送入CPU的缓存让CPU读取,从而避免CPU缓存不命中需要访问主存时会导致的性能损失,实现缩短应用响应时间的目标。此时CPU缓存越大,网络性能无论是吞吐量抑或时延都会越好。对于不具备此功能特性的服务器环境,增大缓存并无显著优势。
4、内存总线带宽
内存总线带宽的重要性是不需要讨论的,在PC体系的发展过程中,内存控制器从北桥芯片移入CPU就是证明。很显然,内存总线带宽越高,吞吐量就必然越稳定。但同时也需要考虑内存总线通道数和内存频率等因素。
简单归纳,可以有如下的表:
要素 | 优化目标 | 影响 | 附带因素 |
频率 | 提升频率 | 降低时延 | 动态频率提升可以增强降低时延的效果 |
核心数量 | 不少于网络接口数量 | 稳定吞吐量 | 超线程不能和物理核心混为一谈 |
缓存 | 扩大容量 | 稳定吞吐量为主,降低时延为辅 | 需要整体支持,尤其是网卡 |
内存总线带宽 | 提高带宽 | 稳定吞吐量 | 内存总线通道数,内存频率等 |
1、BIOS的CPU相关设置
CPU的性能还包括平台(俗称芯片组)的外围加速特性,在PC服务器的BIOS里面可以看到相关的设置,比如笔者手头的一台服务器,使用的是如下的CPU:
英特尔 至强 E5-2620 v4 2.1GHz,20M 缓存,8.0GT/s QPI,Turbo,HT,8C/16T (85W) 内存 2133MHz
BIOS显示:
BIOS设置包括有:
具体设置不少,但我们只集中于网络性能直接有关的设置上,其它设置大多数与计算性能有关,与网络性能不冲突就不介绍了。
Logical Processor:逻辑处理器就是超线程,追求网络性能平稳时建议禁用。
Address Translation Services(ATS):支持把DMA 地址转换为主机内存地址以提升DMA操作性能。此选项默认设置为已启用并应启用。
Logical Processor ldling:逻辑处理器闲时休眠,节能用途的选项,需要操作系统支持,默认禁用。追求网络性能时不应启用。
Dell Controlled Turbo:由服务器厂家提供控制的CPU频率动态调节。根据厂家相关资料,建议启用,会获得比原本CPU厂家所设计的更多的动态调节性能。
2、BIOS的外部设备设置
然后我们跳过网络设备设置不看(那里只有关于PXE,Preboot Execution Environment的相关功能设置,和性能无关),看Integrated Devices集成设备的BIOS设置。说是“集成设备”,实际就是外部设备与服务器连接有关的设置。
I/O AT DMA Engine:这个功能选项就是我们在前面说过的Direct Cached Access,还包括了其它一些外围优化功能,但只有服务器整体都支持时启用才有意义,否则应该保持禁用。
I/O Non-Posted Prefetch:在InfiniBand或侧重于计算卡负载的情况下禁用可以提升性能,其它场合下应启用。
I/O Snoop HoldOff Response:减少频繁的I/O嗅探以改善性能,较大的值会同时有益于性能,包括提高吞吐量和降低延迟。
Memory Mapped I/O above 4GB:一方面是对需要大量内存的 PCle 设备比如显卡或计算卡的支持,另一方面是从架构上允许PCIe设备驱动程序访问高于4GB的内存地址。对于具备相应设计的网卡驱动程序可以避免接收数据时的两次缓冲。应保持启用。
3、BIOS的性能功耗设置
服务器的节能措施对服务器的性能是必然会产生影响的。因此服务器的BIOS在能耗设置上都会提供了多个选项,包括从最小化功耗到完全功耗运行。从网络性能出发,首选应选择完全不节能的高性能模式,或者折中一些的,由服务器厂家自己研发的兼顾了降低功耗的高性能模式。
下图是这台服务器的性能功耗设置:
如上图,选择的就是由服务器厂家提供的自适应功耗控制策略时的设置。这些设置基本上都会对网络性能构成影响,在笔者经验而言并不建议自行调节,因为有可能会导致系统不稳定。
典型如其中的C1E和C States,不适当的启用和禁用组合下可能会导致操作系统蓝屏,显示未处理的线程异常:SYSTEM_THREAD_EXCEPTION_NOT_HANDLED或其它错误信息。
而Memroy Refresh Rate等设置胡乱配置就会导致内存数据丢失引起操作系统蓝屏,显示内存管理:MEMORY_MANAGEMENT或其它错误信息。
所以还是交给厂家比较稳妥。服务器厂家提供的可选项一般包括最大性能、性能功耗平衡、最小功耗、最小延迟、自行配置等几种。如果没有给出最小延迟的选项,可以参考下面这些由这个服务器厂家给出的建议设置:
选项 |
面向性能优化 |
功耗效率兼顾 |
延迟敏感优化 |
Memory Mode |
Optimizer |
Optimizer |
Optimizer |
Node Interleave |
Disabled |
Disabled |
Disabled |
Logical Processor |
Enabled |
Enabled |
Disabled |
QPI Frequency |
Maximum Frequency |
Maximum Frequency |
Maximum Frequency |
System Profile |
Performance |
DAPC |
Custom |
CPU Power Management |
Maximum Performance |
System DBPM |
Maximum Performance |
Turbo Boost |
Enabled |
Disabled |
Disabled2 |
C1E |
Disabled |
Enabled |
Disabled |
C-States |
Disabled |
Enabled |
Disabled |
Monitor/Mwait |
Enabled |
Enabled |
Disabled |
Memory Frequency |
Maximum Frequency |
Maximum Frequency |
Maximum Frequency |
如果服务器设置为最低功耗模式,则很可能会产生明显的延迟,这是低功耗模式下网络接口这类外设的资源倾斜和中断响应优先级都可能会被降低的结果。
4、特殊的BIOS版本
出于极致网络性能追求尤其是在时延方面的原因,服务器厂商会提供另外收费的BIOS加速功能。这里也大致介绍一下:
(1)面向系统管理中断优化的BIOS
这是一种专门针对SMI中断例程进行优化的BIOS。
中断的作用,学过计算机组成原理都知道。由于现代服务器内置的传感器越来越多,这些传感器都可能产生系统管理中断(SMI),从而对服务器性能比如网络性能产生影响。最常见的就是电源控制所引致的SMI。
SMI的中断优先级是最高的,无法也不应该屏蔽掉。折中办法就是降低SMI中断服务例程运行的时间,从而减少CPU转向运行中断例程而对本来在执行中的任务产生性能影响。
(2)面向功耗实现低延迟的BIOS
这是一种通过取CPU的时延而舍CPU的吞吐量而实现低延迟的优化措施。基本原理就是通过临时动态地禁用CPU的核心,从而压缩CPU的热功耗而进一步提升CPU动态频率特性的频率上限和维持时间。
说白了就是超频的手段是能卖钱的。
本篇到此为止。最后需要提醒的是:
BIOS的配置修改务必做好记录。记录应该包括修改痕迹和配置备份。修改痕迹可以用文字表述,但更好的做法是通过截图表达以避免事后翻阅时的认知差别。
我们下一篇再聊聊网卡。
本站微信订阅号:
本页网址二维码: