架构师之路 - 服务器硬件扫盲

JAVA日知录 一个关注| Java | Spring Boot | Spring Cloud | 干货分享的博客网站 本文由博客端 http://www.javadaily.cn 主动推送
本贴最后更新于 446 天前,其中的信息可能已经事过境迁

很多架构师都是从软件开发成长起来的,大家在软件领域都有很深的造诣,大部分人对硬件接触的很少。而成为架构师后需要频繁的跟人 、硬件 、软件 、网络打交道,本篇文章就给大家带来服务器硬件方面的相关知识,主要包括服务器、CPU、内存、磁盘、网卡。

服务器

根据服务器的外形和使用场景我们将服务器分为以下四种:

主板架构

服务器的机箱只是外壳,核心架构还是主板。

image.png

这个图是 Intel 典型的主板芯片组架构:服务器的主板有个统一的中央芯片组(Intel C600),芯片组可以连接多个 CPU(E5-2400/2600),CPU 之间通过 QPI 快速通道进行连接,CPU 与内存插槽,PCIE 插槽之间连接,芯片组还与低速的外设进行连接(USB、网卡、SATA 等)。

服务器选型考虑因素

做服务选型主要基于以下几个方面:

服务器厂商

CPU

CPU 作为服务器的核心固件,我们主要通过以下几个概念来了解:

以上的这些概念数据可以通过 CPU 的产品规格书中进行详细了解。在服务器上可以通过 lscpu 命令查看 cpu 信息

image.png

上图服务器 CPU 显示有 72 个,是因为有 2 个 Socket,每个 Socket 有 18 核而每核可以同时运行 2 个线程,通过 2 x 18 x 2 = 72 得到。

厂商

主流产品介绍

Intel 系列

Intel 现在主推的是“Intel 至强可扩展”系列,在这个系列下又分为四档:铂金、金、银、铜,每档下面又有不同的型号

image.png

AMD 系列

AMD 系列主要用到的是霄龙系列,霄龙系列 CPU 核数很高,下面我们看看几款具体的产品

型号 CPU 核心数 线程数量 最大加速时钟频率 基准时钟频率 默认 TDP/TDP
霄龙 7742 64 128 高达 3.4GHZ 2.25GHZ 225W
霄龙 7702 64 128 高达 3.35GHZ 2GHZ 200W
霄龙 7702P 64 128 高达 3.4GHZ 2GHZ 200W
霄龙 7642 48 96 高达 3.35GHZ 2.3GHZ 225W
霄龙 7552 48 96 高达 3.3GHZ 2.2GHZ 200W
霄龙 7542 32 64 高达 3.4GHZ 2.9GHZ 225W

华为鲲鹏系列

鲲鹏 916(低功耗级)

鲲鹏 920-3326/4826(极致效能型)

鲲鹏 920-3326/4826(极致性能级)

主流 CPU 型号性能横向对比

image.png

通过上图大家可以看到国产 CPU 与国外 CPU 之间的差距,性能基本只有 Intel 中档 CPU 性能的一半左右,国产 CPU 还有很长的路要走。

NUMA

NUMA 即 Non-Uiform Memory Access(非一致性内存访问),结合我们之前讲述的主板架构,两颗 CPU 之间有一个通道,每个 CPU 与各自的内存通道进行直连,可以通过下图直观看出。

image.png

CPU0 访问 左边的内存通道速度很快,CPU1 访问右边的内存通道也很快,当 CPU1 要访问左边的内存通道必须要借助 CPU0 的帮忙,需要先通过 QPI 总线找到 CPU0,再来访问左边的内存通道,这就产生了额外的开销,访问左边内存通道的开销相当于直连访问右边通道开销的 3 倍。

所以对于计算密集型任务我们需要尽量避免这种跨 CPU 的内存访问,这就是 NUMA 的问题,非一致性指的是访问本地和跨 CPU 访问的代价差别不一致

我们可以通过指令 numactl -s 查看 numa 的信息

image.png

可以使用指令 numactl --cpunodebind=0 --membind=0 command 指定进程使用的 numa 节点和内存

如上就是让 command 指令只使用 cpu0 ,和内存 0,这就使得进程指令在运行的时候使用的 CPU 和内存在同一侧,达到计算性能速度最大化的效果。

内存

内存大家平时工作中接触的都比较多,对于内存我们主要通过以下几个方面来了解:

了解内存信息

主要通过以下三个命令全面了解内存信息

image.png

image.png

将内存插入主板时一般需要对称插入,通过上图我们可以看到下面有根内存不工作。

image.png

系统剩余内存 available 是我们最关心的一个值,不要被 free 列唬住了。

磁盘

对于磁盘我们主要通过吞吐率和 IOPS 两个指标来对其衡量

吞吐率/吞吐量:单位时间内读写的数据量

IOPS:每秒 IO 操作的次数

为什么很多性能比较慢的服务在软件层面进行优化收益很小,而更换一块固态硬盘就能解决所有问题,问题就在这里。

普通固态硬盘的吞吐率大概为机械硬盘的 23 倍,而 IOPS 确达到了机械硬盘的 250300 倍。

IOPS 和数据吞吐量适用于不同的场合:

在随机读写频繁的应用中,如 OLTP(Online Transaction Processing),IOPS 是关键衡量指标。

对于大量顺序读写的应用,则更关注吞吐量指标。

读取 10000 个 1KB 文件,用时 10 秒 Throught(吞吐量)=1MB/s ,IOPS=1000 追求 IOPS
读取 1 个 10MB 文件,用时 0.2 秒 Throught(吞吐量)=50MB/s, IOPS=5 追求吞吐量

网卡

网卡,又称网络适配器或网络接口卡,英文名为 Network Interface Card。在网络中,如果有一台计算机没有网卡,那么这台计算机将不能和其他计算机通信,它将得不到服务器所提供的任何服务了。当然如果没有网卡,就称不上服务器了,所以说网卡是服务器必备的设备,就像普通 PC(个人电脑)要配处理器一样。

我们也可以也通过以下几个维度来了解下网卡:

网卡速度规格
100M、1G、10G、25G

网卡接口类型
RJ45(电、短距离)、光纤(光、长距离)

网卡绑定模式

多网卡绑定一方面能够提高网络吞吐量,另一方面也可以增强网络高可用。
从软件的角度来看,多网卡绑定实际上只需要提供一个额外的 bond 驱动程序即可,通过该虚拟网卡驱动程序可以将实际多块网卡屏蔽,对 TCP/IP 协议层而言只存在一个 Bond 网卡。Linux 主要有 7 种绑定模式:

小结

本文给大家介绍了服务器硬件的基础知识,只有对硬件有了全面的认识和了解我们才能在硬件选型时做到心中有沟壑,可以针对各个组件的特点选取合适的硬件来支撑其运行。

  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    133 引用 • 440 回帖
1 操作
jianzh5 在 2020-09-07 15:02:36 更新了该帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...