跳转至内容

CPU 频率缩放

来自 ArchWiki
(重定向自 Scaling governor)

CPU 性能缩放使操作系统能够向上或向下调整 CPU 频率,以节省电量或提高性能。缩放可以根据系统负载自动进行,响应 ACPI 事件进行调整,或由用户空间程序手动更改。

Linux 内核通过 CPUFreq 子系统提供 CPU 性能缩放,该子系统定义了两层抽象:

  • 缩放调度器 实现计算所需 CPU 频率的算法,可能基于系统的需求。
  • 缩放驱动程序 直接与 CPU 交互,实现当前调度器请求的所需频率。

默认的缩放驱动程序和调度器会自动选择,但用户空间工具如 cpupoweracpidLaptop Mode Tools 或为您的桌面环境提供的 GUI 工具,仍可用于高级配置。

用户空间工具

i7z

i7zAUR 是一个用于 Linux 的 i7 (现在包括 i3, i5, i7, i9) CPU 报告工具。可以通过终端命令 i7z 启动,或通过 i7z-gui 作为 GUI 启动。

turbostat

turbostat 可以显示现代 Intel 和 AMD CPU 的频率、功耗、空闲状态和其他统计信息。

cpupower

cpupower 是一套用于协助 CPU 频率缩放的用户空间工具。该软件包不是使用缩放所必需的,但强烈推荐,因为它提供了有用的命令行工具和一个 systemd 服务,用于在启动时更改调度器。

cpupower 的配置文件位于 /etc/default/cpupower。该配置文件由 /usr/lib/systemd/scripts/cpupower 中的一个 bash 脚本读取,该脚本由 systemd 通过 cpupower.service 激活。您可能需要 启用 cpupower.service 以在启动时开始运行。

thermald

thermald 是一个用于防止 Intel CPU 过热的 Linux 守护进程。该守护进程使用 P-states、T-states 和 Intel power clamp 驱动程序主动控制热参数。thermald 也可以用于旧款 Intel CPU。如果最新驱动程序不可用,则该守护进程将回退到 x86 模型特定寄存器和 Linux "cpufreq 子系统" 来控制系统冷却。

默认情况下,它使用可用的 CPU 数字温度传感器监控 CPU 温度,并在硬件采取激进的纠正措施之前保持 CPU 温度在控制之下。如果 thermal sysfs 中存在皮肤温度传感器,则它会尝试将皮肤温度保持在 45°C 以下。

在 Tiger Lake 笔记本电脑上(例如 Dell Latitude 3420),据报道该守护进程解锁了比可用性能更高的性能

相关的 systemd 单元是 thermald.service,应启动启用。有关更多信息,请参阅 thermald(8)

power-profiles-daemon

来自 power-profiles-daemonpowerprofilesctl 命令行工具通过 power-profiles-daemon 服务处理电源配置文件(例如,平衡、节能、性能)。GNOME 和 KDE 也提供了图形界面进行配置文件切换;请参阅以下内容:

有关使用、用例和与类似项目比较的更多信息,请参阅项目的 README

启动/启用 power-profiles-daemon 服务。请注意,当启动 powerprofilesctl 时,它还会尝试启动服务(请参阅 dbus.service单元状态)。

  • power-profiles-daemon 与其他电源管理服务(如 TLPtunedsystem76-powerAUR)存在冲突。若要使用上述任一服务而非 power-profiles-daemon(因其可能作为依赖项),请通过屏蔽 power-profiles-daemon 服务来禁用它(另见 [1][2])。
  • 自 2.23.0 版本起,tunedpower-profiles-daemon 提供了 tuned-ppd 服务兼容层。

tuned

tuned 是一个用于监控和自适应调整系统设备的守护进程。它可以配置 GPU 电源模式、PCIe 电源管理、设置 sysctl 设置、调整内核调度器等;它也是一个配置系统中电源管理方面的守护进程。

2.23.0 版本发布时,该项目附带了 tuned-ppd,这是一个为为 power-profiles-daemon 编写的程序(如以下程序)提供的兼容层:

有关为什么应该使用 tuned 而不是 power-profiles-daemon 的原因,请参阅 Fedora 将其替换为 tuned 的提案。有关相反的论点,请参阅 [3]

