亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux中cpufreq機制的示例分析

發布時間:2022-02-19 11:48:42 來源:億速云 閱讀:224 作者:小新 欄目:開發技術

小編給大家分享一下Linux中cpufreq機制的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

從 2.6.0 Linux 內核開始,您可以通過 CPUfreq 子系統動態調整處理器頻率。當處理器以較低的時鐘速度運行時,它們消耗的電能和產生的熱量也相對較少。時鐘速度的這種縮放可以控制系統在未全力運行時消耗較少電能。

Linux中cpufreq機制的示例分析

cpufreq概述

cpufreq的核心功能,是通過調整CPU的電壓和頻率,來兼顧系統的性能和功耗。在不需要高性能時,降低電壓和頻率,以降低功耗;在需要高性能時,提高電壓和頻率,以提高性能。

Linux中cpufreq機制的示例分析

cpufreq軟件框架

對下,cpufreq基于clock、regulator、pmu等模塊實現頻率和電壓的控制。對上,cpufreq通過cpufreq core、cpufreq governor、cpufreq stats等模塊以sysfs的形式向用戶空間提供頻率的查詢、控制等接口。內部,cpufreq內部分為core、governor、drivers等模塊。

Linux中cpufreq機制的示例分析

cpufreq調頻策略

  • Performance

性能優先,CPU固定工作在其支持的最高頻率。

  • Powersave

功耗優先,CPU固定工作在其支持的最低頻率。

  • Userspace

系統將變頻策略的決策權交給用戶態應用程序,并提供了相應的接口供用戶態程序設置CPU 頻率。

  • Ondemand

按需動態調整CPU頻率, 只要CPU負載超過閾值up_threshold就會立即設置為最大頻率,其他時候根據負載計算出合適的頻率。

  • Conservative

與ondemand不同,Conservative不是一味追求最高頻率,而是平滑地調整CPU頻率,頻率的升降是漸變式的。

  • interactive

基于內核任務調度觸發調頻callback。在callback函數中統計兩次調度之間CPU處于idle和busy的時間,計算出CPU負載調頻然后調頻。

  • schedutil

schedutil也是基于內核任務調度觸發調頻callback,與interactive不同的是,schedutil使用的負載來自于內核使用任務負載跟蹤技術(PELT/WALT)估計出來的負載。

cpufreq調測命令

  • 查詢

以下文件節點均可通過cat命令顯示

# ls /sys/devices/system/cpu/cpu0/cpufreq/

affected_cpus //當前策略作用于哪些online corecpuinfo_cur_freq //當前CPU硬件頻率cpuinfo_max_freq //CPU硬件支持的最低頻率cpuinfo_min_freq //CPU硬件支持的最高頻率cpuinfo_transition_latency //硬件支持的切換頻率最小間隔related_cpus //online和offline corescaling_available_frequencies //軟件支持的頻率列表scaling_available_governors //支持的策略列表scaling_cur_freq //軟件設置的當前頻率,通常與cpuinfo_cpus相同,如果出現硬件問題可能導致不一致scaling_driver //當前使用的driverscaling_governor //當前使用的governorscaling_max_freq //軟件governor設置的最高頻率scaling_min_freq //軟件governor設置的最低頻率scaling_setspeed //需將governor類型切換為userspace,才會出現,通過echo修改數值,會切換主頻

  • 設置

可以通過 echo配置scaling_governor,scaling_max_freq,scaling_min_freq 例如:echo 1400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

cpufreq編譯配置

#CPU Frequency scalingCONFIG_CPU_FREQ=y #主開關#CONFIG_CPU_FREQ_DEFAULT_GOV_SCHEDUTIL=y #default gov任選某個宏打開即可,決定了cpufreq初始化使用的governor,后續可在init.rc修改文件結點#CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y#CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=yCONFIG_CPU_FREQ_STAT=y #維測開關,查看cpufreq統計信息:/sys/devices/system/cpu/cpu0/cpufreq/stats

cpufreq模塊初始化

cpufreq的初始化分為3大階段,依次是core層、governor層和drivers層。

  • core層

初始化調頻通知鏈表,pure_initcall(init_cpufreq_transition_notifier_list)創建cpufreq文件結點,core_initcall(cpufreq_core_init)

  • governor層

使用cpufreq_register_governor接口注冊各個governor到鏈表中,,例如:

fs_initcall(cpufreq_gov_performance_init);fs_initcall(cpufreq_gov_powersave_init);fs_initcall(cpufreq_gov_userspace_init);fs_initcall(cpufreq_gov_dbs_init);fs_initcall(sugov_register);

  • drivers層

drivers層的初始化在device_initcall或者late_initcall階段。需要完成以下主要任務:

  1. 調用cpufreq_register_driver注冊驅動
  2. 驅動的init回調完成硬件層的初始化,包括clk、regulator、pmu的控制
  3. cpufreq_register_driver接口內部完成policy和governor的設置

以上是“Linux中cpufreq機制的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铜鼓县| 滨州市| 铜陵市| 河南省| 高清| 焉耆| 定边县| 江油市| 阜平县| 五峰| 衡山县| 虞城县| 二连浩特市| 西乌珠穆沁旗| 甘肃省| 那曲县| 科技| 湖口县| 广元市| 渭南市| 湖州市| 泰和县| 澄迈县| 罗平县| 八宿县| 乐至县| 青海省| 遵义市| 赣州市| 永和县| 长白| 临桂县| 珠海市| 汤阴县| 乌拉特前旗| 上杭县| 定州市| 凯里市| 苏尼特左旗| 建平县| 隆安县|