0. 硬件资源

CPU:32核心

GPU:3个 

Memory:128 GB

1. 限制(指定)程序CPU内核占用数量

运行前限制的方法

通过taskset -c前缀,将进程绑定到指定的CPU核心上运行。例如:

   taskset -c 0-7,9 python AAA.py    

上例,使用第0到7与第9,共9个核心。

运行后限制的方法:

  1. 先正常运行,例如python AAA.py
  2. pid pgrep -fl AAA.py 找到进程pid(pgrep是专门用于查找进程的命令,-f表示使用完整的命令行进行匹配(包括参数),-l选项表示同时显示进程 ID(PID)和进程名,输出格式通常是:PID process_name。)
  3. 将进程绑定到指定的核心taskset -p -c 0-3 xxx(pid)

2. 限制(指定)程序GPU占用数量

使用CUDA_VISIBLE_DEVICIES=X前缀。例如:

  CUDA_VISIBLE_DEVICES=0,2-3 python AAA.py

(事实上并没有第4块显卡,仅供距离)

3. 同时限制CPU内核占用数量与GPU占用数量

结合1与2,由于环境变量(如CUDA_VISIBLE_DEVICES)需要在命令的上下文中设置,你需要确保环境变量在命令执行时已被正确设置。可以使用env命令来组合这些设置:

  taskset -c 2-3 env CUDA_VISIBLE_DEVICES=1,2 python a.py  
  • 使用taskset -c 2-3将Python脚本a.py的执行限制在CPU核心2和3上。
  • 使用env CUDA_VISIBLE_DEVICES=1,2设置环境变量,使得Python程序仅能看到编号为1和2的CUDA设备。

4. 限制内存占用大小

限制当前shell最大使用52GB内存:

  ulimit -v $((52*1024*1024))    

然后在后面正常使用命令,此shell触发的进程不会超过52GB内存。Matlab等软件也可以通过先敲入上行命令,再输入matlab命令,也可以达到这个效果。

5. 要将所有的加在一起,把4写在前面,回车,再使用3即可

好耶