KB0049. vGPU调度策略对 SolidWorks 性能的影响

说明

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 基准测试流程

  1. 临时切换调度策略为 Equal Share:

    nvidia-smi vgpu set-scheduler-state -p 2
    

    需在所有虚拟机关机后执行

  2. 启动虚拟机,在 SolidWorks 中执行: 【工具】→【评估】→【Performance Test】

  3. 记录测试得分

  4. 测试完成后,根据实际需求决定是否恢复为 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 及以上