源代码中插入调频点实现动态调频实验过程记录

天幕

  • 写在前面
  • 前置知识
  • 基本环境信息
  • 实现过程
    • 环境配置
      • 软件安装
      • 关闭睿频
      • 更改驱动
    • 命令行控制
    • 源代码控制
      • 具体方式
      • 项目构建
  • 结果提取
    • 功耗实时读取
    • 主频实时读取
    • 脚本控制
  • 数据处理

写在前面

1.root权限
2.笔记 不完善

前置知识

  • 睿频(Turbo Boost):英特尔处理器中的一项技术,旨在提高单个处理器核心的性能。它可以在需要更多计算能力时,自动动态调整处理器的工作频率,以提供更高的性能水平。

  • CPU频率管理驱动(Driver):一种软件或模块,用于操作系统与处理器之间的交互,以管理和调整处理器的工作频率。它可以根据系统负载、性能需求和功耗优化等因素,动态地修改处理器的频率,以平衡性能和能效。
    目前有以下几种常见的驱动程序

    • ACPI CPU 频率管理驱动(acpi-cpufreq):一种在 Linux 系统中广泛使用的 CPU 频率管理驱动。它通过 ACPI 接口与处理器通信,获取处理器的状态信息,并根据需要调整频率。
    • Intel P-state 驱动(intel_pstate):一种在英特尔处理器上使用的驱动。它使用英特尔处理器内部的硬件支持,根据负载情况自动选择最佳频率。Intel P-state 驱动在较新的 Linux 内核版本中被广泛采用。
    • Ondemand 驱动:一种旧版的 CPU 频率管理驱动,在一些较老的处理器上使用。它通过检测负载情况,根据系统负载动态地调整处理器的频率。(并不常见)

简易版解释

  • 睿频:简单说就是CPU超频设置的总开关,可以在BIOS中手动设置
  • CPU频率管理驱动:对于Intel的处理器而言,默认使用的驱动是Intel P-state驱动,这种驱动中只有自动调频的模式。如果需要手动调频,我们需要更换为ACPI CPU驱动,具体步骤见下文。

资料补充

由于作者知识有限,部分概念不能准确表述,在此提供一些相关资料以供读者自行了解

英特尔® 睿频加速技术
Intel SpeedStep®动态节能技术的常见问题。
linux 模块与驱动程序,Linux 内核模块和驱动程序的详细编写
简单认识驱动与模块


基本环境信息

  • CPU型号:GOLD6338
  • CPU架构:AMD64
  • Linux发行版:Ubuntu 20.04.2

仅展示实现过程相关项


实现过程

环境配置

软件安装

我们需要下载用于在线调节CPU时钟频率的工具包cpufrequtils,安装命令如下(不同的发行版可能不同)

apt-get install cpufrequtils


cpufrequtils下主要包含两个程序(具体的使用在后文中介绍)

/usr/bin/cpufreq-info  # used to show the general CPU information
/usr/bin/cpufreq-set   # used for setting

可以通过查看这两个程序来确定cpufrequtils是否成功安装(以cpufreq-info为例子)

cpufreq-info -c -0  # 展示cpu0的相关信息


正确安装cpufrequtils后应当返回的信息大致是如下样式

analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency:  Cannot determine or is not supported.
  hardware limits: 800 MHz - 4.20 GHz
  available frequency steps:  4.20 GHz, 4.10 GHz, 4.00 GHz, 3.90 GHz, 3.80 GHz, 3.70 GHz, 3.60 GHz, 3.50 GHz, 3.40 GHz, 3.30 GHz, 3.20 GHz, 3.10 GHz, 3.00 GHz, 2.90 GHz, 2.80 GHz, 2.70 GHz, 2.60 GHz, 2.50 GHz, 2.40 GHz, 2.30 GHz, 2.20 GHz, 2.10 GHz, 2.00 GHz, 1.90 GHz, 1.80 GHz, 1.70 GHz, 1.60 GHz, 1.50 GHz, 1.40 GHz, 1.30 GHz, 1.20 GHz, 1.10 GHz, 1.00 GHz, 900 MHz, 800 MHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 800 MHz and 4.20 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 800 MHz.

关闭睿频

关于睿频的相关介绍如上,这里主要讲关闭睿频的具体步骤

在摸索着进行此项工作时,我采取的方式是直接进入BIOS关掉睿频
实际上进入BIOS的方式和BIOS中的具体内容呈现都和使用的主板相关,因此在具体实现时的具体操作可能不同。要做的就是进入BIOS,找到“睿频”,并将“启用”切换为“禁用”(当然也可能不是中文显示的)

后来在别的资料中看到也可以在使用Intel P-state 驱动的情况下,使用以下命令关闭睿频

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

相反的也可以通过echo 0来开启睿频

echo 0 >  /sys/devices/system/cpu/intel_pstate/no_turbo

该命令主要是找到系统文件 no_turbo 并进行更改,如果在不同的架构或者驱动下,也可以尝试通过一下命令找到该文件的具体位置并进行修改

find / -name "no_turbo"

照相关资料的说法是可以即可生效,如果没有生效的话也许可以通过重启服务器解决。
当然事实上也可能找不到 no_turbo ,这个时候就老老实实去BIOS里改吧

由于最开始在摸索着实现动态调频时对睿频的理解还比较浅显,因此采取了直接关闭睿频的做法
现在想来事实上跟BIOS直接相关的也只有performance模式(后文将详细解释),因此关闭睿频未必是个必要步骤。这里暂且存疑,之后确定了再来完善。

  • 目前状态:存疑

推荐一篇介绍BIOS的小文章《如何进入BIOS?》
Intel官方的问题解决 英特尔® 睿频加速技术是如何启用或禁用的?

更改驱动

命令行控制

源代码控制

具体方式

项目构建


结果提取

功耗实时读取

主频实时读取

脚本控制


数据处理

你可能感兴趣的:(实验报告,linux,性能优化)