Donau集群作业调试技巧如何启用SLURM_TO_DONAU_DEBUG日志【免费下载链接】donau-slurm-wrappersdonau-slurm-wrappers provide some scripts for Slurm Users to submit and manage jobs in Donau cluster environment项目地址: https://gitcode.com/openeuler/donau-slurm-wrappers前往项目官网免费下载https://ar.openeuler.org/ar/在Donau集群环境中使用slurm风格的作业管理工具时调试作业提交和管理过程中的问题可能会让新手感到困惑。 今天我将为您详细介绍如何通过启用SLURM_TO_DONAU_DEBUG日志功能快速定位和解决作业提交问题让您的集群使用体验更加顺畅 什么是SLURM_TO_DONAU_DEBUG日志SLURM_TO_DONAU_DEBUG是donau-slurm-wrappers项目提供的一个强大的调试功能。这个环境变量允许用户在运行slurm风格的命令如srun、sbatch、scancel等时自动生成详细的调试日志文件。这些日志记录了命令执行的每一步包括参数解析、环境变量处理、命令转换以及可能出现的错误信息。 核心功能亮点实时调试在命令执行时即时记录调试信息问题定位帮助快速找到作业提交失败的原因详细记录包含参数转换、环境变量处理等完整信息多命令支持适用于所有slurm风格的包装命令 如何启用调试日志启用SLURM_TO_DONAU_DEBUG日志非常简单只需设置一个环境变量即可。以下是具体的启用方法方法一临时启用单次会话export SLURM_TO_DONAU_DEBUGtrue srun -n 1 -t 10 echo Hello, Donau!方法二永久启用添加到配置文件如果您希望在所有会话中都启用调试功能可以将环境变量设置添加到您的shell配置文件中# 编辑 ~/.bashrc 或 ~/.bash_profile echo export SLURM_TO_DONAU_DEBUGtrue ~/.bashrc source ~/.bashrc方法三特定命令启用您也可以为单个命令启用调试SLURM_TO_DONAU_DEBUGtrue sbatch myjob.sh 日志文件的位置和格式启用调试功能后系统会在/tmp目录下为每个执行的命令生成独立的日志文件。文件的命名格式为命令名.用户ID.进程ID例如srun.1001.12345- srun命令的调试日志sbatch.1001.23456- sbatch命令的调试日志scancel.1001.34567- scancel命令的调试日志日志文件示例让我们看一下典型的日志内容结构srun: invalid option --wrong-option Try srun --help for more information Permission denied. The root user is not allowed to operate. 调试日志的实际应用场景场景一参数解析错误当您遇到参数错误时调试日志会详细记录哪个参数出了问题# 错误示例 export SLURM_TO_DONAU_DEBUGtrue srun --wrong-option -n 1 echo test # 日志文件会显示 # srun: invalid option --wrong-option # Try srun --help for more information场景二权限问题调试如果遇到权限问题日志会明确指出# 以root用户执行不允许 sudo srun -n 1 echo test # 日志显示 # Permission denied. The root user is not allowed to operate.场景三环境变量问题调试日志会记录环境变量的处理过程export SLURM_TO_DONAU_DEBUGtrue export SRUN_CPUS_PER_TASKinvalid srun -n 1 echo test # 日志显示参数验证失败信息 项目文件结构解析为了更好地理解调试功能让我们了解一下相关脚本的位置主要命令脚本位于cmd/目录下srun - 提交阻塞式作业sbatch - 提交脚本作业scancel - 终止作业squeue - 查询作业状态sinfo - 查询节点信息scontrol - 控制作业状态sacct - 查询作业记账信息调试功能实现原理每个脚本都包含相似的调试功能实现。以srun脚本为例关键代码如下def init_config_with_env(): global is_debug if os.getenv(SLURM_TO_DONAU_DEBUG) is not None \ and os.getenv(SLURM_TO_DONAU_DEBUG).lower() true: is_debug True init_log_file_name() def init_log_file_name(): global log_file file_name %s.%d.%d % (srun, os.getuid(), os.getpid()) log_file os.path.join(/tmp/, file_name) def log(content): global is_debug if is_debug: global log_file f open(log_file, a) f.write(content \n) f.close()️ 实用调试技巧技巧一批量清理日志文件调试日志不会自动删除您可能需要定期清理# 查找并删除所有调试日志 find /tmp -name srun.* -type f -delete find /tmp -name sbatch.* -type f -delete find /tmp -name scancel.* -type f -delete技巧二实时监控日志您可以在另一个终端中实时查看日志输出# 在一个终端执行命令 export SLURM_TO_DONAU_DEBUGtrue srun -n 1 -t 10 echo test # 在另一个终端查看日志 tail -f /tmp/srun.*技巧三组合使用环境变量SLURM_TO_DONAU_DEBUG可以与其他环境变量组合使用# 同时启用调试和设置其他参数 export SLURM_TO_DONAU_DEBUGtrue export SRUN_CPUS_PER_TASK2 srun -n 1 -J debug_job echo testing 高级调试策略策略一逐步调试复杂作业对于复杂的作业提交建议逐步启用调试先验证基本命令export SLURM_TO_DONAU_DEBUGtrue srun --help逐步添加参数srun -n 1 echo simple test srun -n 1 -t 10 echo with time limit srun -n 1 -t 10 -c 2 echo with CPU limit策略二对比正常与异常情况当作业失败时对比正常和异常的日志# 正常情况 export SLURM_TO_DONAU_DEBUGtrue srun -n 1 echo success # 异常情况 export SLURM_TO_DONAU_DEBUGtrue srun --invalid-param -n 1 echo fail策略三集成到脚本中您可以将调试功能集成到作业脚本中#!/bin/bash #SBATCH -J debug_job #SBATCH -n 1 #SBATCH -t 10 # 启用调试 export SLURM_TO_DONAU_DEBUGtrue # 您的作业命令 echo Starting debug job at $(date) # ... 其他命令⚠️ 注意事项和最佳实践注意事项日志文件管理调试日志不会自动删除需要定期清理性能影响启用调试会轻微影响命令执行速度磁盘空间长时间运行可能产生大量日志文件安全考虑日志文件包含执行信息注意权限设置最佳实践按需启用只在需要调试时启用避免生产环境长期开启及时清理调试完成后及时删除日志文件备份重要日志对于重要问题的调试日志建议备份分析组合调试结合系统日志和应用程序日志进行综合分析 调试流程总结以下是推荐的调试流程 结语通过SLURM_TO_DONAU_DEBUG日志功能您可以快速定位和解决Donau集群中的作业提交问题。这个强大的调试工具为新手和普通用户提供了简单有效的故障排除方法。记住调试的关键在于系统性分析 - 从启用日志、重现问题、分析日志到解决问题每一步都至关重要。现在您已经掌握了Donau集群作业调试的核心技巧 下次遇到作业问题时不妨启用SLURM_TO_DONAU_DEBUG日志让调试变得更加轻松高效。祝您在Donau集群上的工作顺利✨提示更多详细信息和高级用法请参考项目文档和实际脚本实现。【免费下载链接】donau-slurm-wrappersdonau-slurm-wrappers provide some scripts for Slurm Users to submit and manage jobs in Donau cluster environment项目地址: https://gitcode.com/openeuler/donau-slurm-wrappers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考