.. SPDX-License-Identifier: GPL-2.0 .. include:: ../disclaimer-zh_CN.rst :Original: Documentation/cpu-freq/cpufreq-stats.rst :翻译: 司延腾 Yanteng Si <siyanteng@loongson.cn> :ć ˇčŻ‘: ĺ”č‰şčź Tang Yizhou <tangyeechou@gmail.com> ========================================== sysfs CPUFreq Stats的一č¬čŻ´ćŽ ========================================== ä¸şä˝żç”¨č€…ĺ‡†ĺ¤‡çš„äżˇćŻ ä˝śč€…: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com> .. Contents 1. 简介 2. ćŹäľ›çš„统计数据(举例说ćŽ) 3. é…Ťç˝®cpufreq-stats 1. 简介 =============== cpufreq-statsćŻä¸€ç§Ťä¸şćŻŹä¸ŞCPUćŹäľ›CPU频率统计的驱动。 这些统计数据以/sysfsä¸ä¸€çł»ĺ—只读接口的形式ĺ‘现。cpufreq-stats接口ďĽč‹Ąĺ·˛é…Ťç˝®ďĽ‰ĺ°†ä¸şćŻŹä¸ŞCPU生ć /sysfsďĽ<sysfs root>/devices/system/cpu/cpuX/cpufreq/stats/)ä¸cpufreq目录下的stats目录。 ĺ„项统计数据将在stats目录下形ć对应的只读文件。 ć¤é©±ĺЍćŻä»Ąç‹¬ç«‹äşŽä»»ä˝•可č˝čżčˇŚĺś¨ä˝ 所用CPU上的特定cpufreq_driverçš„ć–ąĺĽŹč®ľč®ˇçš„ă€‚ĺ› ć¤ďĽŚĺ®ĺ°†č˝ĺ’Śä»»ä˝• cpufreq_driver协ĺŚĺ·Ąä˝śă€‚ 2. ĺ·˛ćŹäľ›çš„统计数据(有例ĺ) ===================================== cpufreq statsćŹäľ›äş†ä»Ąä¸‹ç»źč®ˇć•°ćŤ®ďĽĺś¨ä¸‹éť˘čŻ¦ç»†č§Łé‡ŠďĽ‰ă€‚ - time_in_state - total_trans - trans_table 所有统计数据来自以下时间čŚĺ›´ďĽšä»Žç»źč®ˇé©±ĺŠ¨č˘«ĺŠ č˝˝çš„ć—¶é—´ďĽć–统计数据被重置的时间)开始,ĺ°ćźä¸€ç»źč®ˇć•°ćŤ®č˘«čŻ»ĺŹ–çš„ć—¶é—´ä¸şć˘ă€‚ ćľç„¶ďĽŚç»źč®ˇé©±ĺŠ¨ä¸ŤäĽšäżťĺĺ®č˘«ĺŠ č˝˝äą‹ĺ‰Ťçš„ä»»ä˝•é˘‘çŽ‡č˝¬ćŤ˘äżˇćŻă€‚ :: <mysystem>:/sys/devices/system/cpu/cpu0/cpufreq/stats # ls -l total 0 drwxr-xr-x 2 root root 0 May 14 16:06 . drwxr-xr-x 3 root root 0 May 14 15:58 .. --w------- 1 root root 4096 May 14 16:06 reset -r--r--r-- 1 root root 4096 May 14 16:06 time_in_state -r--r--r-- 1 root root 4096 May 14 16:06 total_trans -r--r--r-- 1 root root 4096 May 14 16:06 trans_table - **reset** 只写属性,可用于重置统计计数器。这对于评估不ĺŚč°čŠ‚ĺ™¨çš„çł»ç»źčˇŚä¸şéťžĺ¸¸ćś‰ç”¨ďĽŚä¸”ć— éś€é‡ŤĺŻă€‚ - **time_in_state** ć¤ć–‡ä»¶ç»™ĺ‡şäş†ĺś¨ćś¬CPU支ćŚçš„每个频率上ĺ†ĺ«čŠ±č´ąçš„ć—¶é—´ă€‚cat输出的每一行é˝ćŻä¸€ä¸Ş"<frequency> <time>"对,表示这个CPU在<frequency>上花费了<time>个usertime单位的时间。输出的每一行对应 一个CPU支ćŚçš„频率。这里usertime单位ćŻ10mSďĽç±»äĽĽäşŽ/proc导出的其ĺ®ć—¶é—´ďĽ‰ă€‚ :: <mysystem>:/sys/devices/system/cpu/cpu0/cpufreq/stats # cat time_in_state 3600000 2089 3400000 136 3200000 34 3000000 67 2800000 172488 - **total_trans** ć¤ć–‡ä»¶ç»™ĺ‡şäş†čż™ä¸ŞCPU频率转换的总次数。cat的输出ćŻä¸€ä¸Şč®ˇć•°ĺ€ĽďĽŚĺ®ĺ°±ćŻé˘‘率转换的总次数。 :: <mysystem>:/sys/devices/system/cpu/cpu0/cpufreq/stats # cat total_trans 20 - **trans_table** 本文件ćŹäľ›ć‰€ćś‰CPU频率转换的细粒度信ćŻă€‚这里的cat输出ćŻä¸€ä¸ŞäşŚç»´çź©éµďĽŚĺ…¶ä¸ä¸€ä¸Şćťˇç›®<i, j>ďĽç¬¬ i行,第jĺ—)代表从Freq_iĺ°Freq_j的转换次数。Freq_i行和Freq_jĺ—éµĺľŞé©±ĺŠ¨ćś€ĺťćŹäľ›ç»™cpufreq ć ¸ĺżçš„频率表的排ĺ—éˇşĺşŹďĽŚĺ› ć¤ĺŹŻä»Ąĺ·˛ćŽ’ĺşŹďĽĺŤ‡ĺşŹć–降序)ć–未排序。这里的输出也包ĺ«äş†ĺ®žé™… 频率值,ĺ†ĺ«ćŚ‰čˇŚĺ’ŚćŚ‰ĺ—ćľç¤şďĽŚä»Ąäľżć›´ĺĄ˝ĺś°é…读。 如果转换表大于PAGE_SIZE,读取时将返回一个-EFBIG错误。 :: <mysystem>:/sys/devices/system/cpu/cpu0/cpufreq/stats # cat trans_table From : To : 3600000 3400000 3200000 3000000 2800000 3600000: 0 5 0 0 0 3400000: 4 0 2 0 0 3200000: 0 1 0 2 0 3000000: 0 0 1 0 3 2800000: 0 0 0 2 0 3. é…Ťç˝®cpufreq-stats ============================ ćŚ‰ä»Ąä¸‹ć–ąĺĽŹĺś¨ä˝ çš„ĺ†…ć ¸ä¸é…Ťç˝®cpufreq-stats:: Config Main Menu Power management options (ACPI, APM) ---> CPU Frequency scaling ---> [*] CPU Frequency scaling [*] CPU frequency translation statistics "CPU Frequency scaling" (CONFIG_CPU_FREQ) 应该被ĺŻç”¨ďĽŚä»Ąć”ŻćŚé…Ťç˝®cpufreq-stats。 "CPU frequency translation statistics" (CONFIG_CPU_FREQ_STAT)ćŹäľ›äş†ĺڅ㋬ time_in_stateă€total_transĺ’Śtrans_table的统计数据。 一旦ĺŻç”¨äş†čż™ä¸Şé€‰éˇąďĽŚĺą¶ä¸”ä˝ çš„CPU支ćŚcpufrequencyďĽŚä˝ ĺ°±ĺŹŻä»Ąĺś¨/sysfsä¸çś‹ĺ°CPU频率统计。