初学Linux电源管理

news2025/1/8 17:36:58

学习文档出处:

万字整理 | 深入理解Linux电源管理:万字整理 | 深入理解Linux电源管理-CSDN博客

电源管理

因为设备需要用电,而且设备中的各个硬件所需要的电压是不一样的。故计算机需要对硬件的电源状态管理。但是电能并不是免费的,尤其是手机的电池容量是有限的,就需要节约电量,于是乎电源的省电管理就出来了。但是我们是为了愉快地设备,而不是为了一味省电。故为了平衡性能、用户体验和省电,内核就开发出了电源质量管理,让我们更好地使用设备。下图是电源管理的架构图

0

1.电源状态管理

电源状态

描述

睡眠/Sleep

Suspend To RAM

一般称STR,睡眠时,内存不断电,信息储存在内存中,可普通外设唤醒

休眠/Hibernate

Suspend to disk

一般称STD,休眠时,内存断电,信息在swap中,只能电源键唤醒

关机

重启相当于关机再开机,主要init进程进行关闭各个服务进程deamon、发送SIGTERM、SIGKILL、将内存数据同步到磁盘和内核关机

重启

自动睡眠/auto sleep

也称投机睡眠,内核默认情况总是尝试去睡眠,除非wakelock阻止。即睡眠是常态,运行不是常态

1.1 睡眠和休眠的共同点

睡眠和休眠的整体过程是相似的,都是暂停系统的运行、保存系统信息、关闭全部或大部分硬件的供电,这样设备不在使用的情况下可以最小功耗运行;当被唤醒时的过程正好相反,先恢复供电,然后恢复系统的运行,再恢复之前保存的信息,这样设备从电源键或其他外设唤醒时,就可以快速切换到进入运行状态了。

0

2.电源质量管理

2.1 省电管理

我们不使用电脑时可以进行睡眠、休眠甚至关机来进行省电,但是我们使用电脑时也可以有很多办法来省电。这些省电方法又可以分为两类,使用省电和闲暇省电。

2.1.1 CPU频率

Cpu频率架构分为:CPUFreq Govenor决策者、CPUFreq Core中间人和CPUFreq Driver执行者,三者关系是:CPUFreq决策者只能有且仅有一个,负责什么时候调频和调多少,将相应控制指令下发给中间人,中间人负责协调,继续将控制指令下发给CPUFreq执行者,执行者主要与硬件打交道完成相应频率控制。

CPUFreq决策者有6种,每次有且生效其中一个

CPUFreq Govenor决策者

描述

powersave

一直把CPU的频率设置为最大值

performance

一直把CPU的频率设置为最小值

ondemand

按需调整,默认运行在较低频率,系统负载增大时就运行在高频率

conservative

总是把频率往policy的最大值和最小值之间调整

userspace

按照用户空间设置的值进行调节频率

schedutil

根据CPU使用率动态调整频率

0

2.1.2 闲暇省电

闲暇省电

描述

CPU休闲(CPUIdle)

指的是当某个CPU上没有进程可调度的时候可以暂时局部关掉这个CPU的电源,从而达到省电的目的,当再有进程需要执行的时候再恢复电源。

CPU热插拔(CPU Hotplug)

指的是我们可以把某个CPU热移除,然后系统就不会再往这个CPU上派任务了,这个CPU就可以放心地完全关闭电源了,当把这个CPU再热插入之后,就对这个CPU恢复供电,这个CPU就可以正常执行任务了。

CPU隔离(Core Isolate)

CPU隔离指的是我们把某个CPU隔离开来,系统不再把它作为进程调度的目标,这样这个CPU就可以长久地进入Idle状态了,达到省电的目的。CPU隔离能达到一种介于CPUIdle和CPU热插拔之间的效果

动态PM(Runtime PM)

设备的动态电源管理,例如手机的夜间睡眠断网功能,待机关闭相机设备

2.2 电源管理质量 PM Qos

QoS是Quality Of Service(服务质量)平衡省电和性能的关系。

2.2.1 系统级约束-CPU 延迟

CPU延迟是CPU Idle之后从低功耗状态恢复到运行的时间,CPU idle之后可以处于不同的低功耗状态,状态越深越省电,但是恢复的延迟越大。

2.2.2 系统级约束-CPU 降频

CPU频率代表的是CPU运行时的性能,频率越高,性能越强,功耗也越大。故一般进行场景按需降频。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2273339.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

若依中Feign调用的具体使用(若依微服务版自身已集成openfeign依赖,并在此基础上定义了自己的注解)

