1ffd1f19dSYanteng Si.. SPDX-License-Identifier: GPL-2.0 2ffd1f19dSYanteng Si 3ffd1f19dSYanteng Si.. include:: ../disclaimer-zh_CN.rst 4ffd1f19dSYanteng Si 5*8137a49eSYanteng Si:Original: Documentation/cpu-freq/cpufreq-stats.rst 6*8137a49eSYanteng Si 7*8137a49eSYanteng Si:翻译: 8*8137a49eSYanteng Si 9*8137a49eSYanteng Si 司延腾 Yanteng Si <siyanteng@loongson.cn> 10ffd1f19dSYanteng Si 11ffd1f19dSYanteng Si.. _cn_cpufreq-stats.rst: 12ffd1f19dSYanteng Si 13ffd1f19dSYanteng Si========================================== 14ffd1f19dSYanteng Sisysfs CPUFreq Stats的一般说明 15ffd1f19dSYanteng Si========================================== 16ffd1f19dSYanteng Si 17ffd1f19dSYanteng Si用户信息 18ffd1f19dSYanteng Si 19ffd1f19dSYanteng Si 20ffd1f19dSYanteng Si作者: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> 21ffd1f19dSYanteng Si 22ffd1f19dSYanteng Si.. Contents 23ffd1f19dSYanteng Si 24ffd1f19dSYanteng Si 1. 简介 25ffd1f19dSYanteng Si 2. 提供的统计数据(举例说明) 26ffd1f19dSYanteng Si 3. 配置cpufreq-stats 27ffd1f19dSYanteng Si 28ffd1f19dSYanteng Si 29ffd1f19dSYanteng Si1. 简介 30ffd1f19dSYanteng Si=============== 31ffd1f19dSYanteng Si 32ffd1f19dSYanteng Sicpufreq-stats是一个为每个CPU提供CPU频率统计的驱动。 33ffd1f19dSYanteng Si这些统计数据在/sysfs中以一堆只读接口的形式提供。这个接口(在配置好后)将出现在 34ffd1f19dSYanteng Si/sysfs(<sysfs root>/devices/system/cpu/cpuX/cpufreq/stats/)中cpufreq下的一个单 35ffd1f19dSYanteng Si独的目录中,提供给每个CPU。 36ffd1f19dSYanteng Si各种统计数据将在此目录下形成只读文件。 37ffd1f19dSYanteng Si 38ffd1f19dSYanteng Si此驱动是独立于任何可能运行在你所用CPU上的特定cpufreq_driver而设计的。因此,它将与所有 39ffd1f19dSYanteng Sicpufreq_driver一起工作。 40ffd1f19dSYanteng Si 41ffd1f19dSYanteng Si 42ffd1f19dSYanteng Si2. 提供的统计数据(举例说明) 43ffd1f19dSYanteng Si===================================== 44ffd1f19dSYanteng Si 45ffd1f19dSYanteng Sicpufreq stats提供了以下统计数据(在下面详细解释)。 46ffd1f19dSYanteng Si 47ffd1f19dSYanteng Si- time_in_state 48ffd1f19dSYanteng Si- total_trans 49ffd1f19dSYanteng Si- trans_table 50ffd1f19dSYanteng Si 51ffd1f19dSYanteng Si所有的统计数据将从统计驱动被载入的时间(或统计被重置的时间)开始,到某一统计数据被读取的时间为止。 52ffd1f19dSYanteng Si显然,统计驱动不会有任何关于统计驱动载入之前的频率转换信息。 53ffd1f19dSYanteng Si 54ffd1f19dSYanteng Si:: 55ffd1f19dSYanteng Si 56ffd1f19dSYanteng Si <mysystem>:/sys/devices/system/cpu/cpu0/cpufreq/stats # ls -l 57ffd1f19dSYanteng Si total 0 58ffd1f19dSYanteng Si drwxr-xr-x 2 root root 0 May 14 16:06 . 59ffd1f19dSYanteng Si drwxr-xr-x 3 root root 0 May 14 15:58 .. 60ffd1f19dSYanteng Si --w------- 1 root root 4096 May 14 16:06 reset 61ffd1f19dSYanteng Si -r--r--r-- 1 root root 4096 May 14 16:06 time_in_state 62ffd1f19dSYanteng Si -r--r--r-- 1 root root 4096 May 14 16:06 total_trans 63ffd1f19dSYanteng Si -r--r--r-- 1 root root 4096 May 14 16:06 trans_table 64ffd1f19dSYanteng Si 65ffd1f19dSYanteng Si- **reset** 66ffd1f19dSYanteng Si 67ffd1f19dSYanteng Si只写属性,可用于重置统计计数器。这对于评估不同调节器下的系统行为非常有用,且无需重启。 68ffd1f19dSYanteng Si 69ffd1f19dSYanteng Si 70ffd1f19dSYanteng Si- **time_in_state** 71ffd1f19dSYanteng Si 72ffd1f19dSYanteng Si此项给出了这个CPU所支持的每个频率所花费的时间。cat输出的每一行都会有"<frequency> 73ffd1f19dSYanteng Si<time>"对,表示这个CPU在<frequency>上花费了<time>个usertime单位的时间。这里的 74ffd1f19dSYanteng Siusertime单位是10mS(类似于/proc中输出的其他时间)。 75ffd1f19dSYanteng Si 76ffd1f19dSYanteng Si:: 77ffd1f19dSYanteng Si 78ffd1f19dSYanteng Si <mysystem>:/sys/devices/system/cpu/cpu0/cpufreq/stats # cat time_in_state 79ffd1f19dSYanteng Si 3600000 2089 80ffd1f19dSYanteng Si 3400000 136 81ffd1f19dSYanteng Si 3200000 34 82ffd1f19dSYanteng Si 3000000 67 83ffd1f19dSYanteng Si 2800000 172488 84ffd1f19dSYanteng Si 85ffd1f19dSYanteng Si 86ffd1f19dSYanteng Si- **total_trans** 87ffd1f19dSYanteng Si 88ffd1f19dSYanteng Si给出了这个CPU上频率转换的总次数。cat的输出将有一个单一的计数,这就是频率转换的总数。 89ffd1f19dSYanteng Si 90ffd1f19dSYanteng Si:: 91ffd1f19dSYanteng Si 92ffd1f19dSYanteng Si <mysystem>:/sys/devices/system/cpu/cpu0/cpufreq/stats # cat total_trans 93ffd1f19dSYanteng Si 20 94ffd1f19dSYanteng Si 95ffd1f19dSYanteng Si- **trans_table** 96ffd1f19dSYanteng Si 97ffd1f19dSYanteng Si这将提供所有CPU频率转换的细粒度信息。这里的cat输出是一个二维矩阵,其中一个条目<i, j>(第 98ffd1f19dSYanteng Sii行,第j列)代表从Freq_i到Freq_j的转换次数。Freq_i行和Freq_j列遵循驱动最初提供给cpufreq 99ffd1f19dSYanteng Si核的频率表的排序顺序,因此可以排序(升序或降序)或不排序。 这里的输出也包含了每行每列的实际 100ffd1f19dSYanteng Si频率值,以便更好地阅读。 101ffd1f19dSYanteng Si 102ffd1f19dSYanteng Si如果转换表大于PAGE_SIZE,读取时将返回一个-EFBIG错误。 103ffd1f19dSYanteng Si 104ffd1f19dSYanteng Si:: 105ffd1f19dSYanteng Si 106ffd1f19dSYanteng Si <mysystem>:/sys/devices/system/cpu/cpu0/cpufreq/stats # cat trans_table 107ffd1f19dSYanteng Si From : To 108ffd1f19dSYanteng Si : 3600000 3400000 3200000 3000000 2800000 109ffd1f19dSYanteng Si 3600000: 0 5 0 0 0 110ffd1f19dSYanteng Si 3400000: 4 0 2 0 0 111ffd1f19dSYanteng Si 3200000: 0 1 0 2 0 112ffd1f19dSYanteng Si 3000000: 0 0 1 0 3 113ffd1f19dSYanteng Si 2800000: 0 0 0 2 0 114ffd1f19dSYanteng Si 115ffd1f19dSYanteng Si3. 配置cpufreq-stats 116ffd1f19dSYanteng Si============================ 117ffd1f19dSYanteng Si 118ffd1f19dSYanteng Si要在你的内核中配置cpufreq-stats:: 119ffd1f19dSYanteng Si 120ffd1f19dSYanteng Si Config Main Menu 121ffd1f19dSYanteng Si Power management options (ACPI, APM) ---> 122ffd1f19dSYanteng Si CPU Frequency scaling ---> 123ffd1f19dSYanteng Si [*] CPU Frequency scaling 124ffd1f19dSYanteng Si [*] CPU frequency translation statistics 125ffd1f19dSYanteng Si 126ffd1f19dSYanteng Si 127ffd1f19dSYanteng Si"CPU Frequency scaling" (CONFIG_CPU_FREQ) 应该被启用以配置cpufreq-stats。 128ffd1f19dSYanteng Si 129ffd1f19dSYanteng Si"CPU frequency translation statistics" (CONFIG_CPU_FREQ_STAT)提供了包括 130ffd1f19dSYanteng Sitime_in_state、total_trans和trans_table的统计数据。 131ffd1f19dSYanteng Si 132ffd1f19dSYanteng Si一旦启用了这个选项,并且你的CPU支持cpufrequency,你就可以在/sysfs中看到CPU频率统计。 133