当前位置: 首页 > news >正文

系统卡死问题分析

CPU模式

CPU Frequency Scaling (CPUFREQ)

Introduction

CPU频率调节设备驱动程序的功能。该驱动程序允许在运行过程中更改CPU的时钟频率。一旦CPU频率被更改,必要的电源供应电压也会根据设备树脚本(DTS)中定义的电压值进行变化。通过降低时钟速度,这种方法可以减少功耗(从而节省电池电量),因为CPU在时钟速度降低时使用的功率较少。

Software Operation

这段内容描述了CPUFREQ设备驱动程序的功能和工作原理。

CPUFREQ设备驱动程序被设计用于实时改变CPU的频率和电压。如果DTS(设备树结构)中没有定义频率,在这种情况下,CPUFREQ驱动程序会将CPU频率更改为最接近的更高频率。频率的变化是通过使用时钟框架API来实现的,而电压则是通过调节器API进行设置的。

CPU频率数组中的频率基于引导CPU的频率。此外,该驱动程序使用交互式CPU频率调度器(governor),该调度器不允许手动更改。如果需要手动更改CPU频率,可以使用用户空间CPU频率调度器。

在Linux中,内核的开发者定义了一套框架模型来完成CPU频率动态调整这一目的,它就是CPU Freq系统。如下为CPU的几种模式(governor参数):

ondemand:系统默认的超频模式,按需调节,内核提供的功能,不是很强大,但有效实现了动态频率调节,平时以低速方式运行,当系统负载提高时候自动提高频率。以这种模式运行不会因为降频造成性能降低,同时也能节约电能和降低温度。一般官方内核默认的方式都是ondemand。

interactive:交互模式,直接上最高频率,然后看CPU负荷慢慢降低,比较耗电。Interactive 是以 CPU 排程数量而调整频率,从而实现省电。InteractiveX 是以 CPU 负载来调整 CPU 频率,不会过度把频率调低。所以比 Interactive 反应好些,但是省电的效果一般。

conservative:保守模式,类似于ondemand,但调整相对较缓,想省电就用他吧。Google官方内核,kang内核默认模式。

smartass:聪明模式,是I和C模式的升级,该模式在比interactive 模式不差的响应的前提下会做到了更加省电。

performance:性能模式!只有最高频率,从来不考虑消耗的电量,性能没得说,但是耗电量。

powersave 省电模式,通常以最低频率运行。

userspace:用户自定义模式,系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节CPU 运行频率使用。也就是长期以来都在用的那个模式。可以通过手动编辑配置文件进行配置

Hotplug:类似于ondemand, 但是cpu会在关屏下尝试关掉一个cpu,并且带有deep sleep,比较省电。

Linux 内核中与 CPU 调频相关的驱动程序文件

drivers/cpufreq/cpufreq.c

drivers/cpufreq/cpufreq.c 是 Linux 内核中与 CPU 调频相关的驱动程序文件。CPU 调频是根据负载需求动态调整 CPU 频率的过程,以提供性能和能源效率的平衡。

该文件位于 Linux 内核的 drivers/cpufreq/ 目录下,它包含了与 CPU 调频相关的函数、数据结构和算法等。

cpufreq.c 文件中的代码实现了 CPU 调频的主要功能,例如:

- 初始化 CPU 调频框架及相关数据结构。

- 支持不同的调频策略,如 performance、powersave、ondemand 等。

- 根据系统负载情况选择合适的 CPU 频率。

- 处理频率切换请求,并相应地更新 CPU 频率。

- 提供与 CPU 调频相关的接口供其他模块或用户空间程序使用。

请注意,cpufreq.c 文件中的具体实现会因为不同的内核版本而有所差异。因此,如果您想深入了解该文件的内容,最好参考特定内核版本的代码或相关文档。

在这里插入图片描述

修改imx8系统的cpu频率

1.查看可用的调频策略

使用以下命令查看当前可用的 CPU 调频策略:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

