sysfs CPUFreq 統計資訊概述

使用者資訊

作者: Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>

1. 簡介

cpufreq-stats 是一個驅動程式,它為每個 CPU 提供 CPU 頻率統計資訊。 這些統計資訊以只讀介面的形式在 /sysfs 中提供。 此介面(配置後)將出現在 /sysfs 中 cpufreq 下的單獨目錄中(<sysfs 根目錄>/devices/system/cpu/cpuX/cpufreq/stats/),針對每個 CPU。 各種統計資訊將在此目錄下形成只讀檔案。

此驅動程式設計為獨立於可能在 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

可用於重置統計計數器的只寫屬性。 這對於評估不同 governor 下的系統行為非常有用,而無需重新啟動。

  • time_in_state

這給出了在此 CPU 支援的每個頻率上花費的時間量。 cat 輸出的每行都將具有“<frequency> <time>”對,這意味著此 CPU 在 <frequency> 以 <time> usertime 時間單位花費的時間。 輸出將為每個支援的頻率有一行。 此處的 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 頻率調節”(CONFIG_CPU_FREQ)以配置 cpufreq-stats。

“CPU 頻率轉換統計”(CONFIG_CPU_FREQ_STAT)提供統計資訊,包括 time_in_state、total_trans 和 trans_table。

啟用此選項並且您的 CPU 支援 cpufrequency 後,您將能夠在 /sysfs 中看到 CPU 頻率統計資訊。