背景:
最近公司的gpu服务器总是被自动重启,通过:https://www.zywxy.cn/819/ 分析只能定位到某个pid,但是研发也无法根据这个pid定位到对应的进程,因为上面跑的是很多个大模型服务,启动命令都一样,最主要的原因是这些大模型服务都是跑在容器里面的,而它们在容器里面的pid和宿主机的pid根本不是一个东西,所以需要通过容器pid进程查找对应宿主机pid进程,或者反过来都可以。
方案:
root@social-analysis:/tmp# grep threads /proc/*/sched /proc/1/sched:start.sh (62408, #threads: 1) /proc/139582/sched:python3 (11069, #threads: 53) /proc/155776/sched:python3 (30697, #threads: 91) /proc/169971/sched:python3 (22223, #threads: 56)
进入容器后执行命令:grep threads /proc/*/sched,查看到前面就是容器内部的进程,而后面就是对应宿主机的进程。然后我需要写一个自动脚本一直执行,这样就可以保留历史记录:
(base) [root@bj-self-ai-test-122-1 /data/jjl/pid]# crontab -l ### monitor pid by jiangjinglei * * * * * /bin/bash /data/jjl/cp.sh (base) [root@bj-self-ai-test-122-1 /data/jjl/pid]# cat /data/jjl/cp.sh #!/bin/sh docker cp /data/jjl/pid.sh social-analysis:/tmp/ docker exec social-analysis sh /tmp/pid.sh docker exec social-analysis ls /tmp/ > /data/jjl/tmp.txt for i in `cat /data/jjl/tmp.txt|grep 202*` do docker cp social-analysis:/tmp/$i /data/jjl/pid/ >/dev/null done (base) [root@bj-self-ai-test-122-1 /data/jjl/pid]#
参考:https://blog.csdn.net/atzqtzq/article/details/125052645
666