openlava是基于LSF早期的开源版本发展而来,openlava-4.0 在2016年后不再更新。
最早接触使用openlava是在2016年,当时面对这样一个集群资源调度软件,手头的参考资料有限。随着对openlava逐渐熟悉,它强大的任务分配和管理给我留下了深刻印象。作为一款开源软件,很自然地想要探究一下它的内部工作原理。中间经历了很多的艰辛曲折,走过不少弯路。
但是收到了用户使用反馈,希望配置文件能和 lsf,openlava保持一致,不要有太大变化,我接受了这个建议,所以新版本命名为 openlava-6.0。
openlava-6.0 在兼容 openlava-4.0 版本所有功能的同时,代码更少,更稳定。其优化过后的函数调用,更方便后期开发。
openlava-4.0 代码行数统计:195197 行
openlava-6.0 代码行数统计:177386 行
openlava-6.0_20230426
主要更新和优化修改如下:
-
简化了配置文件,优化了软件架构。优化了 lsf.cluster,lsf.shared,lsb.hosts 配置文件。
-
重写了底层的数据访问函数,全部更改为双向循环链表。这部分改动比较大,涉及两三百个函数修改。为什么要这样做呢?因为源码的各个子功能模块数据定义近似或重复,函数实现重复。而且代码可维护性差,缺乏统一性。
-
优化了部分底层高频函数,简化了子功能模块的架构,优化了函数之间的相互调用,效率更高。
-
优化了eauth验证模块,更改为直接函数调用,效率更高。
-
优化了 bjob -l 命令,去除了输出折行。
-
添加了 LSB_JOB_REPORT_MAIL 参数,默认不启用。曾经遇到的坑,任务在运行完后会发送邮件通知,sbatchd进程占用率过高压垮系统,导致集群无法响应。
-
4.0版本可以在 V N C、E T X等远程工具中通过"xhost +",“bsub -Is” 启动图形化工具,6.0版本添加了 bsub -XF 图形化交互式功能,丰富了需要使用图形化交互式的场景。
-
修复了bsub -Is 终端交互式,终端窗口大小 80x24 限制问题,更改为当前终端窗口大小。
-
修复了作业内存和swap统计bug,该bug在 openlava 和 LSF 所有版本中都存在。
-
添加了GPU资源调度, 自动维护 CUDA_VISIBLE_DEVICES列表,可在 lsf.conf 配置文件中 LSF_GPU_SCHED=Y 启用。
-
统一了网络模型,优化网络功能模块。mbatchd,sbatchd,lim更改为poll模型。
-
优化了 fairshare, preempt 功能模块。由原来的加载文件调用方式更改为直接函数调用,效率更高。
-
集群用户配置文件 lsb.users 添加了 CPU_TIME_FACTOR 参数,限制用户CPU使用率。是对 fairshare, preempt 功能的补充,更进一步区别对待用户。当集群中的不同用户同时跑任务时,优先级低的用户将被限制CPU使用,也可以约束用户的单进程多线程任务。