B站服务器基础性能调优与评测实践-AMD篇
本期作者
SYS团队
B站系统部(SYS)团队,为B站所有服务提供基础设施支持,包括数据中心、网络、算力、系统软件以及混合云管理等业务。
01 背景
众所周知,B站在不知不觉间已经成为一家拥有相当体量的互联网公司。拥有自己的IDC的小破站,每年都会对以服务器为代表的硬件设备进行选型迭代。服务器选型评估指标有很多,其中性能是最重要的指标之一。服务器性能涉及服务器硬件、操作系统以及业务应用等多个方向,为准确评估服务器硬件性能,服务器硬件与操作系统层面的性能优化也是B站系统组工作重要的组成部分。这篇文章B站系统组就基于单路AMD Milan CPU服务器,粗浅的介绍一下服务器基础性能调优与评测的工作。希望能抛砖引玉,共同学习,将服务器性能调优与评测这个长线工作不断迭代更新下去。
1.1 服务器性能基准测试
服务器计算性能是衡量服务器硬件性能一个方面,也是最重要的一个方面。服务器计算性能在很大程度上由CPU性能决定,而CPU性能评价的维度有很多:简单的架构与代次、到主频与核心数、再到互联协议、PCIe lane数量、TDP等数值可供对比,十分直观,但是存在很多实际问题。比如,同一个代次的CPU,比如都是Rome,都是Milan,亦或者都是Ice Lake,它们之间彼此的对比十分直观。但是如果跨越不同代次Rome与Milan对比,或者AMD Millan和Intel Ice Lake对比,甚至是x86架构和ARM架构对比,相同主频与核心数量情况下性能也可能天差地别,更不要说实际生产环境中还会受到内存、IO、网络、操作系统、业务等多方面的影响,因此合理量化CPU的算力,其实并不容易。
为了科学、客观、全面的评价服务器计算性能,社区逐步形成了一些通用的基准测试工具,比如常见的UnixBench、GeekBench、SysBench等。我们选择业界公认的CPU密集型基准测试套件SPEC CPU评估服务器计算性能,相对MFLOPS、IPC等评价指标更能直观、准确、全面评估服务器计算性能。SPEC是标准性能评估公司(Standard Performance Evaluation Corporation)的简称,是由计算机厂商、系统集成商、大学、研究机构、咨询等多家公司组成的组织,这个组织的目标是建立、维护一套用于评估计算机系统的标准。SPEC CPU 2017 是一个包含多个benchmark工具的基准性能评估套件,其中不同的工具针对不同的应用领域。主要包括4大部分:
整数运算性能:SPECrate®2017 Integer ,SPECspeed®2017 Integer
浮点数运算性能:SPECrate®2017 Floating Point ,SPECspeed®2017 Floating Point
其中rate表示吞吐量,speed表示处理速度。四个大项下细分了总计40多个子项,会详尽的在编译、建模、压缩、AI、编解码等各类负载维度对CPU性能进行综合测试。需要注意是SPEC CPU主要评估服务器计算性能,其测试结果主要与CPU、内存以及编译器环境相关,与磁盘、网络等因素无关,因此通过SPEC CPU可以直观评估各项调优带来的计算性能收益。(注:SPEC CPU结果相同环境下相互比较有意义,部分结果数据经过模糊处理,不建议与外部数据直接比较)
1.2 服务器性能优化方向
服务器是一类由软硬件组合而成的整体系统,服务器性能也会受到服务器硬件、操作系统以及业务应用等多个层面因素的影响,包括但不限于:CPU、内存、网络、以SSD为代表的其他硬件配件的配置、BIOS配置、电源管理模式、操作系统和内核、编译工具链等等。
由此可见,服务器性能的调优是一项涉及范围广、维度多且精细化的工作。在下文,我们主要从BIOS、内存、电源与功耗管理等维度介绍服务器硬件计算性能调优与评测的工作,不涉及操作系统以及业务应用层面优化。
02 BIOS调优
BIOS是服务器配置的基础,本章简单介绍下BIOS常规优化项目的配置以及对性能带来的影响。
2.1 BIOS简介
相信所有接触过硬件运维或者仅是喜欢折腾自己电脑的同学们对BIOS都不陌生。BIOS的全称是Basic Input/Output System,即计算机的基本输入输出系统,是用于为计算机提供运行时服务的固件。
BIOS通过一套很复杂和完善的工具在基础硬件层面实现了对服务器的基础功能进行配置,包括但不限于:CPU功能、内存功能、电源管理模式、安全配置等。BIOS版本一般跟CPU平台直接挂钩,由CPU厂商给出核心功能,再交由服务器OEM厂商封装。针对服务器基础性能的调优,除了系统和内核以外的部分,大部分都离不开BIOS层面的配置,很多配置也要结合系统参数配合生效。
2.2 CPU相关配置
如前文所言,BIOS的核心功能由对应CPU平台的厂商提供,BIOS里自然存在着诸多跟CPU相关的功能性配置。这里介绍几个最为常规的功能项配置,如我们常说的超线程(SMT)、睿频(Boost)和虚拟化(SVM),其中SVM主要和虚拟化相关,基本不影响服务器硬件性能。为了验证不同配置对实际性能的影响,我们将在8通道内存环境下通过SPEC CPU进行对照验证,为了方便对照,仅进行intrate和fprate这两项针对整数和浮点基于吞吐量的计算。
测试服务器CPU:AMD 64-Core Processor *1
测试服务器内存:256G(32G*8 3200MHz)
2.2.1 同步多线程(SMT)
同步多线程(SMT:Simultaneous multithreading)通过超标量架构和硬件多线程技术提高并发度。它允许一个CPU物理核心运行一个以上的线程,在指令执行期间有效地在线程之间进行调度。常说的超线程就是基于SMT的一个实现实例,每个物理核心都能拥有两个硬件线程。
开启SMT,系统内显示核心数为128
关闭SMT,系统内显示核心数为64
2.2.2 核心性能提升(CPB)
核心性能提升(CPB: Core Performance Boost),有很多更加通俗易懂或者已经被习惯的说法。比如超频、睿频、Turbo 等,核心内容只有一个,就是通过CPU与BIOS的调度算法,允许 CPU 在处理低负载时以基本频率运行,而在处理高负载时提升至更高的频率。
CPU核心的频率提升可能取决于多种原因,包括但不限于以下因素:
工作负载
活跃核心数量
功耗
CPU温度
同样以CPU为AMD 64-Core Processor *1这台服务器来测试,我们通过数据来感受下开关CPB带来的性能差异。
开启CPB,系统内各核心主频在无负载的情况下明显高于基频。
关闭CPB,系统内各核心主频在无负载的情况下都会在基频左右。
2.3 测试数据与结论
根据上文的BIOS配置,将SPEC数据简化成如上表格,通过以上测试结果的对照可以直观看到:
开启超线程之后,浮点运算影响不大,但是整型计算会有接近10%的提升。通常情况下,我们一般会选择开启超线程,让操作系统拥有更多可供调用的核心。
开启Boost,能够给服务器带来接近15%的性能提升。这让这个功能的开启没有任何争议。若是同时开启SMT和Boost,跟全部关闭相比,综合算力性能要提升30%左右。
综上,BIOS的简单调整就可以带来的综合性能提升。因此在服务器进一步性能优化与评测前,理应先完成最基本的BIOS配置。
2.4 具体配置
SMT Control
CPU Common Options → Performance → SMT Control = Auto
这里大多数情况设置为Enabled即可,若业务实际有特殊需求,改为Disabled关闭超线程也是合理的。
Core Performance Boost
CPU Common Options → Core Performance Boost = Auto
选择Enabled启用CPU核心频率的自动调整功能,在大多数场景下都适用,可以默认开启。
但是针对该选项必须指出一点缺憾。Milan这一代的AMD CPU,性能总体明显优于Rome,但是却并非通过提升TDP(Thermal Design Power)实现,热功耗设计维持不变的结果有利有弊。优点是Milan这一代的CPU性能功耗比优势更加明显,综合TCO(Total Cost of Ownership)收益颇多。缺点则是由此而来提供给CPU核心电力的预算更紧张,因此重新对原有比较成熟的电源管理模块进行了重新设计。最后的结果是,Milan这一代取消了以往都存在的全核心稳定超频功能——即让所有的CPU核心超频到最高频率,且相对稳定。
03 内存与IO相关功能与调优
在选定CPU型号的前提下,影响服务器整体计算性能的主要因素之一就是内存。跟内存相关的各项参数都会明显的影响计算效率,比如常见的容量、主频,以及容易被忽略的内存通道等。内存调优最重要的行为是一方面保证应用程序尽可能保留在主存中,并且尽量避免经常发生换页和交换;另一方面缩短调用内存的时间,提高内存交换效率;还应当尽可能避免OOM事件的发生。NUMA和内存交织技术,可以有效的提升系统对内存的利用效率。
3.1 内存频率与通道
单根物理内存一般由几个参数组成:容量(16G/32G/64G等)、频率(2400 MHz/2933 MHz/3200 MHz等),功能(UDIMM/RDIMM/LRDIMM等)。无需赘言,更大的容量和更高的频率一定会带来更优的性能提升。AMD CPU自Rome开始就全线支持3200 MHz的主频内存,因此选择最高主频的内存是毫无疑问的既定事项。
目前DDR已经发展到第五代,但是以Milan为例的当前服务器,还未开始对DDR5技术的内存批量使用,暂时不列入讨论。在可预期的未来,无论是下一代Sapphire Rapids代次的Intel CPU还是Genoa代次的AMD CPU,都已经确认会支持DDR5以获取更大的内存收益。
内存通道则是一个容易被忽略的场景,而且对服务器性能影响其实高于预期。当前Milan支持8通道的内存。在同等内存大小的前提下,满足八通道内存插法的情况下内存性能最优。即同为单路128G内存的环境下,16G*8配置下的内存性能会优于32G*4,且CPU性能也会带来显著提升。下面做两组简单的测试对照。
3.1.1 不同内存通道数、容量环境的内存性能
测试服务器CPU:AMD 64-Core Processor *1
使用常规内存性能测试工具Stream,使用编译参数:
gcc -mtune=native -march=native -O3 -mcmodel=medium -fopenmp -DSTREAM_ARRAY_SIZE=3000000000 -DNTIMES=30 stream.c -o stream
八通道情况下(32G*8)
作为最常见的应用场景,既可以通过BIOS调整跟前文的CPU BIOS配置对照数据,也可以细分多个场景之后彼此比较:
默认情况
关闭超线程
关闭Boost
可以看到,CPU相关BIOS部分配置对stream内存测试结果的影响很小。为了详细验证内存通道和容量对内存性能,我们在保持其他配置不变的情况下,根据不同的内存通道数、容量和内存条数,细分出多种场景用作对比。
1. 八通道内存环境(16G*16):内存容量和通道数同默认情况一致,内存条数量翻倍
2. 八通道内存环境(16G*8):内存通道数和内存条数同默认情况一致,内存容量减半
3. 四通道内存环境(32G*4):四通道,同时内存容量跟上一个场景一致
4. 六通道内存环境(32G*6):六通道
5. 双通道内存环境(32G*2):双通道
3.1.2
不同内存通道数、容量环境下的CPU性能
使用前文介绍过的SPEC CPU来测试不同内存通道场景下计算性能的差异,同样采用intrate和fprate这两项结果来对比。测试数据参见本章第五节。
3.2 NUMA
3.2.1 NUMA简介
NUMA的全称是Non-uniform memory access,即非一致性内存访问,是一种用于多处理器的内存架构。NUMA架构的内存访问延迟是不一致的,由访问内存的CPU节点与内存位置决定。
为提高计算性能,限制内存访问次数是关键之一,在通过提供更多缓存、使用更复杂算法以提升缓存命中率之余,更好的调配CPU和内存的访问资源也可以有效提升计算效率。NUMA架构功能的核心目标就是尝试为每个处理器提供本地内存,以避免在多个处理器尝试寻址同一内存时对性能造成影响,从而解决UMA (Uniform Memory Access,一致性内存访问)架构内存访问瓶颈问题。简单地说,在开启NUMA后,处理器可以优先访问自己的本地内存,降低内存访问延迟,从而在处理特定工作负载的时更为高效,典型的如K8S、Hadoop等业务场景。
3.2.2 NUMA在AMD平台
AMD Milan 64-Core CPU由8个CCD模块拼接而成,而每个CCD各自封装了若干核心。比起完整封装所有核心,独立成片的做法,这种拼接式的封装方式在需要划分核心和内存节点的NUMA场景有着先天优势。一个简单的比方是,AMD Milan的NPS(Node Per Socket, 每个CPU可以划分的NUMA node数量)可以达到4个,即单路CPU的服务器也可以划出4个NUMA节点,在NUMA敏感的业务场景下,带来的收益确实极为可观。
3.2.3 NUMA的收益
由于NUMA的优化需要结合具体的应用场景,并非开启最多NUMA节点就能带来最佳收益。比如NPS4配置下,一旦本地NUMA节点内存不足,产生访问远端内存情况下,会导致延迟和带宽都不如预期。因此这里也以SPEC CPU为例,测试在不同NUMA场景下的CPU性能表现差异,仅供参考。测试结果可以直接在本章第五节统一对照查看。
1. 单NUMA节点,配置为NPS1
2. 双NUMA节点,配置为NPS2
3. 四NUMA节点,配置为NPS4
3.3 Memory Interleaving
3.3.1 什么是内存交织
比起内存通道和NUMA,Memory Interleaving可能更加生僻一些。内存交织 (Memory Interleaving) 是AMD CPU用于增加应用程序可用内存带宽的一种技术。在没有交织的情况下,连续的内存块都是从同一物理内存读取的。正因为如此,连续读取内存的应用必须等待内存传输完成后才能开始下一次内存访问,降低了吞吐量并增加了内存访问延迟。通过启用内存交织,连续的内存块可位于不同的物理内存中,因此有利于提升应用可用内存带宽并降低内存延迟。
3.3.2 内存交织的收益
如上节所言,开启内存交织功能几乎必定能带来内存带宽收益。NPS1配置下,8通道内存带宽最优。NPS4配置下,CPU核心访问本地NUMA节点内存会有更好的内存延迟。因此在Stream为代表的的内存测试,NPS4+Memory Interleaving的配置时系统可达到相对更大的内存访问带宽,且具有相对较好的访存延迟。
在NPS4环境下,针对是否开启内存交织进行Stream和SPEC CPU测试。
关闭内存交织
开启内存交织
3.4 IOMMU
IOMMU,全称为 input–output memory management unit ,即输入输出内存管理单元。MMU会把CPU访问的虚拟地址转化成物理地址,IOMMU则是把设备访问的虚拟地址转化成物理地址。
专门在内存章节的最后提到IOMMU,是因为该技术本身已经广泛应用于了各种生产环境里。在虚拟化等场景下开启IOMMU可以有效提升内存寻址效率,同时设备直接物理寻址(DMA:Direct Memory Access)时重新映射访问实际物理地址并保证安全性,关闭IOMMU会导致服务器CPU逻辑核心数达到256时无法被系统正确识别。开启IOMMU也会带来一系列缺点,最明显的地方在于,由于转译和管理功能本身的开销,开启IOMMU有可能导致整机的性能下降,B站在部分高PPS(Packet Per Second,每秒数据包)网络负载密集型业务场景下开启IOMMU会导致CPU利用率较高的问题,为了追求更优的IO性能,选择BIOS中开启IOMMU,同时操作系统内设置为passthrough。
3.5 测试数据与结论
本章节相关场景测试数据如上,我们可以发现:
内存通道:
1. 更高通道数的内存配置跟低通道数情况相比,内存和CPU性能更优,8通道比起4通道可带来30+%的CPU性能提升和一倍的内存性能提升。
2. 同样内存通道数时:单根内存容量越大,性能越好(16G*16 < 32G*8);内存数量越多,性能越好(16G*16 > 16G*8)。满足通道数要求下,内存容量与数量影响较小。
3. 若无法满足内存八通道,在Milan CPU应尽量按照8>6>4>2通道的逻辑选用内存,其性能是近似线性下降的。
NUMA:
比较SPEC CPU在NPS1到NPS4的不同配置下的测试数据,性能收益相对有限,但在业务大规模集群化部署的时代,哪怕只能提升1%的算力,放之于全局那也能够带来可观的业务和经济效益。当然,是否需要开启NUMA,开启多少个NUMA节点,核心还是要看应用场景。
内存交织:
是否开关内存交织功能,对内存乃至整机的计算性能影响极大。关闭内存交织,内存性能直接减半,NPS1时计算性能下降30%左右。
需要注意的是:SPEC CPU中527.cam4_r、503.bwaves_r、507.cactuBSSN_r 等这几个 内存敏感型测试项受内存性能影响很大,从而拉低了整体测试的结果,这也说明内存性能影响与具体业务场景密切相关。大多数情况下,保障内存容量依然是第一优先级。
3.6 具体配置
NUMA nodes per socket (NPS)
DF Common Options → Memory Addressing → NUMA nodes per socket = NPS4
这里根据实际情况设置为 1、2、4。设置为1时是 8 内存通道 interleaving,每个 NUMA 内带宽最高,延迟最大;设置为 4 时是 2 内存通道 interleaving,每个 NUMA 内带宽最小,延迟最小。若设为Auto,会根据当前内存槽位和通道自动判断NPS值,往往会设置成NPS1,因此建议还是手动配置。
ACPI SRAT L3 Cache As NUMA Domain
DF Common Options → ACPI → ACPI SRAT L3 Cache As NUMA Domain = Enable
该选项使每个 L3 为一个 NUMA Domain,该选项不影响 memory interleaving
Memory Interleaving
DF Common Options → Memory Addressing → Memory interleaving = Auto
注意,BIOS里“Memory Interleaving”这一项的选项一般仅有“Disabled”和“Auto”,Disabled很好理解,就是关闭内存交织。Auto则容易带来一定的概念混淆,并不是指系统会“自动”根据任务的负载进行内存交织配置的调整,而是指在内存通道和NPS数目固定的前提下,BIOS会自动生成固定的对应内存交织配置,其配置不会受系统和负载的变换而变化。
IOMMU
NBIO Common Options → IOMMU = Auto
kernel启动参数:iommu=pt
04 服务器电源及功耗管理
随着CPU架构和生产工艺的不断迭代,当前的CPU,特别是x86架构的企业级CPU的性能已经和功耗表现息息相关,TDP已成为制约CPU的性能的重要限制条件。从应用角度看,性能功耗比也已成为服务器性能评估的重要指标。
本章我们就借着对服务器高级配置与电源接口的一些参数调整,初步了解下在服务器电源及功耗管理的维度,有哪些容易被忽略的性能优化项。
4.1 高级配置与电源接口(ACPI)
高级配置与电源接口(ACPI:Advanced Configuration and Power Interface),允许操作系统内部控制电源管理,是一个业界广泛采用的开放标准,应用于各种计算机设备上。ACPI可以实现的功能包括但不限于:系统电源管理、设备电源管理、处理器电源管理、设备和处理器性能管理等,其中与服务器性能密切相关的莫过于其中的处理器电源状态C-states和处理器性能状态P-states。
4.1.1 处理器电源状态C-states
C-states(Processor power states)定义了CPU的电源状态。如下图,C0 是CPU执行指令的活动电源状态,C1 到 Cn 电源状态是CPU低功耗状态,越向后 CPU进入睡眠模式的程度越深,功耗越低同时唤醒延迟越高。AMD Milan定义了三种C-states: C0、CC1、CC6,CC6会引发处理器进入更深度的睡眠状态,在操作系统内近似对应C0、C1、C2(需要指出的是:AMD 定义的C-states与ACPI定义的C-states并不能直接对应)。由此可见,为提升服务器性能,需要尽可能让CPU处在C0和C1之间以减少唤醒CPU带来的延时。
4.1.2 处理器性能状态P-states
处理器性能状态P-states(Performance States)定义了 CPU在C0状态的电源消耗和性能的状态,P-states的本质是通过细分不同电压与功耗状态来对CPU核心的性能加以控制,即通过调整CPU频率以提供不同级别的性能。AMD Milan支持3种P-states:P0、P1、P2,P0为最高性能状态,功耗也最高,而P1、P2则是逐步降级状态,目的在不损失性能的情况下,尽可能的降低功耗。在高性能需求下设置也比较简单,P-states=P0即可。
4.1.3 cTDP和PPL
相信接触硬件较多的小伙伴们一定对TDP不会陌生,TDP一般指服务器处理器及其他部件产生的最大热量,指导设计服务器散热能力。TDP不能完全等同于实际功耗,更高的TDP往往可以近似的理解为拥有更好的性能潜力。
AMD Milan CPU提供cTDP(Configurable TDP)选项支持设置TDP限制,cTDP设置范围与具体CPU型号有关。调低cTDP可降低功耗以提高效率,而相应地也可以通过调整cTDP的高于默认TDP值以获取额外的计算性能,同时需调整PPL(Package Power Limit)。
4.1.4 Determinism Slider
Determinism Slider 是一个选择电源功率确定性模式的BIOS选项,也是AMD Milan这一代CPU特有的BIOS配置项。其功能类似于以往BIOS配置里常见的电源模式,但是又不完全相同。
Determinism Slider 允许用户在Performance性能确定模式和Power功率确定模式间选择。Performance模式为默认设置,在包括基准测试在内的各个应用场景里,Performance模式都将以推荐的最佳性能稳定运行,且可以保证运行结果几乎没有偏差,是官方相对更加推荐的模式。而在代表“功率确定性”的Power模式下,允许每个CPU以最大允许的性能运行。运行会受到制造工艺、环境温度等因素制约,导致运行结果可能存在差异。但是若能提供稳定的运行环境,配合cTDP的调整,Power模式可提供更高的服务器极限性能。
4.1.5 cpupower
cpupower是一个在操作系统内查看和调整CPU频率与电源模式的工具。作为一个CPU频率与电源管理工具同样能帮助我们在性能问题排查和调优方面带来帮助,具体可以参考以下命令:
cpupower -c all frequency-info
查看CPU各核心的频率等信息
cpupower frequency-set -g performance
将CPU设置为performance模式以达到最佳性能
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
查看CPU各核心的cpufreq策略,按上述方案调整后应该会都显示performance
4.2 测试数据与结论
电源相关的配置比较繁杂,就不跟前文一样针对不同场景单独详细说明,而是列出所有配置项后统一通过SPEC测试性能。本章节测试数据如下表:
通过以上多轮基于不同电源配置的测试,我们同样可以直观地得出一些结论:
1. P-states层面,在高负载场景下,P1级别对CPU算力的影响差异极小,但是一旦降级到P2、P3,性能差异就会比较明显
2. C-states层面,是否关闭CC6更多是影响在CPU核心的唤醒延迟层面,而在高负载场景下对CPU性能本身的影响较小
3. 在Determinism Slider维度,可以发现Performance和Power模式其实差异不大,当然Power模式下确实可以略微提高算力
4. cpupower的核心电源配置影响非常大,应当保证CPU是Performance模式而非Powersave或其它模式
5. 将cTDP和PPL都设置到CPU支持的最高阈值,也同样可以提升CPU的性能
藉由SPEC测试数据,我们可以进一步的直观感受到电源与功耗配置项对于服务器性能的重要性。当然,需要反复强调并注意的是,服务器性能往往跟功耗息息相关,最大性能的获取往往是以更高的功耗为代价的。在“双碳”目标下,推进建设绿色低碳数据中心的发展,优化服务器性能与能耗,提升服务器计算效能是个重要的研究方向。
4.3 具体配置
关闭内存节能,同时降低内存延迟
UMC Common Options → DDR4 Common Options → DRAM Controller Configuration → DRAM Power Options → Power Down Enable = Disabled
性能设为P0
NBIO Common Options → SMU Common Options → APBDIS = 1
NBIO Common Options → SMU Common Options → Fixed SOC Pstate = P0
电源场景
NBIO Common Options → SMU Common Options → Determinism Control = Manual
NBIO Common Options → SMU Common Options → Determinism Slider = Power
设为 Power 能达到极限性能,设为 Performance 达到标称的最佳性能。同样需要先将Detetminism Control = Manual 设置后才能选择 Slider = Power
关闭CC6,仅保留C0和C1
kernel启动参数:processor.max_cstate=1
调整cTDP 和 PPL
CPU Common Options → Global C-state Control = Enabled
NBIO Common Options → SMU Common Options → cTDP Control = Manual
NBIO Common Options → SMU Common Options → cTDP = 参考具体CPU型号
NBIO Common Options → SMU Common Options → Package Power Limit Control = Manual
NBIO Common Options → SMU Common Options → Package Power Limit = 参考具体CPU型号
05 总结
毋庸置疑,服务器性能评测与优化是一个极具挑战的,涉及服务器硬件、操作系统以及业务应用等多个方向的系统工程。本文的内容偏向硬件基础计算性能的优化,无论是BIOS配置,还是内存和电源管理的功能,大多是服务器与CPU厂商能提供的服务选择。更多的通过选择正确的性能评估工具评估不同选项、配置的性能影响,选择合适的、有效的优化组合以准确评估服务器硬件性能。限于篇幅内存与调度延迟、CPU功耗等指标评估未展开讨论,而针对操作系统与内核、以及各个业务场景性能优化,则有着更多深入挖掘的空间,以后有机会希望能进一步跟大家分享学习。
囿于能力和眼界,本文只是一些较为粗浅的基础优化建议,恐怕也存在诸多疏漏。希望点开链接的各位能不吝赐教,各抒己见,深入探讨,共同进步。
以上是今天的分享内容,如果你有什么想法或疑问,欢迎大家在留言区与我们互动,如果喜欢本期内容的话,请给我们点个赞吧!
参考资料:
[1]《计算机体系结构基础》
[2] SPEC CPU 2017,https://www.spec.org/cpu2017
[3] STREAM:memory bandwidth benchmark,https://www.cs.virginia.edu/stream/ref.html
[4] Linux Kernel Documentation,https://docs.kernel.org
[5]《Overview of AMD EPYC 7003 Series Processor Microarchitecture》
[6]《性能之巅(第2版)——系统、企业与云可观测性》