说明
NVIDIA vGPU 调度策略决定多个 vGPU 实例如何共享物理 GPU 的时间片。在多用户共享同一块 GPU 运行 SolidWorks 时,调度策略不仅影响用户操作的流畅度,还会影响帧率上限,进而影响 SolidWorks Performance Test 等基准测试的得分。
三种调度策略
NVIDIA vGPU 支持三种调度策略:
| 策略编号 | 策略名称 | 行为 |
|---|---|---|
-p 1 |
Best Effort(最大努力) | 驱动默认策略。vGPU 可抢占其他空闲 vGPU 的时间片,空闲资源不浪费。FRL 默认启用,帧率上限 60 FPS(Q 系列) |
-p 2 |
Equal Share(均等分配) | 所有 vGPU 平均分配 GPU 时间片,空闲 vGPU 的份额不会让给其他 vGPU。FRL 自动禁用,帧率不受限 |
-p 3 |
Fixed Share(固定份额) | 每个 vGPU 分配固定时间片,不可抢占,资源隔离最彻底。FRL 自动禁用,帧率不受限 |
FRL(帧率限制器)与调度策略的关系
FRL(Frame Rate Limiter,帧率限制器)是 NVIDIA vGPU 的内置机制,其状态由调度策略决定:
- Best Effort(
-p 1):FRL 默认启用,Q 系列 vGPU 最高帧率限制为 60 FPS,B 系列限制为 45 FPS - Equal Share(
-p 2)/ Fixed Share(-p 3):切换至这两种策略时,FRL 自动禁用,帧率不受限制
FRL 的存在会显著压低依赖帧率计分的基准测试结果。使用 SolidWorks Performance Test 进行测试时,须切换至 -p 2 或 -p 3,否则测试结果不具参考价值。
SolidWorks 场景的策略选型
| 使用场景 | 推荐策略 | 原因 |
|---|---|---|
| 日常使用,用户数较少,错峰操作 | -p 1 Best Effort |
默认值,无需配置;空闲资源可被充分利用,突发负载体验好 |
| 用户数较多(≥ 8),高并发重载 | -p 2 Equal Share |
每个用户获得均等的 GPU 份额,避免"吵闹邻居"问题 |
| 需要稳定、可预期的响应时间 | -p 3 Fixed Share |
资源完全隔离,每个 vGPU 性能恒定 |
| SolidWorks Performance Test 基准测试 | -p 2 Equal Share |
FRL 自动禁用,测试结果不受帧率限制干扰 |
SolidWorks GPU 负载特征
SolidWorks 的 GPU 负载具有突发性、非持续性的特点:
- 旋转模型、切换视图、打开大型装配体时,GPU 负载瞬间拉高
- 绘图、标注、文档编辑时,GPU 负载接近空闲
- 多用户同时进行重度操作的概率较低
这一特征决定了大多数 SolidWorks 日常使用场景下,Best Effort(-p 1)是最合适的选择;需要进行基准测试时,切换为 Equal Share(-p 2)。
常用命令
查询当前调度状态
nvidia-smi vgpu -ss
设置调度策略
nvidia-smi vgpu set-scheduler-state -p <策略编号>
调度策略只能在没有任何 vGPU 实例运行时才能修改,否则命令报错。
完整参数说明
-i / --id GPU 的枚举索引、PCI bus ID 或 UUID
不指定则对所有 GPU 生效
-p / --policy 调度策略编号
1 <-- Best Effort(默认)
2 <-- Equal Share
3 <-- Fixed Share
-a / --arr-mode Adaptive Round Robin 模式
0 <-- 禁用
1 <-- 启用(Equal Share / Fixed Share 默认为启用)
Best Effort 策略下此参数无效
-asf / --arr-sched-frequency
ARR 调度频率(Hz),ARR 启用时可选
-aavg / --arr-avg-factor
ARR 平均因子,控制时间片动态调整的滑动窗口,ARR 启用时可选
-ts / --time-slice 时间片长度(单位:纳秒),ARR 禁用时可选
所有附加参数均为可选,不指定时使用驱动默认值。
配置为开机自启服务
-p 1(Best Effort)是驱动默认策略,重启后自动生效,无需配置服务。
如需长期使用其他策略(如 Equal Share),则需配置 systemd 服务,在虚拟机启动前自动完成设置。
将以下命令整体粘贴到 PVE Shell 执行:
cat > /etc/systemd/system/nvidia-vgpu-scheduler.service << 'EOF'
[Unit]
Description=Set vGPU Scheduler State
After=network.target nvidia-vgpud.service nvidia-vgpu-mgr.service sriov.service
Before=pve-guests.service
Requires=nvidia-vgpud.service nvidia-vgpu-mgr.service
[Service]
Type=oneshot
ExecStart=/usr/bin/nvidia-smi vgpu set-scheduler-state -p 2
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable nvidia-vgpu-scheduler.service
systemctl start nvidia-vgpu-scheduler.service
验证服务状态:
systemctl status nvidia-vgpu-scheduler.service
正常输出包含 Active: active (exited) 表示执行成功。
验证调度策略是否生效:
nvidia-smi vgpu -ss
输出中 Scheduler Policy 应显示 Equal Share。
SolidWorks 基准测试流程
-
临时切换调度策略为 Equal Share:
nvidia-smi vgpu set-scheduler-state -p 2需在所有虚拟机关机后执行
-
启动虚拟机,在 SolidWorks 中执行: 【工具】→【评估】→【Performance Test】
-
记录测试得分
-
测试完成后,根据实际需求决定是否恢复为 Best Effort(如已配置自启服务则重启后自动生效)
注意事项
-p 1(Best Effort)为驱动默认值,重启后无需额外操作即自动恢复,无需为此策略配置 systemd 服务。
调度策略只能在没有 vGPU 实例运行时修改,有虚拟机运行时执行该命令会报错。
切换至 Equal Share 或 Fixed Share 后,FRL 自动禁用。如需在 Best Effort 模式下禁用 FRL,可在 vGPU 配置文件中设置
frame_rate_limiter=0,但 NVIDIA 官方不对此配置进行验证支持。
升级 NVIDIA vGPU 驱动后,需重新确认策略是否仍然生效,部分驱动版本升级后策略会重置。
本文适用于 NVIDIA vGPU(GRID)驱动 16.x 及以上版本,不适用于 GPU 直通(Passthrough)场景。
编制日期: 2026 年 4 月
适用平台: Proxmox VE 8.x / 9.x
适用驱动: NVIDIA vGPU 16.x 及以上