检测到论坛CSS可能没有正确加载,如出现排版混乱请刷新重试。

We detected that the CSS might not be loaded correctly. If the website displays abnormally, Please refresh and try again.

  • Windows
  • 找出VMware(/+Hyper-V)环境下爆音的原因了

xkai 此前有坛友提到VMware虚拟机在NT5.1+多处理器HAL下(开启Hyper-V的条件下)特别卡,经我测试,VMware Workstation 17.5下无此问题(自17.5之后我就没有升级过),无论是acpipic_upacpiapic_up,还是acpiapic_mp,都不卡(但dxdiag的DirectDraw测试在1080p分辨率下第一步还是略卡,不过17.5的2D framebuffer无论开关Hyper-V都是略卡,也就无所谓了)。
(我看到上面的坛友在VMware社区发言说17.6减速的问题了)

但随之而来第二个问题,VMware的爆音无法解决了,在虚拟机中运行VMAudioFixTray、VMAudioBack、WMP均无效。
(之前同时运行着VirtualBox,反而未发现爆音问题)

最后发现VMAudioBackHost可以解决,原理是:
Windows 10 2004+的系统不再允许单个进程的timeBeginPeriod调用来全局修改计时器分辨率(但在Win11下修改注册表GlobalTimerResolutionRequests可以恢复旧行为)。
而Hyper-V的hypervisor造成了下面的结果(VMAudioBackVMAudioBackHost作者原话):

Windows Hypervisor/WSL/Sandbox related stuff caused VMware to use alternative code path, causing audio issue that cannot be resolved by playing music in Windows Media Player in VM.

致使虚拟机内部的计时器分辨率必须在外部(宿主机)修改才可以。

而Windows 10 2004+将计时器分辨率变为per-process后,外部(宿主机)运行计时器分辨率修改程序也修改不了vmware-vmx.exe的计时器分辨率。
VirtualBox运行时不爆音则可能是因为VirtualBox的部分驱动override了全局计时器分辨率。

最后通过VMAudioBackHost解决了VMware+Hyper-V环境下爆音的问题,但VMAudioBackHost仅可应用在已启动的vmware-vmx.exe进程,后面看Issues,有人开发了一个VMAudioBackHook,可以通过放置在vmware-vmx.exe路径下的winmm.dll Hook vmware-vmx.exe,使其计时器分辨率由15.625ms提升到1.0ms,最终解决了这个问题。

注:目前我的电脑仅使用CPU内部的高精确度ITSC计时源(为了解决莫名其妙的DPC延迟),传统计时源已经被关闭(如HPET等),如果Hook及更换17.5版本后仍未解决,可以尝试关闭HPET等传统计时源(不关闭时Windows似乎仍会优先使用ITSC,但如果仍有问题则需要关闭):

bcdedit /set {current} useplatformclock no
bcdedit /set {current} useplatformtick no
bcdedit /set {current} disabledynamictick yes

(关闭HPET计时源、RTC计时源,及计时器节能)

bcdedit /deletevalue {current} useplatformclock
bcdedit /deletevalue {current} useplatformtick
bcdedit /deletevalue {current} disabledynamictick

(恢复默认值)

    mydarknight 我遇到的问题是hv自己爆音了(电脑安装了VMware但没怎么用过)

    关于Windows 2000的补充:
    简而言之:如果需要在带有Hyper-V的VMware Workstation 17.5环境下安装Windows 2000,则应在加载安装程序时按F5更换为Advanced Configuration and Power Interface (ACPI) PCStandard PC HAL,且不要设置多处理器。XP搭配VM17.5+Hyper-V时无ACPI/APIC bug。2003搭配任何版本的VMware+Hyper-V环境均无ACPI/APIC bug。

    详细:如果在带有Hyper-V的VMware环境下安装的是Windows 2000,必须设置Win2000为单处理器,否则一定会在

    Windows 正在安装网络组件,请稍候。

    时死机。(同时还有第一阶段安装速度巨慢,Windows 2000开机画面卡第一屏时间较长的表现)
    如果不小心设置为多处理器,可以在第一阶段安装后关机并更改处理器、核心个数为1(不用通过重装来更改HAL,ACPI Multiprocessor PC HAL可以正常完成安装)来解决。
    但安装后Windows 2000如果使用APIC HAL的话依旧非常卡,需要切换到i8259 PIC HAL(如Advanced Configuration and Power Interface (ACPI) PCStandard PC HAL,处理器资源分配才正常,XP+17.5无此问题,建议安装2000时就按F5更换HAL)

    另:在2000下(宿主机为Hyper-V开启状态下的VMware)安装VMware Tools后建议从dxdiag关闭DirectDraw加速,如果不关闭,可以看出在第二步的DirectDraw测试中,CPU使用率非常高。XP/2003也无此问题。

    © 2025 wvbCommunity 管理团队

    删封申诉 | 知乎专栏 | 状态监控 | 用户协议(EULA) | 隐私政策

    本站文章除其作者特殊声明外,一律采用CC BY-NC-SA 4.0许可协议进行授权,进行转载或二次创作时务必以相同协议进行共享,严禁用于商业用途。