学校超算管理员匆忙上线 CentOS 8 结果翻车了

2021-03-22 12:44:39 +08:00
 xuegy

最近学校大跃进式把所有超算节点从 7 升级到 8 了,结果大翻车。

系统升级完,第一件事当然是登进去重新编译代码。结果新系统居然忘装 nano,没办法先用 vi 改配置文件吧,给管理员发了一个 ticket,10 分钟后回复我装好了,看来新系统装完了还挺闲的。

进 module 里面看看更新了啥,结果也乱套了。原来 CentOS 7 老的 module 还没清理干净,跟新的摆在一起都不知道谁是谁,只能通过版本号猜。(截至发帖时清理的差不多了)

编译的时候 openmpi 也翻车了,找不到libpmi2.so.0。这个应该是属于重大运维事故了吧?管理员在一整天之后才修复,告诉我说是忘记在头节点上编译 pmi 了。上线之前这么基本的组件都不测试一下的吗?

总结经验教训,学校级别的运维水平参差不齐,从 7 升级到 8 翻车是难免的。年底不能白嫖 CentOS 以后肯定得换系统,到时候接着翻车。

12021 次点击
所在节点    Linux
76 条回复
Jat001
2021-03-22 21:39:38 +08:00
我想知道容器化解决不了这种场景吗?性能有损耗?
abbottcn
2021-03-22 21:48:05 +08:00
@Jat001 我的应用用,性能几乎无损耗。
测试软件,典型的量子化学电子结构计算软件,gaussian16 。
TF-DFT 计算频率,36 核心,120GB 内存,
主机裸体跑,4 小时左右。
容器方式,多五秒。
软件自己统计的时间。

我认为效率无差异。

可能是,所谓超算的运维,
不晓得容器化技术。
Jat001
2021-03-22 22:05:54 +08:00
@abbottcn #42 看你们的运维平常是怎么维护系统的了,如果是一台台上去维护,那不懂也正常……
如果使用 Ansible 之类的工具批量运维,能够保证每台机器环境基本一致,那是正常水平,估计是不想转

还有看你们的集群有多大,就几台的话上容器也没啥必要,k8s 学习成本太高
FucUrFrd
2021-03-22 22:07:01 +08:00
我之前在 mit 人工智能数据中心,我们用免费的 rhel 授权
FucUrFrd
2021-03-22 22:17:01 +08:00
UC 震惊部总监:中国知名高校完犊子了,被卡脖子了,无法编译美国发明的 mpi,中国高校中国魂,中国芯片中国造
Jat001
2021-03-22 22:39:36 +08:00
搜 Singularity 的时候找到了交大超算平台的用户手册,发现他们并没有通过虚拟化技术做用户隔离,这让普通程序员很难想象,就算是学校内部使用,如此规模的用户数,竟然不做隔离
https://docs.hpc.sjtu.edu.cn/faq/index.html#q-sudo
abbottcn
2021-03-22 23:19:36 +08:00
@Jat001 你说的 Ansible 我不懂, 也用不到. 我自己做的集群, 还用不到这么高级的东西. 实际应用中, 除非硬件损坏, 几乎碰不到节点需要维护的情形.
k8s 没玩过.
计算化学并行计算方面, 使用 singularity 就解决问题了. 十分简单.
对于用户而言, 无非就是,
原来是 mpirun -np $NP AAAA
现在是 mpirun -np $NP singularity exec AAAA
其他方案, 对于用户而言, 学习成本偏高.

用户的水平可以这样描述:
如果在说明里面写, 系统有多个 intel 编译器版本,
使用 XXX 请运行 source /opt/scirpt/enable_intelXXX.sh 激活.
用户会来 BB, 啥, 你到底会不会弄呀,
还让我自己激活 Intel 编译器? 我去那里搞激活码, 序列号?
用户大概都是这个水准的.

以上仅仅来自个人工作经历.
我仅仅管理过顶多 50 节点左右的并行计算集群.
我自己做的集群, 仅限课题组小规模使用.
部分言论, 可能有不严谨, 请见谅.
xuegy
2021-03-23 00:05:00 +08:00
@mikeguan 1. 超算用户基本都不是学 CS 的。会用 vi 的凤毛麟角。
2. 一般也就是进配置文件改个数。这种事情 nano 就能轻轻松松完成。
xuegy
2021-03-23 00:09:49 +08:00
@Jat001 你想多了,超算最多限制对其他人文件夹的访问权限,不可能搞什么隔离的。
Jat001
2021-03-23 00:14:34 +08:00
@abbottcn #47 这 50 节点都是物理机吗?并行计算的时候节点之间如何通信?

正常用 docker,如果有特殊的依赖,都是用户自己根据需要写 dockerfile,在干净的系统镜像上自行编译安装。如果是运维负责维护镜像,那应该把不同版本的编译器放到不同的 image 里去,由用户自行选择,但如果用户连用哪个编译器版本都不知道的话……那我也不知道怎么办了

其实 singularity 我也是第一次听说,同样是高性能计算,学校和企业的要求完全不一样,像用户隔离,这对于企业来说是基本要求,数据泄露是绝对不能承担的风险。一个用户无论怎么折腾,都不会对其他用户有任何影响,这是虚拟化的优势,但虚拟化也有性能损耗。singularity 为了性能而弱化了隔离,这是企业用户不能接受的,估计也是 singularity 在商业领域不怎么火的原因
xuegy
2021-03-23 00:17:05 +08:00
@Jat001 我有限的知识:节点间通信是 infiniband,这里面是个大坑,你用虚拟化容易玩崩。
Jat001
2021-03-23 00:19:28 +08:00


@xuegy #49 怪不得这里写禁止运行军工项目,别说军工项目了,商业项目估计都没人敢放上面
xuegy
2021-03-23 00:19:45 +08:00
@waising 超算领域 CentOS 是事实标准。而且因为它是事实标准,所有工业软件基本都只做 RHEL 版的。
Jat001
2021-03-23 00:23:16 +08:00
@xuegy #51 所以对于用户来说,这 50 个节点跟一个虚拟机是一样的,用户完全不用考虑任务调度和节点间通信的问题?
xuegy
2021-03-23 00:42:19 +08:00
调度是 Slurm 管,用户写好了自己需要多少个 CPU 提交脚本就行了,slurm 算法自动管理队列。通信是 mpi 管的,infiniband 负责传输,用户无需插手。
Jat001
2021-03-23 00:52:06 +08:00
@xuegy #55 真是隔行如隔山,我用过的任务调度系统都是自己写的
xuegy
2021-03-23 01:31:43 +08:00
@Tony042 我校升级从上午 10:00 到下午 1:46 。速度是挺快,活干的够糙的。
abbottcn
2021-03-23 08:13:57 +08:00
记得有位网友问我,怎么搭建计算用的并行集群?
说自己看了些都是 k8s 集群。
我说你看错方向了。
计算用的和 k8s 集群是两会事。
去小破站找我的视频,能有点帮助。
id 一样的。

后来他搞定了。
abbottcn
2021-03-23 10:26:38 +08:00
@Jat001 物理机器呀. 你说的那些, 没法跑所谓高性能并行计算. 你说的, 和我用的, 完全是不同的领域.
m4d3bug
2021-03-23 11:00:15 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/763914

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX