Linux上的全新CPU频率控制机制- Ray Huang, AMD

Find AI Tools
No difficulty
No complicated process
Find ai tools

Linux上的全新CPU频率控制机制- Ray Huang, AMD

目录

  1. 引言
  2. 背景信息
  3. 现有的内核频率控制
  4. MDP状态驱动
  5. MDP状态驱动的功能
  6. 频率控制的性能测试
  7. 挑战与优化方向
  8. 结论

引言

欢迎大家,下午好!我是MD Learners团队的Ray Huang。今天我很荣幸在Linux comp的开源峰会上给大家带来关于Linux上新的CPU频率控制机制的技术分享。这是我们去年准备的解决方案以来的第一次演讲,我们从去年9月开始在内核模块上进行上游开发,经历了七轮的公开代码评审,直到今年初,初始的补丁集才最终被内核接受。今天我将与大家分享这个解决方案的整体设计和实现。如果您有任何问题,请随时联系我。好的,让我们开始吧。

背景信息

在介绍MDP状态驱动之前,让我们首先了解一下背景信息。Chromebook为了在新产品中提供更好的性能,需要对处理器性能进行更好的控制。同时,在将Steam Deck引入MD平台时,我们也发现了一些处理器方面的问题。一是CPU频率出现了一些问题,另一个是AMD处理器上出现了一些游戏性能问题。经过长时间的调查,我们发现了MD处理器上acpi CPU freak驱动存在一些问题,可能不太适用于现代CPU平台。因此,我们决定开发一个新的mdp state驱动来替代acpi CPU freak驱动,以在MD平台上提供更好的性能和功耗效率。

现有的内核频率控制

让我们先来看看现有的内核频率控制。Linux内核使用Linux CPU freak框架来控制CPU时钟,并根据内核调度器的要求使用不同的策略,如性能模式、节能模式等。多年前,Linux内核实现了基于acpi的CPU freak驱动,这是一个很好的驱动,可以提供较好的解决方案。然而,当前的MD CPU平台仍在使用基于acpi的CPU freak驱动来管理CPU频率和时钟,而Intel处理器则逐渐转向了特定于平台的P型驱动。在MD处理器上,acpi CPU freak驱动可能存在性能和功耗效率方面的潜在问题。

MD处理器还提供了基于MRS寄存器的动态功耗管理功能。由于MRS是一个低延迟的模型,快于acpi AML代码解释器,我们决定开发一个新的mdp state驱动来替代acpi CPU freak驱动。新的驱动可以使用cppc频率范围来控制CPU频率,甚至可以利用内核调度器如CFS调度器来预测工作负荷并计算合理的性能值。我们主要使用调度器来优化解决方案,并管理向SMU CPU时钟发送的提示,计算最终的目标频率。

现有的内核还拥有几种调度器,如按需调度器、性能调度器、省电调度器和用户态调度器,用于控制大多数CPU处理器的频率调整。对于当前的MD Zen系列CPU,我们主要使用调度器2来预测工作负荷,并通过CFS提供的加载检查方法来估计实时的工作负荷。MD CPU频率驱动的设计是在CPU free子系统中创建一个名为mdp state的新内核模块。该模块可以访问与cppc相关的MSR寄存器,并管理与mdp state模块一起使用的cppc驱动接口。驱动核心在Linux内核中估算CPU使用率统计数据,并根据该数据决定是否提高或降低频率。然而,这种CPU统计数据主要由Linux内核中的acpi处理器闲置驱动程序控制。

MDP状态驱动

现在,让我们详细介绍一下MDP状态驱动。该驱动是一种实现各种操作的实例,用于回调函数中。它可以执行与MDP状态接口相关的性能和缩放控制,以及频率更新等功能。目标回调用于on demand和schedule util调度器,用于映射调度器中的功能。内核的频率调度器可以管理每个处理器核心的P状态性能提示,以及mdp state模块中的性能提示。未来,我们计划实现多种频率管理策略的切换代码和针对特定产品定制的不同管理过程。

MDP状态驱动还提供了跟踪工具,用于监视处理器的运行状态。该工具可用于性能调优和功耗调优,并将在性能调优中得到进一步的支持。我们还使用ACPICPPC模组来支持英雷达平台,并将ACPICPPC的实时支持集成到工具中,让用户可以方便地测试和调优性能数据。此外,我们还将MDP状态驱动的单元测试工具添加到自测中,以确保其在当前支持的平台上正常运行。

MDP状态还公开了一些全局属性文件,用于控制其在系统级别的功能。这些属性文件位于CPU free子系统中,并提供有关最高、默认和最低处理器性能值和频率的信息。用户可以使用CPU Power Tool来管理MDP状态模块,并进行性能配置。此外,我们还利用性能工具来监视能量消耗,同时运行各种CPU基准测试。这种方法可以用于性能评估和实时能量消耗的监控。

MDP状态驱动的功能

MDP状态驱动具有以下功能:

  1. 替代传统的acpi CPU freak驱动。
  2. 使用cppc频率范围来控制CPU频率。
  3. 集成调度器以预测工作负荷并计算合理的性能值。
  4. 提供静态追踪事件以进行性能调优。
  5. 开发用户空间追踪工具以记录和分析追踪日志。
  6. 实现频率更新功能以实时调整CPU频率。
  7. 提供全局属性文件以控制MDP状态功能。
  8. 支持性能测试工具和单元测试工具。

频率控制的性能测试

我们使用MDP状态驱动在多个CPU基准测试中进行了性能测试。测试结果显示,MDP状态在多个基准测试中表现出了良好的性能。与使用schedule_util调度器的其他性能调度器相比,MDP状态在性能调度器方面的性能有着2-3%的提升。测试环境如下,我们还在MDP状态UT中使用了T-Bench基准测试,用户可以在其平台上进行验证。

挑战与优化方向

在MDP状态驱动的开发过程中,我们仍面临一些挑战。首先,需要解决一些基准测试中的性能和功耗问题。其次,需要覆盖所有不同类型处理器的现有CPU平台,包括移动设备、台式机和服务器。第三,需要优化Steam Deck上的游戏性能。我们将继续优化现有的BIOS固件和内核驱动程序,以解决这些挑战,并改善MDP状态驱动的性能和功耗。

结论

总体而言,MDP状态驱动是一个全新的驱动程序,为MD处理器提供更好的性能和功耗效率控制。然而,该驱动程序仍处于初始阶段,需要进一步的优化和测试。我们将继续改进和完善MDP状态驱动,以解决存在的挑战,并进一步优化性能和功耗方面的问题。感谢大家的聆听,如果您有任何问题,请随时与我联系。谢谢!

FAQ

Q:MDP状态驱动能否在现有处理器上运行? A:MDP状态驱动可以在大多数支持cppc功能的MD处理器上运行。

Q:MDP状态驱动对性能和功耗的改善有多大? A:根据我们的测试结果,MDP状态驱动可以在某些基准测试中提供2-3%的性能提升。

Q:MDP状态驱动是否支持所有类型的处理器? A:我们的目标是覆盖所有不同类型处理器的现有CPU平台,包括移动设备、台式机和服务器。

Q:MDP状态驱动是否支持在游戏中的应用? A:我们将继续优化MDP状态驱动,以提高在游戏中的性能和功耗方面的表现。

资源

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.