启动/启用 tuned 守护进程服务。为兼容 power-profiles-daemon,也启动/启用 tuned-ppd 服务。要从命令行控制 tuned,请使用 tuned-adm 查看、设置和推荐配置文件。

注意 tuned-ppd 配置在 /etc/tuned/ppd.conf。要设置每当程序选择一个 power-profiles-daemon 配置文件时使用哪个 tuned 配置文件,请编辑该文件,其中包含了所有 power-profiles-daemon 模式和电池检测。

cpupower-gui

cpupower-gui-gitAUR 是一个旨在协助 CPU 频率调整的图形化工具。该 GUI 基于 GTK,旨在提供与 cpupower 相同的选项。cpupower-gui 可以启用或禁用核心,并为每个核心更改最大/最小 CPU 频率和调速器。该应用程序通过 polkit 处理权限授予,并允许 wheel 用户组中的任何已登录用户更改频率和调速器。有关 cpupower-gui.servicecpupower-gui-user.service 的更多信息,请参阅 cpupower-gui systemd units

gnome-shell-extension-cpupower

gnome-shell-extension-cpupower-gitAUR 是一个 GNOME Shell 扩展,可以更改最小/最大 CPU 频率并启用/禁用频率提升。

auto-cpufreq

auto-cpufreqAUR 是一个适用于 Linux 的自动 CPU 速度和功耗优化器,基于对笔记本电池状态、CPU 使用率、CPU 温度和系统负载的主动监控。

nvidia-powerd

nvidia-powerd 守护进程支持在支持的笔记本电脑平台上使用 NVIDIA 的动态 Boost 技术。它作为一个系统范围的电源控制器,根据工作负载需求动态地重新分配 GPU 和 CPU 之间的功耗,同时保持系统的总热预算。[4]

启动/启用 nvidia-powerd 服务,该服务由 nvidia-utils 软件包提供。

注意 nvidia-powerd 的先决条件是:NVIDIA Ampere (或更新) GPU,Intel Comet Lake (或更新) 或 AMD Renoir (或更新) 芯片组,以及固件级动态 Boost 支持(通过 nvidia-settings -q DynamicBoostSupport 进行验证)。

缩放驱动程序

本文或本章节的准确性存在争议。

原因:此信息中的一部分特定于平台/供应商,在旧功能和更新功能(如硬件 P-States)之间缺乏清晰性/区分,或者是对内核 工作状态电源管理CPU 性能缩放子系统的误解/混淆。(请在 Talk:CPU frequency scaling 中讨论)

缩放驱动程序通过与 CPU 硬件交互来实现频率缩放的控制。它们可以与缩放调度器进行通信以进行通用频率控制(ACPI 2.0 标准引入了电源性能状态 ("P-states")),但也可以具有附加功能(例如基于硬件的 P-States,允许 CPU 自主管理频率)。[5]

注意 原生的 CPUFreq 缩放驱动程序会自动加载。
scaling_driver 描述
acpi_cpufreq 使用 ACPI 电源性能状态 (P-States)。此驱动程序还支持 Intel Enhanced SpeedStep(以前由已弃用的 speedstep_centrino 模块支持)。对于 AMD Ryzen,它只提供 3 种频率状态。
amd_pstate 此驱动程序有三种模式,对应于不同程度的 CPU 硬件自主性:active、passive 和 guided。自内核版本 6.5 起,在支持的 CPU(Zen 2 及更新版本)上,amd_pstate CPU 电源缩放驱动程序会自动在“active 模式”下使用。有关详细信息,请参阅 #amd_pstate
amd_pstate_epp 此驱动程序实现了由 amd_pstate=active 选中的缩放驱动程序,并为 AMD Ryzen(部分 Zen 2 及更新版本)处理器提供了一个内部调度器。
cppc_cpufreq 基于 ACPI 的较新的 CPPC 系统(请参阅 #Collaborative processor performance control)。AArch64 系统上的常见默认值。在现代 x86 上也能工作,但 intel_pstateamd_pstate 驱动程序实现了额外的硬件特定功能。
intel_cpufreq intel_pstate 处于“passive 模式”时报告的 scaling_driver[6]
intel_pstate 适用于 Intel 处理器(Sandy Bridge 及更新版本)的现代频率调整驱动程序。对于这些处理器,它会自动使用,而不是下面的其他驱动程序。此驱动程序优先于其他驱动程序,并且是内置的,而不是模块。默认情况下,如果处理器支持硬件管理 P 状态 (HWP),Intel 称之为 Speed Shift Technology (SST)(Skylake 处理器及更新版本),intel_pstate 将选择“Active Mode”。如果处理器不支持 HWP(或在使用 intel_pstate=no_hwp 参数时),则 intel_pstate 将选择“Passive Mode”,报告的 scaling_driver 字符串将是“intel_cpufreq”。如果您在使用此驱动程序时遇到问题,可以通过将 intel_pstate=disable 添加到您的 内核参数来恢复到 acpi_cpufreq 调整驱动程序。有关更多详细信息,请参阅 intel_pstate 文档
p4_clockmod Intel Pentium 4/Xeon/Celeron 处理器的 CPUFreq 驱动程序,通过跳过时钟来降低 CPU 温度。(您可能更想使用 speedstep_lib。)
pcc_cpufreq 此驱动程序支持 Hewlett-Packard 和 Microsoft Corporation 的 Processor Clocking Control 接口,这在某些 ProLiant 服务器上很有用。
powernow_k8 K8/K10 Athlon 64/Opteron/Phenom 处理器的 CPUFreq 驱动程序。自 Linux 3.7 起,对于更现代的 AMD CPU,将自动使用 'acpi_cpufreq'。
speedstep_lib 支持 Intel SpeedStep 处理器的 CPUFreq 驱动程序(主要是 Atom 和较旧的 Pentium 处理器)

本文或本章节的准确性存在争议。

原因:以下命令将仅返回作为模块构建的驱动程序,而不是内置的驱动程序:例如 intel_pstate 和 amd_pstate]。 (请在 Talk:CPU frequency scaling 中讨论)

要查看可用模块的完整列表,请运行:

$ ls /usr/lib/modules/$(uname -r)/kernel/drivers/cpufreq/

加载适当的模块(有关详细信息,请参阅 内核模块)。一旦加载了适当的 cpufreq 驱动程序,就可以通过运行以下命令显示 CPU 的详细信息:

$ cpupower frequency-info

设置最大和最小频率

在某些情况下,可能需要手动设置最大和最小频率。

要设置最高时钟频率(clock_freq 是带单位的时钟频率:GHz、MHz)

# cpupower frequency-set -u clock_freq

要设置最低时钟频率

# cpupower frequency-set -d clock_freq

要将 CPU 设置为以指定频率运行

# cpupower frequency-set -f clock_freq
  • 要仅为单个 CPU 核心进行调整,请添加 -c core_number
  • 调度器、最大和最小频率可以在 /etc/default/cpupower 中设置。

或者,您可以手动设置频率

# echo value | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq

可用值可以在 /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies 或类似文件中找到。[7]

配置频率提升

某些处理器支持在适当的热条件下,在短时间内将其频率提高到正常最大值以上。在 Intel 处理器上,这称为 Turbo Boost,在 AMD 处理器上,这称为 Turbo-Core

通过 sysfs 设置 (intel_pstate)

intel_pstate 有一个特定于驱动程序的接口,用于禁止处理器进入 turbo P-States。

# echo 1 > /sys/devices/system/cpu/intel_pstate/no_turbo

通过 sysfs 设置 (其他缩放驱动程序)

对于 intel_pstate 以外的缩放驱动程序,如果驱动程序支持提升,则会存在 /sys/devices/system/cpu/cpufreq/boost 属性,可用于禁用/启用提升。

要禁用提升,请运行:

# echo 0 > /sys/devices/system/cpu/cpufreq/boost

要启用提升,请运行:

# echo 1 > /sys/devices/system/cpu/cpufreq/boost

通过 x86_energy_perf_policy 设置

在 Intel 处理器上,x86_energy_perf_policy 也可用于配置 Turbo Boost。

# x86_energy_perf_policy --turbo-enable 0

amd_pstate

