CMG 软件安装配置建议旨在优化软件性能,涵盖 BIOS/UEFI、操作系统、环境变量、硬件等多方面设置。合理配置可提升计算效率,但因硬件、操作系统和网络环境差异,建议在新环境中测试调整,以达最佳效果。
BIOS/UEFI 设置
- 选择最佳性能默认配置
- 多数制造商提供 “最佳性能” 默认配置文件,此配置经优化,可提升系统整体性能。在 BIOS 中启用该配置,能为 CMG 软件运行奠定良好基础。如戴尔系统中的 “MemOpMode” 设置为 “OptimizerMode”,可优化内存使用效率,使内存资源分配更合理,提升数据读写速度。若需更多 BIOS 设置细节,应直接联系制造商获取精准信息。
- 禁用节点交错(开启 NUMA)
- NUMA(Non-Uniform Memory Access,非统一内存访问)是一种计算机内存设计架构,用于多处理器系统。在该架构下,处理器访问本地内存(与处理器物理位置更近的内存)速度比访问非本地内存(其他处理器的本地内存或共享内存)更快。对于旧(英特尔)处理器,相关设置名称可能多样,但要确保 NUMA 功能开启且节点交错设置禁用,具体设置名称和细节需参考硬件制造商文档。启用 NUMA 后,系统可自动追踪并利用本地内存的快速访问特性,从而提升性能。
- 调整 Sub NUMA 设置(可选)
- 现代英特尔和 AMD 处理器(如 Ice Lake 和 Milan)具备 Sub NUMA 设置功能,该功能可控制处理器内核心组的处理方式。建议将其禁用,这样每个处理器会被视为单个 NUMA 节点。例如在双插槽系统中,会形成两个 NUMA 节点,有助于系统更高效地管理内存和核心资源,避免因复杂的 Sub NUMA 设置导致性能下降56。
- 启用超线程(除 Windows 外)
- 超线程技术可使一个物理核心模拟出两个逻辑核心,并行处理任务,理论上可提升处理器多任务处理能力。此前版本多建议禁用超线程,但现在除 Windows 机器外无需禁用。在 Linux 系统中,默认行为是不使用超线程,除非使用命令行选项‘-htuse’或相关关键字(如 GEM 模拟器中的 * HTUSE *ON)来手动启用。当机器物理核心和超线程核心总数超过 64 时,强烈推荐使用 Linux_x64 可执行文件,因为在众多 Windows OS 变体中,超过 64 核心后,线程亲和性(affinity)设置效果不佳。超线程对性能的影响受多种因素影响,包括处理器类型、硬件配置和每个节点调度的作业数量等,必要时可咨询 IT 部门或 CMG 支持团队获取更多指导。
- 启用 Turbo Boost
- Turbo Boost(睿频加速技术)允许处理器在操作系统请求且满足一定条件(如活动核心数、功耗和温度限制)时,以高于基本频率的时钟速率运行,从而在短时间内提升处理器性能,更快地完成计算任务,尤其适用于对计算资源需求突发增长的场景。
Turbo Boost(睿频加速技术)是Intel推出的一项技术,它允许处理器在需要时自动提高其核心的时钟频率,以提供更高的性能。当处理器没有达到其最大功率和热设计点时,Turbo Boost会暂时增加核心的频率,从而加速任务的执行。这种频率提升是动态的,基于当前的工作负载和处理器的功耗状态。Turbo Boost旨在优化性能和功耗之间的平衡,使处理器在需要时运行得更快,而在不需要时则保持较低的功耗。
- 选择合适的 Snoop Mode
- 在多插槽机器上,Snoop Mode(窥探模式)设置决定处理器如何监控其他处理器缓存行中内存的变化。推荐使用 “Opportunistic Snoop”(机会性窥探)模式,该模式有助于优化内存一致性管理,对 CMG 软件性能有重要影响。同时,注意其他相关设置(如 C-State 和 Monitor/MWait)可能因实现方式不同而影响性能,C-State 用于控制处理器的电源状态,Monitor/MWait 指令用于实现线程的等待和唤醒机制,应参考供应商最佳实践建议进行优化,以确保处理器在性能和功耗之间达到最佳平衡。
操作系统优化
- 整体提升操作系统性能的操作(如禁用不必要进程)有助于提高 CMG 软件性能。性能调优需谨慎跟踪和测试,因涉及硬件、操作系统版本和网络环境等众多变量,CMG 无法提供具体建议。可参考相关操作系统的性能调优指南,如 “Performance Tuning Guidelines for Windows Server” 或 “RHEL Performance Tuning Guide”。
环境变量设置
- KMP_AFFINITY 设置
- 仅在英特尔和 AMD Milan 处理器上受支持,用于指定操作系统如何将线程绑定到特定核心,以利用本地内存缓存信息。设置方法如下:
第三方调度器?(例如LSF,HPC) | 同时运行的作业数量 | 是否使用所有核心? | 设置 |
是 | 1 | 不适用 | KMP_AFFINITY=compact,1* |
是 | 2+ | 不适用 | KMP_AFFINITY=compact,0 |
否 | 1 | 是 | KMP_AFFINITY=compact,0 |
否 | 1 | 否 | KMP_AFFINITY=compact,1* |
否 | 2+ | 不适用 | 不设置 |
注释:带星号的设置(*)可能表示有特殊考虑或默认推荐设置。
-
- 若在同一机器上运行多个作业且未使用调度软件,需手动调整 KMP_AFFINITY,此场景不推荐。无论超线程是否启用,上述设置建议均适用。该变量设置对性能影响重要,应根据模拟器类型、作业所需核心数和同时运行作业数进行调整。
- OMP_SCHEDULE 设置:对 IMEX 和 STARS 模拟器,设置为 “OMP_SCHEDULE=static,1”,以影响程序内循环执行。GEM 模拟器内部管理该设置,无需手动配置。在某些情况下(如 Ice Lake 和 Milan 处理器上的特定作业),不设置该变量可能提高运行时间,具体取决于硬件和作业特性。
硬件配置建议
- CPU 选择:CMG 软件对 CPU 要求高,推荐选择时钟速度和缓存组合最佳的 CPU。最佳核心数取决于作业类型、用户数量、许可证等因素,建议与 CMG 销售团队沟通确定。双插槽节点上,英特尔 Ice Lake Xeon Gold 6338 和 AMD Milan EPYC 7513 处理器性能良好,均有 32 个核心 / 处理器,共 64 个核心 / 服务器。运行单个作业时,Ice Lake 倾向于更快;同时运行多个作业时,使用 “KMP_AFFINITY=compact,0; OMP_SCHEDULE=static,1” 设置,Ice Lake 在 IMEX 作业(运行时间 200 秒或更长)上也倾向于比 Milan 更快1516。
- 内存配置:内存速度是影响 CMG 性能的重要因素,应选择硬件供应商提供的最快速度内存。避免使用 “低压” RAM,因其可能导致性能显著下降。对于 Ice Lake 和 Milan 处理器,推荐 8 DIMMs/CPU 配置以达最佳性能,低于 6 DIMMs / 通道时速度下降。可使用如 CPU-Z 等工具确认内存速度。将页面文件设置为固定大小,可减少管理开销并防止碎片化1718。
- 磁盘和存储优化
- 一般情况下,磁盘 I/O 不是 CMG 软件的瓶颈,但可使用性能监测工具(如 Windows 中的 Perfmon 或 Linux 中的 iotop)测试是否影响性能。
- 对于网络附属存储(NAS),可通过以下方式提高性能:
- 确保设备专用于高性能文件访问,禁用不必要功能或协议(如压缩、重复数据删除、日志记录、快照或其他计划任务)。
- 使用仅用于 HPC 节点的高速链路(10GB 或更高)。
- 考虑增加内存并使用高端处理器,某些文件系统至少需要 16GB 内存,添加内存或 SSD 缓存可提高 NAS 性能。
- 在计算节点上使用本地磁盘测试作业性能,并与在 NAS 上运行的相同作业进行比较,查看性能是否下降。
网络附属存储(NAS)
-
- 功能精简与专用设置:确保 NAS 设备专用于高性能文件访问,禁用不必要功能或协议,如压缩、重复数据删除、日志记录、快照或其他计划任务。这些功能虽在特定场景有其价值,但在追求 CMG 软件高性能运行时,可能消耗大量系统资源,从而影响文件访问速度。例如,压缩功能需要额外的计算资源来处理数据压缩和解压缩操作,若 CMG 软件对文件访问速度要求极高,关闭压缩功能可释放更多资源用于文件传输。
- 高速链路连接:使用仅用于 HPC 节点的高速链路(10GB 或更高),高速链路能提供更大的数据传输带宽,显著减少数据传输延迟,确保 CMG 软件与 NAS 之间的数据快速交换。在大规模数据传输场景下,如 CMG 软件处理海量模拟数据时,高速链路可使数据快速在存储设备和计算节点间流动,避免因链路速度慢导致的性能瓶颈。
- 硬件升级增强:考虑增加内存并使用高端处理器,部分文件系统至少需要 16GB 内存,添加内存可扩充文件系统缓存,提高数据读取命中率;高端处理器则能加快数据处理速度。此外,添加内存或 SSD 缓存可进一步提高 NAS 性能,SSD 缓存可加速频繁访问数据的读取速度。例如,在处理复杂模拟任务时,充足的内存可使 NAS 更快地响应数据请求,SSD 缓存可减少对传统硬盘的访问次数,从而提升整体性能。
- 性能对比测试:在计算节点上使用本地磁盘测试作业性能,并与在 NAS 上运行的相同作业进行比较,查看性能是否下降。以此判断 NAS 配置是否满足 CMG 软件运行需求。若发现性能下降,可进一步分析原因,如网络配置、NAS 参数设置等,针对性地进行优化调整。
KMP_AFFINITY 相关补充说明
-
- 并发作业核心竞争问题:当 CMG 模拟器作业在无作业调度器的情况下运行且设置了 KMP_AFFINITY 环境变量时,可能出现并发作业竞争相同核心的情况。例如,若 KMP_AFFINITY 设置为 compact,0 且无作业调度器,同时运行两个并发作业时,两个作业都会从第一个插槽的核心 0 开始启动。而作业调度器通常能知晓哪些核心可用,会将第一个作业分配到第一个可用核心,第二个作业分配到未被第一个作业占用的第一个核心,从而避免资源过度分配。
- 不同设置示例与影响:以 Nehalem – EX 8 Core, 4 Socket Server(32 Cores)为例,若指定 “KMP_AFFINITY = compact,0” 并使用作业调度器运行四个 8 线程作业,第一个作业将使用第一个插槽的所有核心(8 个),第二个作业使用第二个插槽的所有核心,以此类推。而使用 “KMP_AFFINITY = compact,1” 时,第一个作业的第一个线程将在第一个插槽的核心 0 运行,第一个作业的第二个线程将在第二个插槽的核心 0 运行,依此类推。这种设置会导致内存流量在插槽间频繁交换,影响性能,一般不推荐,但在某些允许超频(turbo 模式)的系统中,对于单个作业可能是优化内存使用的最佳设置。
- 推荐配置与变量重要性:推荐在集群的所有节点上设置 “KMP_AFFINITY = compact,0”,并始终使用 HPC 作业调度器运行 CMG。此变量设置因现代多核系统的发展而愈发重要,其合适的设置取决于模拟器类型、作业所需核心数以及系统同时运行的作业数量等因素,需要根据具体情况进行调整和优化。
超线程推荐补充说明
-
- 设置调整与默认行为变化:2018.10 之前版本建议禁用超线程,现在情况有所不同。在 Linux 系统中,默认行为是不使用超线程,除非使用命令行选项‘-htuse’。对于 GEM 模拟器,也可在数据文件中使用关键字 * HTUSE *ON 来启用超线程。若在双插座 Ice Lake Xeon Gold 6338 或 Milan EPYC 7513 系统上运行单个作业并保留整个服务器资源,使用默认设置可能有益,此时应将 “KMP_AFFINITY” 设置为默认值,并使用 “OMP_PROC_BIND = CLOSE” 或 “OMP_PROC_BIND = SPREAD”(针对较旧 AMD 处理器)。
- 性能测试结果影响:大量使用英特尔处理器的测试表明,不使用超线程时性能更佳,这也是 Linux 系统中模拟器的默认行为,意味着模拟请求的线程数不能超过物理核心数(除非使用‘-htuse’选项)。当机器物理核心和超线程核心总数超过 64 时,强烈推荐使用 Linux_x64 可执行文件,因为在众多 Windows OS 变体中,超过 64 核心后,线程亲和性(affinity)设置效果不佳。超线程对性能的影响取决于处理器类型、硬件配置和每个节点调度的作业数量等因素,建议咨询 IT 部门和 / 或 CMG 支持团队获取进一步指导。
Microsoft HPC 调度软件注意事项
-
- 性能问题与解决方法:在有限测试中,发现 Cascade Lake 类 Xeon 双处理器节点与 Microsoft HPC 2016 调度软件存在性能问题。而 Microsoft HPC 2019 调度软件结合 RHEL 8.4 和 BIOS 更新似乎可解决该问题。在某些情况下,使用 HPC 2016 时,通过为每个插座预留一个核心以处理相关开销问题或进行重启,性能可能会有所改善。在实际应用中,若遇到类似性能问题,可参考这些经验进行排查和优化。