在本文中,“频率”是指时钟频率或CPU的操作频率。因此,术语“动态频率缩放”是指运行期间CPU时钟频率的变化。
现在,上面的定义将立即引起一个问题,为什么我们需要这样做?
该问题的答案在于性能与功耗之间的权衡。我们知道处理器的性能取决于两个指标,它们是:
- CPU响应时间
- CPU的吞吐量
性能度量用于确定计算机的性能,具体取决于计算机系统的应用程序。
例如,在个人计算系统的情况下,响应时间非常重要,通常是确定计算机性能的唯一基础。
而对于服务器而言,吞吐量(即在给定时间内完成的工作量)更为重要。
但是,出于本文的目的,当我们说“性能”时,我们将只关注响应时间。
一方面,我们可以增加CPU的时钟频率以减少其响应时间并改善其性能,但是在达到一定限制后,我们还需要增加输入到CPU的电压以维持其在高时钟频率下的稳定性,这反过来会增加CPU的功耗和散热,从而缩短了其使用寿命。
另一方面,我们可以将CPU的时钟频率降低到低于标准值,从而使我们能够降低CPU的电压,从而减少CPU的功耗量,但这对CPU性能产生了负面影响。
表现时钟频率功耗时钟频率
现在,动态频率缩放是一种在性能和功耗之间取得平衡的技术。它是指时钟频率的连续变化,以优化CPU的性能和功耗。
现在,通过使用的频率缩放算法和当前的CPU负载来确定缩放CPU频率的方式。这些频率缩放算法是内核代码的一部分。
Linux内核中使用的一些最常见的频率缩放算法是:
- 表现:
该频率缩放算法将CPU的频率静态地固定为可能的最高值。这会增加CPU的功耗 - 节能:
该频率缩放算法将CPU的频率静态地固定为可能的最低值。这会损害系统的性能。 - 保守的:
此频率缩放算法将CPU的频率调整为某个最小可能值,以将CPU负载保持在一定百分比以下。该算法尝试在保持功耗的同时优化功耗。