本网站相关文章:

现代计算机 CPU 体系

在现在计算机体系中, 一个”中央”处理器单元的观念是过时的或者误导的. 为了提升性能, 大部分的现在计算机系统都采用了多个处理器的拓扑结构, 不同的”系统拓扑”应用于不同的环境, 从而产生不一样的效果.

目前商用 cpu 结构类型:

  • NUMA(Non-uniform Memory Access, 非一致性存储访问结构)
  • UMA(Uniform Memory Access, 一致性存储访问结构)

由上述两种类型衍生的商用 CPU 架构:

  • 基于 UMA 的 SMP(Symmetric Multi-Processor, 对称多处理系统, 一致性存储访问)
  • 基于 NUMA 的 SMP 架构(对称多处理系统, 非一致性存储访问)
  • 基于 NUMA 的 MPP 架构(Massive Parallel Processing, 海量并行处理结构)

单芯片的 CPU 架构:

  • 基于 SMP 的 CMP(单芯片多处理器)
  • SMT(同步多线程, 在 Intel 中称为 Hyper-threading)

SMP(UMA)

2. 1 Intro

一致性存储访问的对称处理系统: 所有的 CPU 共享所有的资源(PCI, Mem, IO 等), 多个 CPU 之间没有任何区别, 大家平等的访问内存, 外设, kernel. 所有 CPU 之间共享内存子系统以及总线结构.