2.查看当前频率及调频策略

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QVw1Azmf-1692502397112)(file:///C:\Users\wanji\AppData\Local\Temp\ksohtml6988\wps2.jpg)]

3.调频策略为performance

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ud3sKESy-1692502397113)(file:///C:\Users\wanji\AppData\Local\Temp\ksohtml6988\wps3.jpg)]

4.查看当前频率

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nI6munZY-1692502397113)(file:///C:\Users\wanji\AppData\Local\Temp\ksohtml6988\wps4.jpg)]

同理设置低频

echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1RstI4o1-1692502397114)(file:///C:\Users\wanji\AppData\Local\Temp\ksohtml6988\wps5.jpg)]

设置某一特定频率

echo userspace > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

echo 900000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

Menu Configuration Options

The following Linux kernel configuration is provided for this module:

• CONFIG_CPU_FREQ; In menuconfig, this option is located under:

– CPU Power Management > CPU Frequency scaling

• The following options can be selected:

– CPU Frequency scaling

– CPU frequency translation statistics

– Default CPU frequency governor (conservative)(interactive)

– Performance governor

– Powersave governor

– Userspace governor for userspace frequency scaling

– Interactive CPU frequency policy governor

– Conservative CPU frequency governor

– Schedutil CPU frequency governor

– CPU frequency driver for i.MX CPUs

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dr88TyHF-1692502397115)(file:///C:\Users\wanji\AppData\Local\Temp\ksohtml6988\wps6.jpg)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZnkgP0I5-1692502397115)(file:///C:\Users\wanji\AppData\Local\Temp\ksohtml6988\wps7.jpg)]

一般使用make defconfig生成.config,使用make menuconfig加载.config 然后更新,具体可参考下面的使用

make menuconfig 与.config的关系

make menuconfig 是 Linux 内核源代码中的一个工具,用于以交互式方式配置内核选项。它允许用户在编译和构建内核之前选择和调整各种内核配置。

与之相关的是 .config 文件,它是内核配置的主要配置文件。.config 文件包含了通过 make menuconfig 或其他类似工具进行的所有配置选择,并指定了编译内核时要使用的选项和参数。

当您运行 make menuconfig 命令时,它会加载 .config 文件中的配置选项,并将其显示在交互式菜单中。您可以通过这个菜单选择、启用或禁用特定的内核功能、驱动程序和模块等等。在菜单中进行的配置更改会更新 .config 文件中的相应选项。

当您完成 make menuconfig 的配置并保存退出时,所做的修改将自动写入 .config 文件中。然后,您可以使用该 .config 文件来编译和构建内核,确保生成适合您选择的配置的内核镜像和内核模块。

总结来说,make menuconfig 是一个交互式配置工具,用于编辑 .config 文件中的内核选项。.config 文件存储了内核的配置信息,供编

相关文章:

系统卡死问题分析

CPU模式 CPU Frequency Scaling (CPUFREQ) Introduction CPU频率调节设备驱动程序的功能。该驱动程序允许在运行过程中更改CPU的时钟频率。一旦CPU频率被更改,必要的电源供应电压也会根据设备树脚本(DTS)中定义的电压值进行变化。通过降低时钟速度,这种方法可以减少功耗…...

中大许少辉博士中国建筑出版传媒八一新书《乡村振兴战略下传统村落文化旅游设计》百度百科新闻

中大许少辉博士中国建筑出版传媒八一新书《乡村振兴战略下传统村落文化旅游设计》百度百科新闻: 乡村振兴战略下传统村落文化旅游设计 - 百度百科 https://baike.baidu.com/item/乡村振兴战略下传统村落文化旅游设计/62588677 概览 《乡村振兴战略下传统村落文化旅游…...

int和Integer的不同

一个奇怪的事情&#xff0c;在int[]用 Arrays.asList 转List 的时候&#xff0c;转过去的是List<int[]>。而不是List<int>类型的。于是试了String和Integer类型。发现只有Int[]有问题。 package com.test.lc;import java.util.ArrayList; import java.util.Arrays…...

eslintignore无效解决办法

项目的根目录下新建.eslintignore&#xff0c;但是无论怎么配置&#xff0c;该文件总是无法生效。本想解决不生效的问题&#xff0c;但是一直无法解决&#xff0c;于是换了一种解决问题的思路。 方法一&#xff1a; 在需要进行忽略的文件顶部加上 /* eslint-disable */这样e…...

C# 学习笔记

此笔记极水~ &#xff0c;来自两年前的库存。 是来自 B站 刘铁猛大佬 的视频&#xff0c;因为 好奇学了学。 其他 c# 变量的 内联赋值 vs. 构造函数内赋值 (引用自&#xff1a;https://www.iteye.com/blog/roomfourteen224-2208838) 上下文&#xff1a;c#中变量的内联赋值其…...

算法练习(8):牛客在线编程08 字符串

package jz.bm;import java.util.Arrays;public class bm8 {/*** BM83 字符串变形*/public String trans(String s, int n) {StringBuilder res new StringBuilder();//大小写转换for (int i 0; i < n; i) {if (s.charAt(i) > a && s.charAt(i) < z) {res.a…...

深入理解分布式架构,构建高效可靠系统的关键

深入探讨分布式架构的核心概念、优势、挑战以及构建过程中的关键考虑因素。 引言什么是分布式架构&#xff1f;分布式架构的重要性 分布式系统的核心概念节点和通信数据分区与复制一致性与一致性模型负载均衡与容错性 常见的分布式架构模式客户端-服务器架构微服务架构事件驱动…...

为什么选择elasticsearch分布式搜索引擎

文章目录 &#x1f52d;什么是elasticsearch&#x1f320;ELK技术栈&#x1f320;elasticsearch和lucene&#x1f320;为什么不是其他搜索技术&#xff1f; &#x1f52d;总结 &#x1f52d;什么是elasticsearch elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常…...

一百五十九、Kettle——Kettle9.2通过配置Hadoop clusters连接Hadoop3.1.3(踩坑亲测、附流程截图)

一、目的 由于kettle的任务需要用到Hadoop&#xff08;HDFS&#xff09;&#xff0c;所以就要连接Hadoop服务。 之前使用的是kettle9.3&#xff0c;由于在kettle新官网以及博客百度等渠道实在找不到shims的驱动包&#xff0c;无奈换成了kettle9.2&#xff0c;kettle9.2的安装…...

渗透测试之逻辑漏洞

文章目录 一、支付漏洞1.修改附属值2.多重替换支付3.重复支付4.最小额支付5.最大值支付6.越权支付7.无限制试用8.多线程并发9.支付漏洞思路 二、密码找回漏洞1.本地验证绕过2.利用session重新绑定客户3.去掉验证参数绕过4.总结 三、短信验证码绕过1.短信验证码生命期限内可暴力…...

HTML class 中 CSS名称的顺序并不重要

的确是这样&#xff01;我可以证明。让我们先来看一些CSS代码: .a {color: red; }.b {color: blue; }现在让我们看一些标记: <div class"a b">Here’s some text</div>文本会是蓝色的&#xff0c;因为.b 在CSS中是最后定义的&#xff0c;对吧&#xff…...

设计模式8:代理模式-静态代理

我尝试在JDK、Android SDK和一些出名的库中&#xff0c;寻找静态代理的源码&#xff0c;没能找到。如果有读者发现&#xff0c;欢迎评论或者私信我。 本文目录 静态代理的实例1. 售票代理2. 明星代理 静态代理的实例 1. 售票代理 售票服务 public interface TicketService {…...

运动耳机哪款好用、适合运动的耳机推荐

如今&#xff0c;蓝牙耳机不仅是手机的最佳伴侣&#xff0c;也成为了运动爱好者的必备装备。但是&#xff0c;在如此众多的蓝牙耳机中&#xff0c;你是否对选购感到困惑呢&#xff1f;实际上&#xff0c;选择适合运动的蓝牙耳机需要考虑许多因素&#xff0c;如舒适度、稳固性、…...

页面滑动到可视区域加载更多内容思维流程

页面滑动到可视区域加载更多内容思维流程...

Java Word转PDF(直接转和以图片形式转)、PDF转图片、图片转PDF

在淘宝上找了一家写代码的店铺写了一个工具类&#xff0c;再参考网上的代码&#xff0c;改了改 用到的类库&#xff1a; <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/fontbox --><!--word转pdf--><dependency><groupId>com.documents4…...

dockerfile编写LNMP

目录 1. 项目环境 2. 服务器环境 二、部署nginx&#xff08;容器IP为192.168.158.26&#xff09; 1、整个Dockerfile文件内容 ​编辑 2、配置nginx.conf文件 3、构建镜像 三、部署mysql 1、整个Docker文件内容 3、生成镜像 4、启动镜像容器 5、验证mysql 四、PHP部署 1…...

websocket + stomp + sockjs学习

文章目录 学习链接后台代码引入依赖application.ymlWebSocketConfigPrivateControllerWebSocketService WebSocketEventListenerCorsFilter 前端代码Room.vue 学习链接 WebSocket入门教程示例代码&#xff0c;代码地址已fork至本地gitee&#xff0c;原github代码地址&#xff…...

ApplicationListener , @EventListener 和 CommandLineRunner 启动顺序验证

一. 背景 排查线上问题, 发现一个重要功能的全局锁线程启动延迟很高. 服务启动40分钟之后, 才能拿到锁. 排查之后发现原因是因为代码引入了高优先级的ApplicationListener代码, 导致全局锁线程启动延迟. 二. 结论 启动顺序从高到底依次为: ApplicationListener , EventListe…...

网络编程基础(1)

目录 网络编程解决是跨主机的进程间通讯 1、网络 2、互联网 3、ip地址 &#xff08;1&#xff09;ipv4: &#xff08;2&#xff09;ipV6:1 &#xff08;3&#xff09;IP地址的组成&#xff1a; (4)Linux查看IP地址&#xff1a;ifconfig 4、mac地址 5、ping Ip地址 6…...

Linux驱动开发(Day4)

思维导图&#xff1a; 字符设备驱动分步注册&#xff1a;...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

【分享】推荐一些办公小工具

1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由&#xff1a;大部分的转换软件需要收费&#xff0c;要么功能不齐全&#xff0c;而开会员又用不了几次浪费钱&#xff0c;借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...

C#中的CLR属性、依赖属性与附加属性

CLR属性的主要特征 封装性&#xff1a; 隐藏字段的实现细节 提供对字段的受控访问 访问控制&#xff1a; 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性&#xff1a; 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑&#xff1a; 可以…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...

Python 实现 Web 静态服务器(HTTP 协议)

目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1&#xff09;下载安装包2&#xff09;配置环境变量3&#xff09;安装镜像4&#xff09;node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1&#xff09;使用 http-server2&#xff09;详解 …...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...