智算服务异常排查和反馈¶
智算中心提供了多种现有的通用软硬件解决方案,包括 Intel OneAPI 套件、GNU GCC、CUDA、OpenMPI 等等,可驱动多种不同类型应用在同一硬件平台上运行,并为用户提供了编译自定义应用的能力。但由于软件版本环境复杂,且上下游依赖兼容性、可靠性难以100%保证,我们无法确保您的应用具有100%的可用性和准确性。
因此在使用智算集群时,请对自己的数据和结果负责,时常对自己计算的结果抱有怀疑态度,审慎测试,确保可用、可靠后再大规模扩展。
当遇到异常情况时,请遵循以下方案进行排查:
1. 了解问题的背景¶
- 清晰描述问题:记录出错信息、环境配置、操作步骤等。明确是软件层面问题、网络问题还是硬件问题。
- 收集日志和错误信息:如系统日志、应用日志、Slurm作业管理器输出等。
2. 常见系统问题排查¶
- 检查资源使用情况:利用
top
、htop
、free
等命令查看CPU、内存、I/O使用情况。 - 存储空间不足:检查文件系统空间(如
df -h
),或是否存在太多小文件(可以影响I/O性能)。 - 网络问题:使用
ping
或traceroute
测试网络连通性。确认是否有丢包或高延迟。
3. 作业提交与调度问题¶
- 检查调度器状态:确保Slurm作业调度器正常运行,使用
scontrol show
查看作业状态。 - 了解作业排队原因:作业是否因资源不足被推迟?或者调度策略优先级影响?
- 作业输出和错误文件:检查
.out
或.err
等文件,寻找异常信息。
4. 编译和软件问题¶
- 编译问题:
- 确认编译器和库版本是否兼容。
- 确保所有依赖库已正确安装和链接(通过
ldd
检查共享库依赖)。 - 常见编译器选项:检查优化标志(如
O3
)、并行编译标志(如fopenmp
)、调试标志(如g
)等。 - 运行时问题:
- 核实环境变量是否正确设置(如
PATH
、LD_LIBRARY_PATH
等)。 - 验证输入文件格式是否正确。
- 检查软件依赖是否缺失,或权限问题(如无法写入输出文件)。
5. 性能调优¶
- 检查CPU和内存绑定:避免资源竞争(例如:使用
numactl
检查内存和CPU的绑定)。 - I/O瓶颈:排查是否存在I/O密集型任务,可能需要优化存储访问模式。
- 网络和MPI问题:使用
mpirun
或mpiexec
调试多节点任务,检查MPI通信的性能瓶颈。
6. 用户权限和系统设置¶
- 确认用户权限:确保用户对资源(如文件、目录、存储)拥有足够的读写权限。
- 配置文件检查:核实配置文件(如
~/.bash_profile
、~/.bashrc
)中是否有影响作业执行的内容。
7. 高级调试工具¶
- GDB/Valgrind:用于调试崩溃或内存泄漏问题。
- Strace/Ltrace:用于跟踪系统调用和库调用,帮助定位文件访问和权限问题。
8. 咨询支持¶
- 如果经过上述步骤仍未解决问题,用户应及时向智算中心技术人员或开发团队提交 详细的故障报告,包括:
- 环境信息(系统、编译器版本等)
- 错误日志(尽可能详尽的上下文报错信息等)
- 复现步骤(提交脚本、可复现的测试样例等)