C state和P state 一些體會

2021-10-24 13:46:25 字數 2697 閱讀 8474

c state和p state是某些cpu的一些硬體上的特性。有些朋友可能會混淆兩者的關係。通過在使用過程中的調查和驗證,做的筆記如下:

c stat

是電源節能的乙個feature, 通過在cpu 負載不忙的時候,通過關閉cpu內部的不同器件的電源,來達到節能的目的。c state節能有兩個,乙個是package cstate,乙個是core cstate. package對應的是乙個物理cpu,core對應的就是物理cpu內部的物理core。

對應級別如下:

c0:是乙個active狀態,說明正在執行指令。就是有任務正在執行時的狀態。注意,這個狀態並不意味著cpu是最高頻率,只要有任務在執行,cpu即使低頻率也是在c0狀態。從供電角度看,cpu所有的器件都在供電。

c1:halt狀態,沒有load在執行,此時core的clock關閉,此狀態會很快返回c0狀態。

c1e:這個也屬於c1型別,但是會用最低頻率和電壓降低

其他見下表

上面的圖說明不同的c state狀態關閉的器件不同,頻率也不同。不同c狀態返回到c0狀態時間也不同

p-state

曾經何時,人們一直認為p-state 只和cpu的頻率相關。當前,p-state是cpu電壓和頻率的操作點的集合,電壓和頻率都會隨著p state狀態的改變而同時發生變化。p state目的根據負載是動態的增加和減少cpu電壓和頻率,以達到使用者在節能和效能方面的需求。

上面的圖,說明p state的操作點是從p0->pn, p0顯示的睿頻範圍的頻率,睿頻也分等級,從hfm->turbo

p1 是cpu的基頻,就是通過lscpu看到的下面的頻率。

model name:            intel(r) xeon(r) cpu e5-2683 v4 @ 2.10ghz

這個表示系統在沒有睿頻的情況下,能達到最高的頻率。

如何在linux核心看p state引數

#ls /sys/devices/system/cpu/intel_pstate/

max_perf_pct min_perf_pct no_turbo num_pstates turbo_pct

p state是按照比列來調節的系統頻率的。

max_perf_pct 最大的比例,這個值可以調節頻率使用的最大值,一般為100%

no_turbo  是否是睿頻,0為開啟睿頻,1 為關閉睿頻

num_pstates  處理器支援的p狀態數量。這個值在0-255之前。包含了睿頻和非睿頻p-state。此屬性是唯讀的。

turbo_pct 睿頻的p-state佔整個處理器允許的p-state的百分比,這個屬性唯讀

min_perf_pct 最小比列,p-state能夠調到最小頻率的比例,這個比例最節能

如何使用

設定最大使用頻率可以將min_perf_pct 設定為100%

echo 100 >  /sys/devices/system/cpu/intel_pstate/min_perf_pct

設定系統使用最高使用只能是最小頻率。那就設定max_perf_pct為系統的min_perf_pct預設值,這個cpu只能在最小頻率執行

p state如何計算的

上面的這個圖是p state的動態計算的公式,是基於反饋機制計算的。有機會研究下這個公式

注意的地方:

很多人會將p state和c state混淆,即使明白的也不一定清楚p state和c state之前的聯絡是什麼。從調查的資料看p state對應的是c0這個狀態,就是有load情況的電壓和頻率的調節。其它的cx都是節能狀態,是沒有負載的情況。換句話說,cx(x>0)狀態已經沒有負載了,根本就不需要p state。

效能的誤區:

只設定了高頻率就好了,比如一般人都會用cpupower frequency-set -g performance這個命令這個命令使能後,某個cpu會達到睿頻最大的頻率。但是別忘了,當核心指令執行到類似halt和mwait指令時,cpu還是會進入c state睡眠的狀態的,導致喚醒時執行效率降低,正確的是首先檢視當前c state一共幾個狀態

從截圖看一共5個狀態。

如果設定高效能模式,還要加入這個命令

cpupower -c all idle-set -d 5 

這個命令的意思是,就是關閉所有的大於5ns的c state。本例就是cpu在沒有任務執行時,只能到c1-hsw這個狀態,這個狀態是的cpu進入執行狀態只需要2ns

高效能模式並不一定是高的計算力,一般認為高效能就是cpu頻率要最大在行,個人認為高效能模式分為兩類,乙個是高的吞吐量,乙個是高的計算力

高的吞吐量:比如web服務等,這個需要頻率不能波動太大,太大會抖動,就會影響服務質量;這個時候就不能設定睿頻(關閉睿頻)。要將頻率固定到基本頻率

高吞吐量和高計算力都是效能要求,但是設定的方式卻打不同。

一些人,一些事,一些

我覺得這是國內it企業浮躁和傳統的官本位性質決定的,導致國內企業都本末倒置。要想改變命運,我覺得有以下出路 1.不做技術了,改做混混 混混的概念很廣泛的,比如銷售 經理 幹部 皮包公司之類其實都屬於這類。中國就是這樣,越浮越掙錢,只有混混才能發財。要不更進一步,做流氓,廣義的流氓,也很不錯。2.專心...

JS和一些看法

原帖 http topic.csdn.net u 20100421 16 817ef7c6 6675 49e1 bf39 b4a96c08b41e.html 1 字串轉換為數值 常規方法 code var a parsefloat 12 var b parseint 34 可以用code var a...

和 的一些用法

是邏輯與運算子,是邏輯或運算子,而且兩個都是短路的,即 和 和 還是不一樣的,和 是短路邏輯與和邏輯或。當計算機執行 時,當 第一條件為false時,就不再判斷我第二條件 當 第一條件為true時,就不再判斷第二條件 所以除了做邏輯判斷的作用外,還可以作條件判斷加賦值,充當某種情況的ifelse使用...