若依中Feign调用具体使用 注意:以下所有步骤实现的前提是需要在启动类上加入注解 EnableRyFeignClients 主要是为开启feign接口扫描 1.创建服务提供者(provider) 导入依赖(我在分析依赖时发现若依本身已经引入openfeign依赖,并在此基础上自定义了自己的EnableRyF…

CS·GO搬砖流程详细版

说简单点,就是Steam买了然后BUFF上卖,或许大家都知道这点,但就是一些操作和细节问题没那么明白。我相信,你看完这篇文章以后,至少会有新的认知。 好吧,废话少说,直接上实操! 首先准…

每日一题:链表中环的入口结点

文章目录 判断链表环的入口节点描述数据范围:复杂度要求:输入输出 示例代码实现思路解析注意事项: 判断链表环的入口节点 描述 给定一个链表,判断该链表是否存在环。如果存在环,返回环的入口节点;如果不存…

以C++为基础快速了解C#

using System: - using 关键字用于在程序中包含 System 命名空间。 一个程序一般有多个 using 语句, 相当于C的 using namespace std; C# 是大小写敏感的。 所有的语句和表达式必须以分号(;)结尾。 程序的执行从 Main 方法开始。 与 Java 不同的是&#…

保险丝驱动电路·保险丝有什么用应该如何选型详解文章!!!

目录 保险丝基础知识 保险丝常见类型 保险丝功能讲解 保险丝驱动电路 ​​​​​​​ ​​​​​​​ 编写不易,仅供学习,请勿搬运,感谢理解 常见元器件驱动电路文章专栏连接 LM7805系列降压芯片驱动电路降压芯片驱动电…

如何在读博过程中缓解压力

博士生涯充满了挑战和压力,但通过一些实用的方法,我们可以有效地缓解这些压力。以下是我在博士期间采用的一些策略,希望能对正在读博或即将开始博士生涯的你有所帮助。 1. 周末彻底放松 在周末,我尽量避免进行论文写作。这两天…

ue5 替换角色的骨骼网格体和动画蓝图

一开始动画蓝图,骨骼网格体都是用的女性角色 现在把它换成男性 编译 保存 运行 把动画类换成ABP_Manny 进入ABP_Manny中 进入到idle 找到这个拖进来 编译 就变成站着端枪 运行一下,没有问题

西南大学计算机复试该怎么准备?有哪些注意事项?

西南大学计算机专业复试只有面试!只要你表现的自信大方,专业知识问题回答的很好,一般都没问题 一、考试内容 复试的考核内容包含以下几个方面: 1.专业素质和能力(占复试成绩的60%) (1&#x…

【UI自动化测试】selenium八种定位方式

🏡个人主页:謬熙,欢迎各位大佬到访❤️❤️❤️~ 👲个人简介:本人编程小白,正在学习互联网求职知识…… 如果您觉得本文对您有帮助的话,记得点赞👍、收藏⭐️、评论💬&am…

RDD的相关算子

一,算子的分类 整个DRR算子分为两大类: Transformation(转换算子): 返回值:是一个新的DRR 特点:转换算子只是定义数据的处理规则,并不会立刻执行,是lazy(…

简单编程实现QT程序黑色主题显示

代码如下 int main(int argc, char *argv[]) {QApplication a(argc, argv);//QSurfaceFormat::setDefaultFormat(QVTKOpenGLStereoWidget::defaultFormat());QPalette darkpalette;a.setStyle(QStyleFactory::create("Fusion"));darkpalette.setColor(QPalette::Wind…

【Redis】简介|优点|使用场景|为什么Redis快

目录 一、简介 二、特性(优点) 三、使用场景 一、简介 内存中存储数据的中间件,用于数据库,数据缓存,在分布式系统中能够大展拳脚 中间件:应用程序可以直接从 Redis 中获取数据,而不必频繁地…

封装深拷贝方法

前言 在今年的四月份我写了一篇有关深拷贝的博客文章 我与深拷贝_radash 深拷贝-CSDN博客。在该文章中有一个令我感到遗憾的点就是我没有实现一个自己手写的深拷贝。如今我想弥补当初的遗憾,在这篇文章中详细的讲述一下如何手写一个深拷贝方法。 lodash中是如何实…

maven多模块项目编译一直报Failure to find com.xxx.xxx:xxx-xxx-xxx:pom:1.0-SNAPSHOT in问题

工作中项目上因为多版本迭代,需要对不同迭代版本升级版本号,且因为项目工程本身是多模块结构,且依然多个其他模块工程。 在将工程中子模块的pom.xml中版本号使用变量引用父模块中定义的版本号时,一直报Failure to find com.xxx.x…

uniapp 微信小程序 自定义日历组件

效果图 功能&#xff1a;可以记录当天是否有某些任务或者某些记录 具体使用&#xff1a; 子组件代码 <template><view class"Accumulate"><view class"bx"><view class"bxx"><view class"plank"><…

Mysql--基础篇--函数(字符串函数,日期函数,数值函数,聚合函数,自定义函数及与存储过程的区别等)

MySQL提供了丰富的内置函数&#xff0c;涵盖了字符串处理、数值计算、日期和时间操作、聚合统计、控制流等多种功能。这些函数可以帮助你简化SQL查询&#xff0c;提升开发效率。 除了内置函数&#xff0c;MySQL还支持自定义函数&#xff08;User-Defined Functions&#xff09;…

关于Mac中的shell

1 MacOS中的shell 介绍&#xff1a; 在 macOS 系统中&#xff0c;Shell 是命令行与系统交互的工具&#xff0c;用于执行命令、运行脚本和管理系统。macOS 提供了多种 Shell&#xff0c;主要包括 bash 和 zsh。在 macOS Catalina&#xff08;10.15&#xff09;之前&#xff0c…

外卖院长帝恩以专业打法,开启外卖运营新格局

据中国饭店协会数据显示&#xff0c;2023年我国在线餐饮外卖市场规模已达到15254亿元&#xff0c;同比增长36.7%。预计到2027年&#xff0c;我国在线餐饮外卖市场规模有望达到19567亿元&#xff0c;行业渗透率有望达到30.4%。在这一蓬勃发展的行业背后&#xff0c;离不开无数从…

高清绘画素材3600多张动漫线稿线描上色练习参考插画原画

工作之余来欣赏一波线稿&#xff0c;不务正业版... 很多很多的线稿... 百度网盘 请输入提取码

Power BI如何连接Azure Databricks数据源?

故事背景: 近期有朋友询问&#xff0c;自己公司有一些项目使用了Azure Databricks用于数据存储。如何使用Power BI Desktop桌面开发软件连接Azure Databricks的数据源呢&#xff1f; 解决方案: 其实Power BI是提供了连接Azure Databricks数据源的选项的&#xff0c;只是配置…