【问题标题】:Dynamic frequency scaling动态频率缩放
【发布时间】:2016-01-05 23:17:32
【问题描述】:

我想调整 CPU 频率,换句话说,在 windows 中寻找用于频率缩放的 API 或 c++ 代码?

【问题讨论】:

  • 在您提出要求之前,您应该考虑这种 API 在多处理操作系统上的语义,在这种操作系统中,您所追求的代码大概是在用户空间中运行的。
  • 这并不是你在用户模式下可以做的事情......通常这是通过内核模式驱动程序实现的。您可以采取一些措施来降低 CPU 扩展的可能性,但除此之外,您就没有运气了
  • 您还应该考虑这样一个事实,尽管您的意图是最好的,但降低 CPU 频率实际上可能会增加功耗。有代码运行时 CPU 频率最大化,无代码运行时 CPU 频率最小化,性能最佳。换句话说:运行代码通常是全速最有效的。因此,几乎只有调度程序和电源/热管理层具有有效切换 CPU 频率所需的知识。你,在用户区,不要也不会。
  • 我正在计划构建一个程序来测量 CPU 利用率,并在此基础上降低 CPU 频率以降低功耗..
  • 正如我之前所说:降低 CPU 频率将使 CPU 在活动状态下运行的时间比在非活动状态下运行的时间长,并且在许多 CPU 上它将增加功耗。无论如何,您的“程序”都需要是内核驱动程序,因为内核中唯一真正实时的 CPU 利用率信息是可用的,至少在 Windows、Linux 和 OS X 上是这样。

标签: windows winapi


【解决方案1】:

在Windows中,可以调用SetPriorityClass设置进程的优先级

你也可以通过调用SetThreadPriority来设置线程的优先级

【讨论】:

  • 我认为作者的意思是超频他的 PC CPU,而不是增加他的应用程序在 CPU 上的时间。
  • 这不是答案。
  • @KubaOber 抱歉,您看到上面的文字中隐藏了一个问题吗?
  • 谢谢大家,为了理解我,我正计划构建一个程序来测量 CPU 利用率,并在此基础上降低 CPU 频率以降低功耗..
  • 我已经找到了一个用于电池状态和 CPU 利用率的 API 结构,但用于 CPU 频率。调整我还在挣扎
【解决方案2】:

CPU 时钟速度不是只需要执行一些简单指令的东西。时钟速度由主板芯片组控制,而时钟速度又由主板特定的设备驱动程序控制。

您可以通过使用 Windows 电源管理设置来控制时钟速度。减慢速度和节省能源的常用方法是在此基础上选择设置。现代笔记本电脑、平板电脑和手机计算机具有极其复杂的算法,但您可以向它们暗示功耗更低的方向。

如果您只需要这些,您或许可以自动化这些 Windows 程序的操作。

许多主板都具有超频能力和控制它的实用程序。如果你有这样的主板,你可能会找到一种方法来自动化它的控制程序,或者它可能会提供一个 API。它不会是一个通用的解决方案,而是一个高度特定于主板的解决方案。请咨询您的主板供应商。

是否有通用的 Windows 功能来执行此操作?据我所知,没有,但那里可能藏着什么东西。如果存在,它将是对需要管理员权限的设备驱动程序的特权调用。我的情况是它没有。

【讨论】:

    【解决方案3】:

    你可以使用:PowerWriteDCValueIndex(); / PowerWriteACValueIndex();与 PowerSetActiveScheme(NULL, pwrGUID);

    【讨论】:

      猜你喜欢
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      • 2011-06-24
      • 2013-04-05
      • 2012-06-21
      相关资源
      最近更新 更多