![smp](https://image. unusebamboo. top/blog/smp. png)

2. 2 对称多处理结构

Multi-processor 对称, 无主次关系, 每一个 CPU 访问内存的任何地址的时间都是一样的, 故称为 UMA(一致性存储访问);
Multi-processor 对称, 系统资源被所有 CPU 共享, 工作负载均匀的分配所有的可用处理上, 例如双 CPU 系统.
Multi-processor 对称, 应用级别的程序设计仍旧人为系统仅仅存在一个 CPU, 程序改动较少.

2. 3 扩展

SMP 服务器的扩展方式:

  • 增加内存
  • 使用更快的 CPU
  • 增加 CPU 数量
  • 扩充 IO
  • 更多的外部设备(磁盘存储等)

但是考虑到资源共享产生的竞争冲突问题, SMP 服务器对 CPU 利用率最好的情况是 2~4 个 CPU, 少数为 16 个 CPU, 很难会达到 100 个处理器之上.
SMP 在专业制作, 例如 3DMax Studio, Photoshop 等软件应用中有非常棒的体验, 无需改动软件本身, 又能在一定的范围内提升整体的运行性能, 特别是对 CPU 密集型的图形软件领域. 注意, SMP 中的也存在类似 socket/core 的关系, 具体见 3. 3 节的内容.

基于 NUMA 的 SMP

3. 1 Intro

非一致性存储访问的对称处理系统: 多个 CPU 模块(NUMA node), 每一个模块就相当于一个 node, 每一个 node 由一个或者多个 socket(插槽)组成, 拥有独立的本地内存, IO 插槽等.
node 之间通过互联模块(Crossbar Switch)进行连接和信息交互, 保证每一个 CPU 都可以访问整个系统内存(NUMA 和 MPP 区别). node 访问其他 node 的系统内存相当于访问其他类的变量, 需要额外的开销.

![numa](https://image. unusebamboo. top/blog/numa. png)

  1. 非一致性内存访问: 访问本地内存的速度将远远高于访问其他 node 的系统内存速度, 应该尽可能少的不同 node 之间的信息交互.
  2. Numa/socket/core 的关系:
  • 一个 Numa node 包含一个或者多个 socket, 以及相连的 local memory(本地内存, IO, 资源)
  • 一个 socket 插槽中包含多个 core;
  • 一个 core 可以变成两个Logical Processor 逻辑进程, 其中 LP 只有 os 能够看到;
  1. 角色说明:
  • socket/packet: 插槽, 将多个 cpu 封装在一起称为一个 socket;
  • Core: socket 中的每一个核心 CPU 并称为 core
  • HT: Hyper Threading, 超线程技术, 如果一个 core 使用 HT, 则 OS 会认为是两个 core, 此时逻辑 core 称为 Processor;
  • Processor: 开启 HT 后的逻辑 core

3. 2 性能提升

优点:解决了 SMP 服务器无法大规模扩展 CPU 的问题;
缺点:访问远端内存的低速, 导致 CPU 数量增加时, 系统性能无法线性增加

MMP

非一致性存储访问的海量并行处理系统: 多个 SMP 服务器通过一定的节点互联网络进行连接, 协同工作, 完成相同的任务, 其他每一个 SMP 服务器称为一个 node_data 节点. 每一个 node_data 只能访问本地资源, 不存在访问远端内存的方式, 一种完全无共享结构;

![mmp](https://image. unusebamboo. top/blog/mmp. gif)

  1. 数据重分配
    node_data通过专用网络或者商业通用网络进行数据交互, 协同计算. node_data有独立的磁盘存储系统, 内存系统;

  2. 整体调度: MMP 服务器需要一种复杂的机制来调度和平衡各个节点的负载和并行处理过程.

  • 基于 MMP 技术的服务器往往通过系统级软件 ( 如数据库 ) 来屏蔽这种复杂性, 从而确保对外提供一个整体的服务.
  • 基于 MMP 技术的非共享数据库集群具有完全的可伸缩性, 高可用, 高性能, 优秀的性价比优势.

对比

5. 1 NUMA, MPP, SMP 区别

  • NUMA 的节点互联机制是在同一个物理服务器内部实现的, 当某个 CPU 需要进行远地内存访问时, 它必须等待, 这也是 NUMA 服务器无法实现 CPU 增加时性能线性扩展的原因.
  • MPP 的节点互联机制是在不同的 SMP 服务器外部通过 I/O 实现的, 每个节点只访问本地内存和存储, 节点之间的信息交互与节点本身的处理是并行进行的. 因此 MPP 在增加节点时性能基本上可以实现线性扩展.
  • SMP 内部的所有的 CPU 资源是共享的, 因此完全实现线性扩展.

5. 2 NUMA, MPP, SMP 扩展

  • NUMA 理论上可以无限扩展, 目前技术比较成熟的能够支持上百个 CPU 进行扩展. 如 HP 的 SUPERDOME.
  • MPP 理论上也可以实现无限扩展, 目前技术比较成熟的能够支持 512 个节点, 数千个 CPU 进行扩展.
  • SMP 扩展能力很差, 目前 2 个到 4 个 CPU 的利用率最好, 但是 IBM 的 BOOK 技术, 能够将 CPU 扩展到 8 个.

注意 MPP 是由多个 SMP 构成, 多个 SMP 服务器通过一定的节点互联网络进行连接, 协同工作, 完成相同的任务.

5. 3 MPP 和 SMP, NUMA 区别

MPP(海量并行处理)的优势: MPP 系统不共享资源, 因此对它而言, 资源比 SMP 要多, 当需要处理的事务达到一定规模时, MPP 的效率要比 SMP 好. 由于 MPP 系统因为要在不同处理单元之间传送信息, 在通讯时间少的时候, 那 MPP 系统可以充分发挥资源的优势, 达到高效率. 也就是说:操作相互之间没有什么关系, 处理单元之间需要进行的通信比较少, 那采用 MPP 系统就要好. 因此, MPP 系统在决策支持和数据挖掘方面显示了优势.

SMP(对称处理)的优势: MPP 系统因为要在不同处理单元之间传送信息, 所以它的效率要比 SMP 要差一点. 在通讯时间多的时候, 那 MPP 系统可以充分发挥资源的优势. 因此当前使用的 OTLP 程序中, 用户访问一个中心数据库, 如果采用 SMP 系统结构, 它的效率要比采用 MPP 结构要快得多.

NUMA(非一致性内存存储访问)架构的优势: NUMA 架构来看, 它可以在一个物理服务器内集成许多 CPU, 使系统具有较高的事务处理能力, 由于远地内存访问时延远长于本地内存访问, 因此需要尽量减少不同 CPU 模块之间的数据交互. 显然, NUMA 架构更适用于 OLTP 事务处理环境, 当用于数据仓库环境时, 由于大量复杂的数据处理必然导致大量的数据交互, 将使 CPU 的利用率大大降低.

CMP

单芯片多处理器 Chip multiprocessors. 这是 SMP(对称处理系统)架构下的一种具体的实现方式, 将大规模的并行处理器集成到一个芯片中, 其中各个处理器的执行流程类似 SMP 结构.

优势: 将多个处理器集成到一个芯片上, 以独立的更小基本结构单元来处理独立的数据, 更加利于扩展. 将大规模并行处理器中的 SMP 集成到同一个物理芯片中, 各个 cores 并行执行不同的进程, 单核设计简单, 利于优化, 其本身可以通过 affinity 绑定来实现.

SMT

同时多线程 Simultaneous multithreading. 复制 CPU 处理器上的结构状态, 让同一个处理器上的多个线程同步执行并共享处理器的执行资源, 提高处理器运算部件的利用率.

其优势:

  • 多线程技术以最小的改动(小规模改动处理器核心设计), 从而显著的提升性能, 以准备更多的准备数据, 减少运算核心的闲置时间.
  • 多线程技术在桌面底端系统中具有相当大的吸引力, 从 Intel 3. 6GHZ 开始, 所有的 Intel 都支持 SMT 技术.
  • 多线程技术在 Intel 处理器中被称为 Hyper-threading, 即 Two-thread SMT.

Database

8. 1 Introduction

数据库架构会基于不同的 CPU 框架进行不同的设计, 主要分类三类:

  • Shared Everthting: 一般针对单个主机, 完全透明共享 CPU/MEM/IO, 并行处理能力最差, 例如 SQL Server
  • Shared Disk: 各个处理单元拥有自己的 CPU/MEM, 共享整个IO, 通过增加节点来提供并行处理, 例如 Oracle
  • Shared Nothing: 各个处理单元有自己的 CPU/MEM/IO, 单元之间通过协议来通信, 并行处理和扩展能力好, 例如 Hadoop

一般而言, Sharding 代表Shared Nothing, 一个表在物理存储上可以被分割并存储在多台服务器上, 具备相同的schema(组织和结构), 增加服务器就能增加处理能力和容量.

8. 2 DB and CPU

Sharded Disk类似 SMP 模式, 当 Memory 接口达到饱和的时候, 增加节点并不能增加性能.
Sharded Nothing类似 MPP 模式.