国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

Linux PM QoS framework(1)_概述和軟件架構

2019-11-09 17:37:55
字體:
來源:轉載
供稿:網友

本文轉自:http://www.wowotech.net/pm_subsystem/pm_qos_overview.html

1. 前言

QOS為Quality Of Service(服務質量)的簡稱,對PM QoS而言,表示linux kernel電源管理相關的服務質量。那到底什么是服務質量呢?

我們知道,Linux PM的主要功能,是節(jié)省功耗,但同時,會付出一定的性能代價,例如延遲(latency)增加、吞吐量(throughput)下降。可以把PM當作一種服務,把它對性能的影響,類比為服務的質量(QoS)。對性能的影響越大,QoS越低,反之越高。

不過,PM QoS framework的存在,并不是為了定義并測量系統(tǒng)的服務質量(Linux系統(tǒng)對實際的qos沒有任何興趣),而是為了定義一套框架,以滿足系統(tǒng)各個實體(如進程、設備驅動等等)對QoS的期望為終極目標。根據(jù)實際的場景,這些期望可描述為:xxx不大于某個值;xxx不小于某個值;等等。

這個終極目標,是基于這樣的事實:機器是極端的實用主義者。最理想的狀況,是剛剛滿足系統(tǒng)各個實體對QoS的期望,因而可以在滿足需求的同時,最大化的省電。粗俗一點,就是“我能考60分,為什么要多花一點力氣去考61分?”。這樣的思路,值得我們深思。

本文將基于PM QoS framework整體的軟件架構,介紹它的功能、應用場景、使用方式等。

2. 工作原理

kernel將“系統(tǒng)各個實體對QoS的期望”抽象為一個一個的constraint(可以理解為約束),圍繞這些constraint,可以將系統(tǒng)的實體分為三類:requestor、pm qos framework和requestee。示意圖如下:

pm qos

requestors提出對QoS的constraint。常見的requestor包括應用進程、GPU device、net device、Flash device等等,它們基于自身的實際特性,需要系統(tǒng)的QoS滿足一定的條件,才能正常工作。

pm qos core負責匯整、整理這些constraint,并根據(jù)實際情況,計算出它們的極值(最大或者最小)。

requestee在需要的時候,從pm qos core處獲取constraint的極值,并確保自身的行為,可以滿足這些constraints。一般情況下,requestee都是電源管理有關的service,包括cpuidle、runtime pm、pm domain等等。

注: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之后,還要再回答一個問題:系統(tǒng)中到底有哪些constraint?這決定了request的對象。截至到目前,PM QoS framework將constraint分為2類,每一類包括若干個constraint,具體如下。

1)系統(tǒng)級的constraint,包括cpu&dma latency、network latency、network throughput和memory bandwidth 4個constraint。

2)設備級別的constraint,包括從低功耗狀態(tài)resume的latency、active狀態(tài)的latency和一些QoS flag(如是否允許power off)。

蝸蝸會在后續(xù)的文章中詳細描述這些constraints的意義,這里先有個大概的認識即可。

3. 軟件架構

根據(jù)上面2類constraint,Linux kernel提供了2個不同的QoS framework:

一個是系統(tǒng)級別的,用于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的查詢接口。其軟件架構(非常簡單)如下:

pm qos framework

PM QoS classes framework位于kernel/power/qos.c中,負責系統(tǒng)級別的PM QoS管理。per-device PM QoS framework位于drivers/base/power/qos.c中,負責per-device的PM QoS管理。Common header位于include/linux/pm_qos.h中,負責通用數(shù)據(jù)結構的抽象、函數(shù)聲明等工作。

需要說明的是,PM QoS classes framework會通過misc設備,向用戶空間程序提供PM QoS的request、modify、remove功能,以便照顧到它們對PM QoS的需求。

接下來的文章中,將分別從PM QoS classes framework和per-device PM QoS framework兩個角度描述PM QoS framework,本文就不再詳細描述了。

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 盐津县| 屏山县| 延长县| 犍为县| 肥乡县| 冀州市| 新平| 安多县| 汨罗市| 景宁| 奈曼旗| 平塘县| 沙洋县| 横山县| 哈巴河县| 府谷县| 应城市| 清丰县| 老河口市| 凉山| 祁东县| 桃园县| 奉贤区| 崇左市| 罗江县| 大荔县| 晋州市| 肇源县| 巫山县| 灌南县| 山东省| 始兴县| 榆林市| 灵石县| 崇明县| 玉林市| 莒南县| 临潭县| 溧水县| 上栗县| 宜丰县|