Docker 本身 不支持直接设置 GPU 调度优先级,但可以通过 时间片 + 进程优先级 间接控制:
# 示例:限制 GPU 可见性
docker run --gpus '"device=0"' your_image结合 CPU / 进程优先级:
nice -n -10 python train.pyGPU 本身不支持 Kubernetes PriorityClass 直接调度,但推荐做法:
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
name: gpu-high
value: 1000000
globalDefault: false
preemptionPolicy: PreemptLowerPriorityapiVersion: v1
kind: Pod
spec:
priorityClassName: gpu-high
containers:
- name: gpu
image: your_image
resources:
limits:
nvidia.com/gpu: 1✅ 作用:
如果你使用的是 A100 / H100:
# 创建不同规格的 MIG 实例
nvidia-smi mig -cgi 3,9 -C✅ 优点:
❌ 缺点:
cudaSetDevice(0);
cudaDeviceSetCacheConfig(cudaFuncCachePreferL1);⚠️ 注意:
nvidia-smi找到 GPU PID,然后:
renice -n -10 -p 或:
chrt -r -p 99 ✅ 效果:
srun --gres=gpu:1 --priority=10000 python train.py或:
scontrol update JobId=123 Priority=10000| 场景 | 推荐方式 |
|---|---|
| 容器 / K8s | PriorityClass + 资源配额 |
| 多用户共享 GPU | MIG(A100) |
| 单节点多进程 | renice / chrt |
| HPC 集群 | Slurm 优先级 |
| 深度学习训练 | 分开任务 + 限制并发 |
GPU 本身没有“进程优先级”概念
✅ GPU 调度是:
✅ 优先级只能通过:
如果你能告诉我:
我可以给你 精确到命令级别 的配置方案。