2.8 高性能计算套件:HCK
操作系统噪声是指业务运行中执行的非应用计算任务,包括:
(1)系统/用户态守护进程。
(2)中断处理。
(3)用户态或内核中驻留的进程。
(4)内存管理、调度开销。
(5)业务应用中的非计算任务,如监控log线程通信等。
(6)资源竞争带来的噪声,如由共享高速缓存导致的高速缓存不命中(Cache Miss),以及由共享物理内存导致的页面错误(Page Fault)。
HPC业务的特征大部分符合BSP模型。如图2-11所示,操作系统噪声会影响均衡切分的子任务在做数据同步之前的执行时间,导致子任务结束不同步的问题,早结束的任务需要等待其他子任务都完成后,才能再执行同步操作,因而降低并发性能,浪费算力资源。操作系统噪声的长度越大,间隔越短,对应用的性能影响越大;计算节点数目越多,性能衰减越明显。
图2-11 系统噪声导致任务不同步
HCK(High-performance Computing Kit,高性能计算套件)通过为操作系统提供一些具有竞争力特性的组件,来支持HPC业务性能的优化和提升。HCK在Linux内核中实现了一系列噪声消减技术,在保持应用生态兼容的同时,降低了操作系统噪声对应用可扩展性的影响。
HCK技术的实现包括如下几个方面:
(1)分域管理隔离计算任务和噪声任务,把CPU资源划分为Linux管控域和业务域,将系统任务、中断处理、内核线程等运行在Linux管控域,并将业务运行过程中识别的非计算任务迁移至Linux管控域的CPU核上执行;将业务进程和线程运行于业务域。
(2)降低资源竞争,通过进程级内存隔离和预留降低因内存换出与物理页重新分配而导致的Page Fault,同时使用内存大页降低TLB Miss的概率,进而降低由Page Fault和TLB Miss导致的性能抖动。
(3)感知CPU核、内存的资源拓扑及亲和关系,进程内存隔离预留不跨NUMA,实现业务应用的最优资源配置和数据局部性(Data Locality)。
(4)轻量化的调度系统,因为HPC业务不需要复杂的调度算法和策略,所以使用基础的FIFO和RR调度可以降低非必要的复杂调度开销,提升系统的吞吐量和业务应用的性能稳定性。
(5)兼容Linux HPC集群应用生态,保持HCK syscall层和Linux内核的兼容性,应用不需要修改即可通过HCK用户态加载工具在HCK域中加载运行,同时保持MPI绑核逻辑和现有系统的兼容性,以及应用和现有集群调度器的兼容性。