amd_pstate 有三种操作模式:CPPC 自主(active)模式、CPPC 非自主(passive)模式和 CPPC 引导自主(guided)模式。官方支持的内核在构建时使用 CONFIG_X86_AMD_PSTATE_DEFAULT_MODE=3,这意味着它们的默认值是 active 模式。这可以通过内核参数 amd_pstate=activeamd_pstate=passiveamd_pstate=guided 进行更改。要回退到 acpi_cpufreq 驱动程序,请改用 amd_pstate=disable

Active 模式
active 模式由 amd_pstate_epp(Energy Performance Preference)驱动程序实现。在此模式下,当软件希望将 CPPC 固件偏向性能(0x0)或能耗效率(0xff)时,amd_pstate_epp 驱动程序会向硬件提供提示。
Passive 模式
passive 模式由 amd_pstate 驱动程序实现。在此模式下,驱动程序根据当前工作负载定义所需的性能,特别是能够容忍多少性能下降而不影响生活质量。
Guided 模式
guided 模式由 amd_pstate 驱动程序实现。在此模式下,amd_pstate 驱动程序请求最小和最大性能级别,平台会自动选择此范围内的性能级别,并适合当前工作负载。
注意 某些主板可能未在其固件中启用所需设置,导致出现 the _CPC object is not present in SBIOS or ACPI disabled 错误。将 Enable CPPC(通常在 AMD CBS > NBIO > SMU > CPPC 中找到)从 Auto 更改为 Enabled,或更改 UEFI 中的任何类似设置。如果它们不存在,请查阅供应商网站以获取更新,或检查主板是否隐藏了显示高级 UEFI 选项的方法。

缩放调度器

缩放调度器是确定 CPU 所需频率的电源方案。一些请求恒定频率,另一些则实现算法以根据系统负载动态调整。内核中包含的调度器有:

注意 每个调度器与任何缩放驱动程序兼容,但 intel_pstateamd_pstate 在 active 模式下是例外,它们提供 powersaveperformance 的伪调度器。请参阅下面的 #Autonomous frequency scaling
调度器 描述
performance 以最高频率运行 CPU,该频率从 /sys/devices/system/cpu/cpuX/cpufreq/scaling_max_freq 获取。
powersave 以最低频率运行 CPU,该频率从 /sys/devices/system/cpu/cpuX/cpufreq/scaling_min_freq 获取。
userspace 以用户指定的频率运行 CPU,可通过 /sys/devices/system/cpu/cpuX/cpufreq/scaling_setspeed 进行配置。
ondemand 根据当前负载动态调整频率。跳到最高频率,然后随着空闲时间的增加可能回落。
conservative 根据当前负载动态调整频率。与 ondemand 相比,频率调整更渐进。
schedutil 调度器驱动的 CPU 频率选择 [8][9]

根据缩放驱动程序的不同,默认会加载以下调度器之一:

  • Linux 4.9.5 起的 schedutil
  • 使用 intel_pstateamd_pstate 驱动程序的 Intel 和 AMD CPU 的内部 powersave 调度器(参见上面的注释,它等同于 schedutil)。
警告 更改默认调度器时,请使用 CPU 监控工具(用于温度、电压等)。

要激活特定的调度器,请运行:

# cpupower frequency-set -g governor
  • 要仅为单个 CPU 核心进行调整,请在上面的命令中添加 -c core_number
  • 激活调度器需要加载特定的 内核模块(名为 cpufreq_governor)。自内核 3.4 起,这些模块会自动加载。

或者,您可以手动为所有可用的 CPU 激活一个调度器:

# echo governor | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
提示 要实时监控 CPU 速度,请运行:
$ watch cat /sys/devices/system/cpu/cpu[0-9]*/cpufreq/scaling_cur_freq

调整 ondemand 调度器

有关详细信息,请参阅 内核文档

切换阈值

要设置步进到另一个频率的阈值:

# echo -n percent > /sys/devices/system/cpu/cpufreq/governor/up_threshold

要设置步退到另一个频率的阈值:

# echo -n percent > /sys/devices/system/cpu/cpufreq/governor/down_threshold

采样率

采样率决定了调度器检查调整 CPU 的频率。sampling_down_factor 是一个可调参数,当 CPU 处于最高时钟频率时,它会乘以采样率,从而延迟负载评估并提高性能。sampling_down_factor 的允许值范围是 1 到 100000。此可调参数对较低 CPU 频率/负载下的行为没有影响。

