本文主要记录日常在服务器运维时遇到的一些问题,操作以及相关解决方案,这些方案没有先后顺序。本文仅做记录使用,不做任何回复。
目录
一、将用户加入组或移出组
方法一:
$ sudo cat etc/sudoers
查看sudoers文件中的信息,参照root这一行重新写一行一样的就可以将某用户升级为超级用户。
方法二:
# 查看xxx用户所在组
$ groups xxx
# 查看sudo组中所包含的用户
$ getent group sudo
# 将xxx用户加入sudo组中
$ sudo usermod -aG sudo xxx
# 将xxx用户移出sudo组
$ sudo deluser xxx sudo
二、在服务器上安装Conda环境
- 安装Miniconda,参照官网操作:Miniconda — Anaconda documentation
- 对于一个Conda虚拟环境,如
# Conda查看当前拥有的环境 $ conda env list # Conda创建名为kk的虚拟环境并指定Python版本 $ conda create -n kk python=3.9 # Conda激活一个环境 $ conda activate kk # Conda删除一个环境 $ conda env remove -n kk
- 对于如何将kk固定为默认激活的环境
# 切换到默认Home目录 $ cd ~ # 修改.bashrc文件 $ vim .bashrc
三、Nvidia-smi界面详解
- 第一栏的Fan:N/A是风扇转速,从0到100%之间变动,这个速度是计算机期望的风扇转速,实际情况下如果风扇堵转,可能打不到显示的转速。有的设备不会返回转速,因为它不依赖风扇冷却而是通过其他外设保持低温(比如我们实验室的服务器是常年放在空调房间里的,但机房风扇转的呼呼响)。
- 第二栏的Temp:是温度,单位摄氏度。
- 第三栏的Perf:是性能状态,从P0到P12,P0表示最大性能,P12表示状态最小性能。
- 第四栏下方的Pwr:是能耗,上方的Persistence-M:是持续模式的状态,持续模式虽然耗能大,但是在新的GPU应用启动时,花费的时间更少,这里显示的是off的状态。(重点观察)
- 第五栏的Bus-Id是涉及GPU总线的东西。
- 第六栏的Disp.A是Display Active,表示GPU的显示是否初始化。
- 第五第六栏下方的Memory Usage是显存使用率。(重点观察)
- 第七栏是浮动的GPU利用率。(重点观察)
- 第八栏上方是关于ECC的东西。
- 第八栏下方Compute M是计算模式。
显存占用和GPU占用是两个不一样的东西,显卡是由GPU和显存等组成的,显存和GPU的关系有点类似于内存和CPU的关系。跑caffe代码的时候显存占得少,GPU占得多,跑TensorFlow代码的时候,显存占得多,GPU占得少。
四、快速创建一个账户
创建一个createUserPub.sh文件用于快速执行创建账户的工作。
# /public/$name是用户登陆以后所在的主目录所在未知
echo "输入要创建的用户名:"
read name
sudo useradd -d /public/$name -m -s /bin/bash $name
echo "输入新建用户密码:"
sudo passwd $name
sudo chown $name -R /public/$name
sudo chown -R $name:$name /public/$name
echo "分配主目录"
sudo chmod 777 /public/$name
echo "权限777"
echo "完成"
五、如何处理空占卡
- 输入如下命令动态观察当前GPU的使用状态:
$ watch nvidia-smi
- 如果一张卡长时间处于显存高额占用但是功率为0%的情况,同时该卡的设备温度很低,功率也很低,则说明该卡处于空占状态。
- 采用如下指令查看当前显卡下占用GPU资源的所有PID对应的用户的情况:
# 首先通过如下指令查看输出是否对应于正确的PID,如果不正确则需要手动调整一些参数。
$ nvidia-smi | awk '$3 ~/[0-9]+/{if((NR>30)) {print $3}}'
or
$ nvidia-smi | awk '$5 ~/[0-9]+/{if((NR>40)) {print $5}}'
# 输出正确以后拼接上ps命令查看对应PID的用户和相关信息
$ nvidia-smi | awk '$3 ~/[0-9]+/{if((NR>30)) {print $3}}' | xargs ps u
- 通过程序的启动时间可以大致判断是否可以直接Kill,当然最好和该用户进行沟通
# 杀掉PID为2233的进程
$ sudo kill -9 2233
- 有些僵尸进程不会直接显示在nvidia-smi的界面上,但是显存依旧存在大量占用,此时按如下操作: