自Linux 5.17内核发布以来,我收件箱中的主要问题一直来自读者询问如何实际使用 AMD P-State 驱动程序。现在这个驱动程序不是 ACPI CPUFreq 的默认驱动程序,而且我还没有看到任何 Linux 发行版供应商宣布他们计划立即默认使用这个新驱动程序,但在未来的几个月里,我预计这种情况会改变。无论如何,如果今天想在 Linux 5.17 上使用amd_pstate,这里有一个简短的过渡教程。
首先,检查以验证您的 CPU 频率缩放驱动程序的最简单方法是阅读/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver查看您使用的是 acpi-cpufreq 还是 amd-pstate。提醒一下,AMD P-State 仅支持 AMD Zen 2 处理器和更新版本。AMD P-State 依赖于 ACPI 协作处理器性能控制 (CPPC),这仅适用于 Zen 2 和更新版本 – Zen 1 / Zen 1+ 将不会得到任何支持。您还需要确保在您的 BIOS 中启用 CPPC,以防它碰巧被禁用。许多主板供应商在 BIOS 中确实有一个“ACPI CPPC”选项,可以在 Zen 2 和更新的处理器上设置为启用或自动。
本教程是使用 Ubuntu 和他们的 Ubuntu Mainline Kernel PPA 内核构建编写的。ACPI CPUFreq 仍然是其 Linux 5.17+ 内核构建的默认设置,但 AMD P-State 模块作为内核构建的一部分包含在内。大多数其他发行版内核构建至少可能会启用CONFIG_X86_AMD_PSTATE=m选项,因此它至少是构建的。如果您没有看到 CONFIG_X86_AMD_PSTATE 并且它被注释掉或“n”,您需要首先重建您的内核以便包含驱动程序。
在大多数(全部?)分发内核上,ACPI CPUFreq 驱动程序内置在内核中而不是模块中,因此简单地将其列入黑名单是行不通的。为了避免加载 ACPI CPUFreq,即使它是内置的,可以在/boot/grub/grub.cfg或相应位置设置“initcall_blacklist=acpi_cpufreq_init”选项,以便在启动时编辑内核命令行选项(例如“/etc/ default/grub”以获得更永久的解决方案)。需要此 initcall_blacklist 以防止调用 ACPI CPUFreq 初始化函数,从而允许 AMD P-State 成功初始化。对于希望默认加载 AMD P-State 的 Ubuntu/initramfs 用户,您还可以将“amd_pstate”添加到“/etc/initramfs-tools/modules”
在将 ACPI CPUFreq 驱动程序列入黑名单并加载 AMD P-State 驱动程序的更改重新启动后,您应该在新的 AMD CPU 频率缩放驱动程序代码路径上。同样,您可以检查/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver进行验证。如果您使用的是新驱动程序,它应该打印amd-pstate。如果该文件不存在,您可能已成功将 ACPI CPUFreq 列入黑名单,但 AMD P-State 尚未加载,在这种情况下,您可以尝试modprobe amd-pstate。
如果 AMD P-State 仍然不起作用,您可能需要添加amd_pstate.shared_mem=1作为内核命令行配置的一部分。对于 Linux 5.17,某些系统需要使用 AMD P-State 的“shared_mem”模块选项才能在某些硬件上正确运行。希望很快该限制将得到解决,无需设置该额外选项。
如果想知道如何在 Linux 5.17 上启用 AMD P-State,这就是快速概述。如果有任何问题或问题,请访问我们的论坛/评论本文。我很快就会在 Linux 5.17 final 上完成一些新的 AMD P-State 基准测试。请记住,虽然这个驱动程序最初专注于像 Steam Deck 这样的 Ryzen 移动 APU,但在向前发展时希望看到更多的桌面(可能还有 AMD EPYC 服务器)调整。
原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun141241.html