要读取值(默认 = 1),请运行:

$ cat /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor

要设置值,请运行:

# echo -n value > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor

使更改永久生效

自 Linux 5.9 起,可以设置 cpufreq.default_governor 内核选项。[10] 要在启动时设置所需的缩放参数,请配置 cpupower 工具并启用其 systemd 服务。或者,可以使用 systemd-tmpfilesudev 规则。

自主频率缩放

Intel 和 AMD 都定义了一种方法,让 CPU 根据(1)系统的性能范围和(2)指定偏好的性能/功耗提示来决定自己的速度。完全自主模式在以下情况激活:

  • amd_pstate 设置为 "active" - 需要 CPU *和* BIOS 支持 CPPC;
  • intel_pstate 设置为 "active" *并且* 硬件 P-state (HWP) 可用(即 Sandy Bridge 及更新版本)- 开箱即用。

Active 调度的最重要特性是只有两个调度器可用:powersaveperformance。它们的工作方式与它们的普通对应项*完全不同*:这些级别被翻译为 CPU 内部调度器的 *Energy Performance Preference* 提示。因此,它们都提供动态缩放,类似于 schedutilondemand 通用调度器,主要区别在于延迟。performance 算法应比旧的 ondemand 调度器为 Intel HWP 提供更好的节能功能

Intel 主动,非 HWP

intel-pstate 驱动程序有一个(令人困惑的)“active”模式,可以在没有 CPU 主动决策的情况下工作。当内核命令行强制“active”模式但 HWP 不可用或禁用时,此模式会开启。它仍然只提供 powersaveperformance,但驱动程序本身以类似于 schedutilperformance(即保持在最高 P-state)的方式进行管理。与 passive intel-pstate 相比,此模式没有实际优势。

设置 EPP

可以通过可用的 sysfs 接口选择中间提示。AMD 和 Intel 之间的接口相同,其中文件 /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference 描述当前偏好,/sys/devices/system/cpu/cpu*/cpufreq/energy_performance_available_preferences 提供可用偏好列表。也可以传递一个介于 0(偏好性能)和 255(偏好能耗)之间的数字。对于没有 EPP 的 Intel CPU,提供了一个回退实现,将字符串转换为 EPB 级别(在下一节中描述),但在数字上会失败。

x86_energy_perf_policy 支持通过 --hwp-epp 开关在 *仅限* Intel CPU 上配置 EPP 提示。它通过直接访问机器特定寄存器 (MSR) 来工作,这些寄存器在 Intel 和 AMD 之间有所不同。该程序还可以使用频率乘数范围来限制 HWP 频率的范围。

使用 x86_energy_perf_policy(8) 启用硬件 P-States:

# x86_energy_perf_policy -H 1
# x86_energy_perf_policy -U 1

协同处理器性能控制

现代 CPU 的功耗不再仅仅取决于频率或电压设置,因为有模块可以在需要时打开。协同处理器性能控制 (CPPC) 是 ACPI 5.0 提供的 P-state 替代方案。处理器不是定义静态频率级别的表,而是提供许多抽象的*性能级别*,操作系统从中选择。有两个优点:

  • 不再有 16 个 P-state 条目的限制;典型的 CPU 提供数百个级别可供选择。
  • 当某些部分(例如,向量 FPU)未使用时,CPU 可以为性能级别提供更高的频率(例如,提升)。

另一方面,灵活的频率会破坏频率不变的利用率跟踪,这对于 schedutil 的快速频率更改很重要。已使用许多特定于供应商的方法来在 CPPC 下使频率保持静态,其中 arm64 取得了最大的成功。

cppc_cpufreq 是通用的 CPPC 缩放驱动程序。当 Zen 3 MSR 不可用时,amd_pstate 也使用 ACPI CPPC 来管理 CPU 频率 - 这种方法也称为“共享内存”,其延迟比 MSR 更高。

Intel 性能和能耗偏好提示

Intel performance and energy bias hint (EPB) 是 Intel CPU 提供的一个接口,允许用户空间在 0(最高性能)到 15(最高节能)的范围内指定所需的功耗-性能权衡。EPB 寄存器是独立于频率缩放的另一个性能管理层。它会影响 P-state 和 C-state 选择的激进程度,并告知内部特定于模型的决策,这些决策会影响能耗。

