首页 > 系统相关 >Linux PM QoS framework(1)_概述和软件架构

Linux PM QoS framework(1)_概述和软件架构

时间:2023-01-26 17:55:46浏览次数:40  
标签:QoS constraint framework 软件架构 device qos PM

1. 前言

QOS为Quality Of Service(服务质量)的简称,对PM QoS而言,表示Linux kernel电源管理相关的服务质量。那到底什么是服务质量呢?

我们知道,Linux PM的主要功能,是节省功耗,但同时,会付出一定的性能代价,例如延迟(latency)增加、吞吐量(throughput)下降。可以把PM当作一种服务,把它对性能的影响,类比为服务的质量(QoS)。对性能的影响越大,QoS越低,反之越高。

不过,PM QoS framework的存在,并不是为了定义并测量系统的服务质量(Linux系统对实际的qos没有任何兴趣),而是为了定义一套框架,以满足系统各个实体(如进程、设备驱动等等)对QoS的期望为终极目标。根据实际的场景,这些期望可描述为:xxx不大于某个值;xxx不小于某个值;等等。

这个终极目标,是基于这样的事实:机器是极端的实用主义者。最理想的状况,是刚刚满足系统各个实体对QoS的期望,因而可以在满足需求的同时,最大化的省电。粗俗一点,就是“我能考60分,为什么要多花一点力气去考61分?”。这样的思路,值得我们深思。

本文将基于PM QoS framework整体的软件架构,介绍它的功能、应用场景、使用方式等。

2. 工作原理

kernel将“系统各个实体对QoS的期望”抽象为一个一个的constraint(可以理解为约束),围绕这些constraint,可以将系统的实体分为三类:requestor、pm qos framework和requestee。示意图如下:

image

requestors提出对QoS的constraint。常见的requestor包括应用进程、GPU device、net device、flash device等等,它们基于自身的实际特性,需要系统的QoS满足一定的条件,才能正常工作。

pm qos core负责汇整、整理这些constraint,并根据实际情况,计算出它们的极值(最大或者最小)。

注:requestor和requestee这两个词汇,是蜗蜗自己造出来的,只是为了理解方便。实际上,Linux kernel使用“QoS dependencies”的概念,分别用“Dependents on a QoS value”和“Watchers of QoS value”表述这两个实体,具体可参考kernel/power/qos.c和drivers/base/power/qos.c的文件header。

介绍完requestor和requestee之后,还要再回答一个问题:系统中到底有哪些constraint?这决定了request的对象。截至到目前,PM QoS framework将constraint分为2类,每一类包括若干个constraint,具体如下。

1)系统级的constraint,包括cpu&dma latency、network latency、network throughput和memory bandwidth 4个constraint。

2)设备级别的constraint,包括从低功耗状态resume的latency、active状态的latency和一些QoS flag(如是否允许power off)。

蜗蜗会在后续的文章中详细描述这些constraints的意义,这里先有个大概的认识即可。

3. 软件架构

根据上面2类constraint,Linux kernel提供了2个不同的QoS framework:

一个是系统级别的,用于cpu&dma latency、network latency、network throughput、memory bandwidth等场合,称作PM QoS classes framework。

另一个是device级别的,用于per-device场合,称作per-device PM QoS framework。

这2个framework有着共同的目标,即:向requestors提供request的add、modify、remove等接口,用于管理QoS requests;将QoS requests分门别类,计算出极值(简称value);向requestee提供request value的查询接口。其软件架构(非常简单)如下:

image

PM QoS classes framework位于kernel/power/qos.c中,负责系统级别的PM QoS管理。per-device PM QoS framework位于drivers/base/power/qos.c中,负责per-device的PM QoS管理。Common header位于include/linux/pm_qos.h中,负责通用数据结构的抽象、函数声明等工作。

需要说明的是,PM QoS classes framework会通过misc设备,向用户空间程序提供PM QoS的request、modify、remove功能,以便照顾到它们对PM QoS的需求。

接下来的文章中,将分别从PM QoS classes framework和per-device PM QoS framework两个角度描述PM QoS framework,本文就不再详细描述了。

标签:QoS,constraint,framework,软件架构,device,qos,PM
From: https://www.cnblogs.com/linhaostudy/p/17067985.html

相关文章

  • CTK Plugin Framework插件框架学习--CTK服务工厂
    一、前言注册服务的时候能够用服务工厂来注册;访问服务​​getServeice​​​中的​​plugin​​​参数是执行​​ctkPluginContext::getService(constctkServiceReference&......
  • Django rest framework
    今天慢慢睁开眼睛,做了好吃的,看到下雪了,不过也没有小时候那种看到雪就要去打雪仗堆雪人的兴致,便打开教程刷了起来。昨天100多米买了Django的极客时间课程,说实话讲得还......
  • 在尝试加载程序集 ID 65536 时 Microsoft .NET Framework 出错。服务器可能资源不足,或
    SqlServer 函数中执行的程序集但用户的权限不够,后DBA使用sa 账号设置了就对了网上找到的解决方法:这数据库是从其他数据库还原到本地数据库的,不少网友说在还原数据库之后,......
  • django rest_framework 视图api开发
     importjsonfromdjango.httpimportJsonResponsefromdjango.views.decorators.csrfimportcsrf_exemptfromdjango.viewsimportViewfromdjango.utils.decorator......
  • ASP.NET Core 实战-12.使用 Entity Framework Core 保存数据
    介绍EntityFrameworkCore数据库访问代码在Web应用程序中无处不在。无论您是构建电子商务应用程序、博客还是NextBigThing™,您都可能需要与数据库进行交互。不幸......
  • Solon Java Framework v1.12.2 发布
    一个更现代感的Java应用开发框架:更快、更小、更自由。没有Spring,没有Servlet,没有JavaEE;独立的轻量生态。主框架仅0.1MB。@ControllerpublicclassApp{publ......
  • RobotFrameWork 框架自动化工程
    RobotFrameWork框架工程RF工程骨架:工程名用例层用例脚本文件.robot页面层页面脚本文件.robot元素层元素脚本文件.robot数据层数据脚本文件.robot公共层公共脚......
  • Spring Framework的优势
    SpringFramework有很多优点。它们如下:1、预定义模板Spring框架提供了JDBC,Hibernate,JPA等技术的模板。 因此,无需编写过多的代码。它隐藏了这些技术的基本步骤。让我......
  • 谈谈软件架构之美
    引言: 软件架构就是在准确把控需求的基础上对系统的解剖。     而准确把控需求,不仅仅体现把控现有的需求,而且还要考虑到需求(可能)变化的部分。为程序的可延展性......
  • Django rest_framework 自定义捕获数据库错误
    自定义捕获错误fromdjango.dbimportDatabaseErrorfromrest_frameworkimportstatusfromrest_framework.responseimportResponsefromrest_framework.viewsimp......