一、为什么要了解计算机硬件
硬件是操作系统和软件运行的基础,Linux 内核运行在硬件之上,负责管理硬件资源并提供服务。程序的性能问题与计算机体系结构密切相关,虽然学习和使用 Linux 不一定非要了解硬件,但了解硬件能帮助我们更好地掌握 Linux 系统。就像房子的地基支撑着整栋建筑一样,硬件对于操作系统和软件至关重要。
二、冯诺依曼体系结构
(一)什么是冯诺依曼体系
冯诺依曼体系是由冯・诺依曼在 20 世纪 40 年代提出的计算机硬件设计原则和架构。计算机主要由运算器、控制器、存储器、输入设备、输出设备这五个部分组成。我们日常使用的大多数现代计算机都采用这种体系结构,比如常见的台式电脑、笔记本电脑等。像键盘、鼠标属于输入设备,能把我们的指令和数据输入到计算机;内存、Cache、SSD、HDD 等属于存储器,用来存储数据和程序;显示器则是输出设备,将计算机处理后的结果展示给我们。
(二)冯诺依曼体系的优劣势
优势:灵活性高,易于实现和扩展,适用于各种不同的应用场景。无论是用于办公的计算机,还是用于科学计算的超级计算机,都能基于这种体系结构来构建。
劣势:计算与存储分离,导致指令执行速度和数据传输速度不匹配。打个比方,就好像一个工厂里,生产车间(运算器)的工作速度很快,但原材料仓库(存储器)送材料的速度跟不上,使得生产效率受到影响。
三、数据中心服务器的多处理器设计与架构
(一)多处理器系统的作用
数据中心的处理器通常有多个 CPU,这样做主要有三个目的。一是提高处理能力,多个 CPU 并行计算,能让数据中心在处理计算密集型任务时性能更强;二是提升可靠性,避免单个处理器故障导致整个系统崩溃;三是提高外设效能,多处理器可以共享电源模块、风扇模块等,降低了硬件资源成本。
(二)SMP 架构
SMP(对称多处理系统)中,每个 CPU 都可以通过系统总线访问共享内存和 I/O 设备,资源对于每个 CPU 都是平等的。但是,随着 CPU 数量增加,内存访问冲突也会增加,就像很多人同时去开一个柜子拿东西,会互相影响效率,最终导致 CPU 效能降低。所以 SMP 系统在 2 - 4 个 CPU 时性能比较好,适合小型服务器。
(三)NUMA 架构
NUMA 架构特点:NUMA(非一致性处理模型)把内存分为本地内存和远程内存,访问本地内存的速度比远程内存快。它没有总线资源竞争的问题,扩展性很好,单服务器内可以配置数十甚至上百个 CPU。不过,由于访问远端内存延时较长,系统性能无法随着 CPU 数量线性扩展。目前,数据中心服务器大多采用 NUMA 架构。
相关概念:在 NUMA 架构中,单个物理 CPU 称为一个 Socket;一般情况下,单个 CPU 只有一个 NUMA,而服务器上多个 CPU 就构成了多 NUMA 结构,但部分 ARM 处理器的单个物理 CPU 上可能包含多个 NUMA 节点;单个 NUMA 节点称为一个 Node。
查看服务器 NUMA 信息:以 Ubuntu 24.10 为例,可以使用 numactl -H 查看服务器 NUMA 信息。也可以不借助工具,通过 cat /proc/cpuinfo | grep -A 10 "physical id"或者 lscpu | grep -A 10 "NUMA node(s):" 这条命令来查看。
root@hk1-133-20-101:/var/log/apt_copy# numactl -H
available: 1 nodes (0) #表示系统中可用的 NUMA 节点数量为 1 个。括号中的 0 是第一个(也是唯一的)NUMA 节点的编号,节点编号从 0 开始。
node 0 cpus: 0 #这表明编号为 0 的 NUMA 节点关联的 CPU 编号是 0。也就是说,系统中的 CPU 0 与这个 NUMA 节点绑定,在该节点上运行的进程访问本地内存会更快。
node 0 size: 1967 MB #指编号为 0 的 NUMA 节点的总内存大小为 1967 兆字节(MB)。这是该节点所拥有的全部物理内存容量。
node 0 free: 825 MB #表示编号为 0 的 NUMA 节点当前的可用内存为 821 兆字节(MB)。这意味着该节点已经使用了 1967 - 821 = 1146 MB 的内存。
node distances: #这是一个分隔行,下面将展示 NUMA 节点之间的距离信息。节点之间的距离反映了从一个节点访问另一个节点的内存所需的相对开销,距离值越小,访问速度越快。
node 0 #只有一个节点(编号为 0)
0: 10 #从节点 0 访问节点 0 的距离为 10。在 NUMA 架构中,节点访问自身内存(即本地内存)的距离是一个基准值,通常用于比较访问其他节点(远程内存)时的相对开销。访问本地内存的距离值通常是最小的,而访问远程内存的距离值会更大。
四、CPU 的性能提升技术
(一)Intel 睿频技术
Intel 睿频技术(Intel Turbo Boost Technology)可以通过分析当前处理器的功率、温度以及规格限制,把部分或全部 CPU 核的运行频率提升到高于处理器额定频率(基频)的值。比如 Intel Xeon Gold 5220R 处理器,它的基础频率是 2.20GHz,最高睿频频率能达到 4.00GHz,这里的最高睿频频率指的是单核最高睿频频率,也就是把处理器上其他核关掉后,单个物理核能达到的最高运行频率。睿频和超频不同,超频是人为提升频率,通常要提高电压,而且会超出处理器规划的参数规格,导致功耗大幅上升;而睿频是处理器智能自主处理,根据实际运行情况动态调整,各项参数都在处理器设计规格内,更安全可靠。
(二)超线程技术
超线程(Hyper - Threading,缩写 HT)是英特尔专有的同时多线程技术。它能在一个物理 CPU 上提供两个逻辑线程的能力,主要用于改进 x86 微处理器执行并行计算的能力。和双核技术不同,双核是两个独立的物理核,有完整的两份计算资源;而超线程是一个物理核划分出两个逻辑核,在 CPU 内部只复制必要的资源,让两个线程能同时执行,模拟实体双核心、双线程运行。不过,双核双线程的性能明显优于单核双线程。
五、Cache(高速缓冲存储器)
(一)Cache 是什么
Cache 中文译为高速缓冲存储器,它位于 CPU 内部,主要用于存储 CPU 频繁访问的数据和指令。当 CPU 需要数据或指令时,如果能在 Cache 中找到,也就是缓存命中,就能有效减少 CPU 访问内存的次数,提高运行效率。Cache 通常由多级缓存组成,每级缓存的容量和速度都不一样,一般分为 L1 Cache、L2 Cache、L3 Cache。
L1 Cache:是与 CPU 核心距离最近、速度最快的缓存。其读写时延非常短,大约在 0.3ns - 0.9ns。这使得 CPU 能在极短时间内获取数据和指令,极大提升了数据读取效率。例如,当 CPU 执行一段频繁调用相同指令集的程序时,L1 Cache 能快速提供这些指令,减少等待时间。
L2 Cache:速度稍慢于 L1 Cache,读写时延大概在 2.8ns 左右。虽然比 L1 Cache 慢,但相较于内存等其他存储设备,速度依然快很多。它作为 L1 Cache 的补充,存储更多 CPU 近期可能用到的数据和指令,进一步提高数据的命中率,减少 CPU 访问内存的频率。
L3 Cache:在三级缓存中,L3 Cache 的容量最大,但速度相对 L1、L2 Cache 较慢,读写时延约为 12.9ns。不过,它能为多个核心共享数据,在多核心 CPU 中发挥着重要作用。当不同核心需要相同数据时,L3 Cache 可以快速提供,避免从内存中重复读取,提升整体性能。
(二)Cache 与资源共享
L1 Cache:分为 L1i Cache(指令缓存)和 L1d Cache(数据缓存),每个逻辑核都有自己独立的 L1 Cache,这样能让每个逻辑核快速获取所需的指令和数据。
L2 Cache:每个物理核独属一个 L2 Cache,并且两个逻辑核共享这个 L2 Cache。
L3 Cache:在 NUMA 架构中,L3 Cache 是由 NUMA 上的所有物理核共享。
(三)Linux 查看 Cache 容量
在 Linux 系统中,可以通过以下两种方法查看 Cache 容量:
方法一:在终端输入 “[root@centos ~]# lscpu | grep "cache:"”,就能看到各级 Cache 的容量信息,例如 :
root@hk1-133-20-101:/var/log/apt_copy# lscpu | grep "cache:"
L1d cache: 32 KiB (1 instance)
L1i cache: 32 KiB (1 instance)
L2 cache: 4 MiB (1 instance)
L3 cache: 16 MiB (1 instance)方法二:使用 “[root@centos ~]# cat /sys/devices/system/cpu/cpu0/cache/index*/size” 命令,也能获取各级 Cache 的容量,输出结果类似:
root@hk1-133-20-101:/var/log/apt_copy# cat /sys/devices/system/cpu/cpu0/cache/index*/size
32K
32K
4096K
16384K六、BMC(基板管理控制器)
(一)BMC 是什么
BMC 的英文全称是 Baseboard Management Controller,即基板管理控制器。它是一种独立于主处理器的嵌入式控制器,通常安装在服务器主板上。BMC 主要负责监控和管理服务器硬件,像处理器、内存、硬盘、电源等硬件设备都在它的管理范围内。同时,BMC 还提供远程管理功能,比如远程控制台,方便我们进行服务器 BIOS 设置、系统安装等操作,不用再亲自跑到机房;还有远程电源控制,在部分需要冷重启的场景中非常实用。
(二)为什么数据中心服务器要有 BMC
数据中心服务器有大容量存储、高性能、高可靠性和可管理性等要求。比如多盘位设置实现大容量存储,多处理器设计保证高性能,双电源设计提升可靠性,而 BMC 则满足了服务器的可管理性需求,对服务器硬件进行全面监控和管理。