24.電源管理
DPDK電源管理功能允許用戶空間應(yīng)用程序通過動(dòng)態(tài)調(diào)整CPU頻率或進(jìn)入不同的C-State來節(jié)省功耗躲撰。
- 根據(jù)RX隊(duì)列的利用率動(dòng)態(tài)調(diào)整CPU頻率挫以。
- 根據(jù)自適應(yīng)算法進(jìn)入不同層次的C-State屏鳍,以推測(cè)在沒有收到數(shù)據(jù)包的情況下暫停應(yīng)用的短暫時(shí)間段。
調(diào)整CPU頻率的接口位于電源管理庫(kù)中摔寨。C-State控制是根據(jù)不同用例實(shí)現(xiàn)的闲询。
24.1CPU頻率縮放
Linux內(nèi)核提供了一個(gè)用于每個(gè)lcore的CPU頻率縮放的cpufreq模塊袍祖。例如底瓣,對(duì)于cpuX, /sys/devices/system/cpu/cpuX/cpufreq/具有以下用于頻率縮放的sys文件:
- fected_cpus
- os_limit
- uinfo_cur_freq
- uinfo_max_freq
- uinfo_min_freq
- uinfo_transition_latency
- lated_cpus
- aling_available_frequencies
- aling_available_governors
- aling_cur_freq
- aling_driver
- aling_governor
- aling_max_freq
- aling_min_freq
- aling_setspeed
在DPDK中,scaling_governor在用戶空間中配置蕉陋。然后捐凭,用戶空間應(yīng)用程序可以通過寫入scaling_setspeed來提示內(nèi)核以根據(jù)用戶空間應(yīng)用程序定義的策略來調(diào)整CPU頻率。
24.2. 通過C-States調(diào)節(jié)Core負(fù)載
只要指定的lcore無任務(wù)執(zhí)行凳鬓,可以通過設(shè)置睡眠來改變Core狀態(tài)茁肠。在DPDK中,如果在輪詢后沒有接收到分組缩举,則可以根據(jù)用戶空間應(yīng)用定義的策略來觸發(fā)睡眠垦梆。
24.3.電源管理庫(kù)API概述
電源管理庫(kù)導(dǎo)出的主要方法是CPU頻率縮放,包括:
- 頻率上升:提示內(nèi)核擴(kuò)大特定lcore的頻率仅孩。
- 頻率下降:提示內(nèi)核縮小特定lcore的頻率托猩。
- 頻率最大:提示內(nèi)核將特定lcore的頻率最大化。
- 頻率最懈芮狻:提示內(nèi)核將特定lcore的頻率降至最低站刑。
- 獲取有效的頻率:從sys文件中讀取特定lcore的可用頻率。
- Freq獲缺前佟:獲取當(dāng)前的特定lcore的頻率绞旅。
- 頻率設(shè)置:提示內(nèi)核為特定的lcore設(shè)置頻率。
24.3.示例
電源管理機(jī)制可用于在進(jìn)行L3轉(zhuǎn)發(fā)時(shí)節(jié)省功耗温艇。
24.4.參考
- l3fwd-power: DPDK提供的示例應(yīng)用程序因悲,實(shí)現(xiàn)功耗管理下的L3轉(zhuǎn)發(fā)。
- “功耗管理下的L3轉(zhuǎn)發(fā)”章節(jié)請(qǐng)參閱《DPDK Sample Application’s User Guide》勺爱。