高性能计算
HPC
HPC 是一种技术,它使用并行工作的强大处理器集群,处理海量多维数据集(大数据),并以极高的速度解决复杂问题。 HPC 系统的运行速度通常要比最快的商用台式机、笔记本电脑或服务器系统快一百万倍以上
标准计算系统主要使用串行计算来解决问题,它将工作负载分成一系列任务,然后在同一处理器上依次执行这些任务。
相比之下,HPC 则利用
- 大规模并行计算。 并行计算是在多个计算机服务器或处理器上同时运行多个任务。 大规模并行计算则是使用数万到数百万个处理器或处理器核心的并行计算。
- 计算机集群(也称为 HPC 集群)。 HPC 集群由多个联网的高速计算机服务器组成,并有一个集中式调度器来管理并行计算工作负载。 这些计算机被称为节点,可能会使用高性能多核 CPU,如今更有可能使用 GPU(图形处理单元),它们非常适合处理严格的数学计算、机器学习模型和图形密集型任务。 单个 HPC 集群可能包括 100,000 个或更多节点。
- 高性能组件:HPC 集群中的所有其他计算资源(网络、内存、存储和文件系统)都是高速、高吞吐量、低延迟组件,可以与节点同步,优化集群的计算能力和性能。
程序方面可提高性能的方式有:
- 减少数据拷贝
- 使用缓存
- 提高查表效率(减少总条目(如大页)、哈希、排序、数组、索引等等)
- 硬件 offload(把某些事交给硬件去做)
- “资源池” 的使用(实际上是优化资源的分配环节)
-
减少没必要的等待
-
....
DPDK
(1)绕过内核(Kernel bypass)
- 少了内核处理环节,便于减少数据的拷贝
- 可使用更轻量级的协议栈
(2)轮询收包,而不是中断
中断会强行打断 cpu 当前正在执行的任务,任务被中断然后再恢复,可能会导致重新加载 CPU 缓存,从而影响效率
另外轮询可以每次批量处理多个包,但中断可能每个包都会触发难以优化收包次数
(3)大页
使用大页可以提高 TLB 的查询效率,也就提高了地址翻译的效率
(4)“零拷贝” 理念
在许多数据处理环节可以使用同一段 buffer,从而减少了数据拷贝
(5)dpdk ring
“无锁”队列:实际上是尽量减少资源独占的时间,减少没必要的等待
SPDK
(1)运用了 DPDK 的技术和理念
(2)底层对接了各种存储方式
(3)抽象了存储单位
(4)基于抽象出来的存储块,提供各种上层服务
RDMA
(1)将可靠数据传输的协议栈交由网卡处理(硬件 offload)
(2)减少数据拷贝
与用户程序共用内存,减少数据拷贝