如何利用 WSL 中的所有处理器?

如何利用 WSL 中的所有处理器?

我使用的是 HP Z6 G4 工作站。它有两个处理器,每个处理器有 20 个物理核心,但lscpuWSL 上的命令仅检测到一个处理器。因此,我无法充分利用系统的所有物理核心。

我得到了以下lscpu结果: 处理器

我期待一个代码或步骤来配置 WSL,以便它可以访问我的工作站中的所有处理器。

答案1

文章 使用 Microsoft 而非 Intel CPU 驱动程序来提升 WSL 2 性能 描述了同样的问题:

Windows 资源监视器显示 WSL 在满载时仅负载 50%,而 Microsoft 的标准 CPU 驱动程序负载则达到 100%。

建议的解决方案是禁用英特尔驱动程序并强制使用微软驱动程序。

这是通过使用regedit注册表项中的 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\intelppm 将该项的值设置为来完成Start4(默认为3),然后重新启动。

与所有注册表更改一样,请采取一些预防措施,至少创建一个系统还原点,以便在出现问题时可以将 Windows 回滚到以前的状态。

答案2

我的问题是我没有正确设置配置。另一篇文章中提到的注册表更改对我没有任何作用。例如在 C:/Users/<用户名>/.wslconfig

[wsl2]
processors=8

这应该设置为逻辑处理器的数量,而不是物理核心的数量。请确保在更新后重新启动 WSL。

如果您在更改之前和之后运行此操作,您应该会看到差异。

lscpu | grep -E "CPU\(s):|Thread|Core\(s|Socket"
sysbench cpu --threads=$(nproc) run

另请参阅:https://learn.microsoft.com/en-us/windows/wsl/wsl-config#configure-global-options-with-wslconfig

相关内容