sysfs 和 x86_energy_perf_policy(8) 识别的常见值及其别名如下:

EPB 值 字符串
0 performance
4 balance-performance
6 normal, default
8 balance-power
15 power

通过 sysfs 设置

可以使用 sysfs 属性设置 EPB:

# echo epb | tee /sys/devices/system/cpu/cpu*/power/energy_perf_bias

通过 x86_energy_perf_policy 设置

使用 x86_energy_perf_policy

# x86_energy_perf_policy --epb epb

通过 cpupower 设置

使用 cpupower

# cpupower set -b epb_value
警告 cpupower 不支持字符串别名。如果提供字符串,它将静默地将 EPB 设置为 0,对应最大性能。

与 ACPI 事件的交互

用户可以配置调速器,使其根据不同的 ACPI 事件(例如连接 AC 适配器或合上笔记本电脑盖子)自动切换。下面给出了一个快速示例;但是,您可能需要阅读有关 acpid 的完整文章。

事件在 /etc/acpi/handler.sh 中定义。如果安装了 acpid 包,该文件应该已经存在并且可执行。例如,要在断开 AC 适配器时将调速器从 performance 更改为 conservative,并在重新连接时改回

/etc/acpi/handler.sh
[...]

ac_adapter)
    case "$2" in
        AC*)
            case "$4" in
                00000000)
                    echo "conservative" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor    
                    echo -n $minspeed >$setspeed
                    #/etc/laptop-mode/laptop-mode start
                ;;
                00000001)
                    echo "performance" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
                    echo -n $maxspeed >$setspeed
                    #/etc/laptop-mode/laptop-mode stop
                ;;
            esac
        ;;
        *) logger "ACPI action undefined: $2" ;;
    esac
;;

[...]

故障排除

BIOS 频率限制

本文或本节需要在语言、wiki 语法或风格方面进行改进。请参阅 Help:Style 获取参考。

某些 CPU/BIOS 配置在扩展到最大频率或以任何方式扩展到更高频率时可能存在困难。这很可能是由于 BIOS 事件指示操作系统限制频率,导致 /sys/devices/system/cpu/cpu0/cpufreq/bios_limit 设置为较低的值。

您可能刚刚在 BIOS 设置实用程序中进行了特定设置(频率、热管理等),您可以责怪有 bug/过时的 BIOS,或者 BIOS 可能有充分的理由自行限制 CPU。

例如,这可能是(假设您的机器是笔记本电脑)电池已卸下(或电量不足),因此您只能使用交流电源。在这种情况下,功率不足的交流电源可能无法提供足够的电力来满足整个系统的极端峰值需求,并且由于没有电池可以辅助,这可能导致数据丢失、数据损坏或最坏情况下甚至硬件损坏!

并非所有 BIOS 都会在这种情况下限制 CPU 频率,但例如,大多数 IBM/Lenovo Thinkpad 会。有关此主题的更多 thinkpad 相关信息,请参阅 thinkwiki。

如果您检查发现并非仅仅是奇怪的 BIOS 设置,并且您知道自己在做什么,那么您可以让内核忽略这些 BIOS 限制。

警告
  • 请确保您已阅读并理解以上部分。CPU 频率限制是 BIOS 的一项安全功能,您不需要对其进行规避。
  • 这样做**不**推荐,并且可能严重损坏您的硬件:请自行承担风险。 [11]

设置 processor.ignore_ppc=1 内核参数。要临时尝试此操作,请将 /sys/module/processor/parameters/ignore_ppc 中的值从 0 更改为 1

某些系统使用另一种机制来限制 CPU 频率,例如,在没有电池或使用非官方电源适配器运行时。请参阅 Lenovo ThinkPad T480#CPU 卡在最低频率,了解如何操纵 Intel CPU 中的 BD PROCHOT 位,以及 Dell XPS 15 (9560)#总体缓慢和卡顿,了解其他修复方法。这不仅适用于 Lenovo ThinkPad T480,也是 Dell XPS 型号(如 XPS15 9550 和 XPS15 9560)中的常见问题。该位也导致至少一些基于 Intel 的 MacBook 在未连接电池时以最低 CPU 频率运行。

参见