mbox series

[0/2] PM / devfreq: Add debugfs support

Message ID 20200107090519.3231-1-cw00.choi@samsung.com (mailing list archive)
Headers show
Series PM / devfreq: Add debugfs support | expand

Message

Chanwoo Choi Jan. 7, 2020, 9:05 a.m. UTC
Add debugfs interface to provide debugging information of devfreq device.
It contains 'devfreq_summary' and 'debug_transitions' debugfs file
in order to provide the simple profiling to user via debugfs
without any specific profiling tool.

[Added debugfs file]
- "/sys/kernel/debug/devfreq/devfreq_summary"
  : Show the summary of the registered devfreq devices.
- "/sys/kernel/debug/devfreq/devfreq_transitions"
  : Show the frequency transition of the registered devfreq devices.

Recommend the each patch to check the detailed description
of each fields of both devfreq_summary and devfreq_transitions.

This series contains the patch[1] and add the patch2 for 'devfreq_transitions'
[1] https://patchwork.kernel.org/patch/11320265/
- [v3] PM / devfreq: Add debugfs support with devfreq_summary file


For example on Exynos5422-based Odroid-XU3 board,
- In order to show the multiple governors on devfreq_summay result,
change the governor of devfreq0 from simple_ondemand to userspace.

$ cat /sys/kernel/debug/devfreq/devfreq_summary
dev_name                       dev        parent_dev governor        polling_ms cur_freq_hz  min_freq_hz  max_freq_hz
------------------------------ ---------- ---------- --------------- ---------- ------------ ------------ ------------
10c20000.memory-controller     devfreq0              userspace       0          206000000    165000000    825000000
soc:bus_wcore                  devfreq1              simple_ondemand 50         532000000    88700000     532000000
soc:bus_noc                    devfreq2   devfreq1   passive         0          111000000    66600000     111000000
soc:bus_fsys_apb               devfreq3   devfreq1   passive         0          222000000    111000000    222000000
soc:bus_fsys                   devfreq4   devfreq1   passive         0          200000000    75000000     200000000
soc:bus_fsys2                  devfreq5   devfreq1   passive         0          200000000    75000000     200000000
soc:bus_mfc                    devfreq6   devfreq1   passive         0          333000000    83250000     333000000
soc:bus_gen                    devfreq7   devfreq1   passive         0          266000000    88700000     266000000
soc:bus_peri                   devfreq8   devfreq1   passive         0          66600000     66600000     66600000
soc:bus_g2d                    devfreq9   devfreq1   passive         0          0            83250000     333000000
soc:bus_g2d_acp                devfreq10  devfreq1   passive         0          0            66500000     266000000
soc:bus_jpeg                   devfreq11  devfreq1   passive         0          0            75000000     300000000
soc:bus_jpeg_apb               devfreq12  devfreq1   passive         0          0            83250000     166500000
soc:bus_disp1_fimd             devfreq13  devfreq1   passive         0          0            120000000    200000000
soc:bus_disp1                  devfreq14  devfreq1   passive         0          0            120000000    300000000
soc:bus_gscl_scaler            devfreq15  devfreq1   passive         0          0            150000000    300000000
soc:bus_mscl                   devfreq16  devfreq1   passive         0          0            84000000     666000000

$ cat /sys/kernel/debug/devfreq/devfreq_transitions
time_ms    dev_name                       dev        parent_dev load_% old_freq_hz  new_freq_hz
---------- ------------------------------ ---------- ---------- ---------- ------------ ------------
14600      soc:bus_noc                    devfreq2   devfreq1   0      100000000    67000000
14600      soc:bus_fsys_apb               devfreq3   devfreq1   0      200000000    100000000
14600      soc:bus_fsys                   devfreq4   devfreq1   0      200000000    100000000
14600      soc:bus_fsys2                  devfreq5   devfreq1   0      150000000    75000000
14602      soc:bus_mfc                    devfreq6   devfreq1   0      222000000    96000000
14602      soc:bus_gen                    devfreq7   devfreq1   0      267000000    89000000
14602      soc:bus_g2d                    devfreq9   devfreq1   0      300000000    84000000
14602      soc:bus_g2d_acp                devfreq10  devfreq1   0      267000000    67000000
14602      soc:bus_jpeg                   devfreq11  devfreq1   0      300000000    75000000
14602      soc:bus_jpeg_apb               devfreq12  devfreq1   0      167000000    84000000
14603      soc:bus_disp1_fimd             devfreq13  devfreq1   0      200000000    120000000
14603      soc:bus_disp1                  devfreq14  devfreq1   0      300000000    120000000
14606      soc:bus_gscl_scaler            devfreq15  devfreq1   0      300000000    150000000
14606      soc:bus_mscl                   devfreq16  devfreq1   0      333000000    84000000
14608      soc:bus_wcore                  devfreq1              9      333000000    84000000
14783      10c20000.memory-controller     devfreq0              35     825000000    633000000
15873      soc:bus_wcore                  devfreq1              41     84000000     400000000
15873      soc:bus_noc                    devfreq2   devfreq1   0      67000000     100000000
[snip]


Depends on:
It depends on patch[2] for preventing the merge conflic.
[2] https://patchwork.kernel.org/patch/11320257/
- PM / devfreq: Add missing function description and rename static functions

Chanwoo Choi (2):
  PM / devfreq: Add debugfs support with devfreq_summary file
  PM / devfreq: Add devfreq_transitions debugfs file

 drivers/devfreq/Kconfig            |  13 ++
 drivers/devfreq/devfreq.c          | 206 +++++++++++++++++++++++++++++
 drivers/devfreq/governor.h         |   3 +
 drivers/devfreq/governor_passive.c |   2 +
 include/linux/devfreq.h            |   1 +
 5 files changed, 225 insertions(+)

Comments

Kamil Konieczny Jan. 9, 2020, 3:06 p.m. UTC | #1
Hi,

On 07.01.2020 10:05, Chanwoo Choi wrote:
> Add debugfs interface to provide debugging information of devfreq device.
> It contains 'devfreq_summary' and 'debug_transitions' debugfs file
> in order to provide the simple profiling to user via debugfs
> without any specific profiling tool.
> 
> [Added debugfs file]
> - "/sys/kernel/debug/devfreq/devfreq_summary"
>   : Show the summary of the registered devfreq devices.
> - "/sys/kernel/debug/devfreq/devfreq_transitions"
>   : Show the frequency transition of the registered devfreq devices.
> 
> Recommend the each patch to check the detailed description
> of each fields of both devfreq_summary and devfreq_transitions.
> 
> This series contains the patch[1] and add the patch2 for 'devfreq_transitions'
> [1] https://patchwork.kernel.org/patch/11320265/
> - [v3] PM / devfreq: Add debugfs support with devfreq_summary file
> 
> 
> For example on Exynos5422-based Odroid-XU3 board,
> - In order to show the multiple governors on devfreq_summay result,
> change the governor of devfreq0 from simple_ondemand to userspace.
> 
> $ cat /sys/kernel/debug/devfreq/devfreq_summary
> dev_name                       dev        parent_dev governor        polling_ms cur_freq_hz  min_freq_hz  max_freq_hz

Imho either drop "_hz" or change it to "_Hz".

> ------------------------------ ---------- ---------- --------------- ---------- ------------ ------------ ------------
> 10c20000.memory-controller     devfreq0              userspace       0          206000000    165000000    825000000
> soc:bus_wcore                  devfreq1              simple_ondemand 50         532000000    88700000     532000000
> soc:bus_noc                    devfreq2   devfreq1   passive         0          111000000    66600000     111000000
> soc:bus_fsys_apb               devfreq3   devfreq1   passive         0          222000000    111000000    222000000
> soc:bus_fsys                   devfreq4   devfreq1   passive         0          200000000    75000000     200000000
> soc:bus_fsys2                  devfreq5   devfreq1   passive         0          200000000    75000000     200000000
> soc:bus_mfc                    devfreq6   devfreq1   passive         0          333000000    83250000     333000000
> soc:bus_gen                    devfreq7   devfreq1   passive         0          266000000    88700000     266000000
> soc:bus_peri                   devfreq8   devfreq1   passive         0          66600000     66600000     66600000
> soc:bus_g2d                    devfreq9   devfreq1   passive         0          0            83250000     333000000

Imho it better looks with freq aligned to right, eg.:

soc:bus_gen                    devfreq7   devfreq1   passive         0          266000000     88700000     266000000
soc:bus_peri                   devfreq8   devfreq1   passive         0           66600000     66600000      66600000
soc:bus_g2d                    devfreq9   devfreq1   passive         0                  0     83250000     333000000

> soc:bus_g2d_acp                devfreq10  devfreq1   passive         0          0            66500000     266000000
> soc:bus_jpeg                   devfreq11  devfreq1   passive         0          0            75000000     300000000
> soc:bus_jpeg_apb               devfreq12  devfreq1   passive         0          0            83250000     166500000
> soc:bus_disp1_fimd             devfreq13  devfreq1   passive         0          0            120000000    200000000
> soc:bus_disp1                  devfreq14  devfreq1   passive         0          0            120000000    300000000
> soc:bus_gscl_scaler            devfreq15  devfreq1   passive         0          0            150000000    300000000
> soc:bus_mscl                   devfreq16  devfreq1   passive         0          0            84000000     666000000
> 
> $ cat /sys/kernel/debug/devfreq/devfreq_transitions
> time_ms    dev_name                       dev        parent_dev load_% old_freq_hz  new_freq_hz
> ---------- ------------------------------ ---------- ---------- ---------- ------------ ------------
> 14600      soc:bus_noc                    devfreq2   devfreq1   0      100000000    67000000
> 14600      soc:bus_fsys_apb               devfreq3   devfreq1   0      200000000    100000000
> 14600      soc:bus_fsys                   devfreq4   devfreq1   0      200000000    100000000
> 14600      soc:bus_fsys2                  devfreq5   devfreq1   0      150000000    75000000
> 14602      soc:bus_mfc                    devfreq6   devfreq1   0      222000000    96000000
> 14602      soc:bus_gen                    devfreq7   devfreq1   0      267000000    89000000
> 14602      soc:bus_g2d                    devfreq9   devfreq1   0      300000000    84000000
> 14602      soc:bus_g2d_acp                devfreq10  devfreq1   0      267000000    67000000
> 14602      soc:bus_jpeg                   devfreq11  devfreq1   0      300000000    75000000
> 14602      soc:bus_jpeg_apb               devfreq12  devfreq1   0      167000000    84000000
> 14603      soc:bus_disp1_fimd             devfreq13  devfreq1   0      200000000    120000000
> 14603      soc:bus_disp1                  devfreq14  devfreq1   0      300000000    120000000
> 14606      soc:bus_gscl_scaler            devfreq15  devfreq1   0      300000000    150000000
> 14606      soc:bus_mscl                   devfreq16  devfreq1   0      333000000    84000000
> 14608      soc:bus_wcore                  devfreq1              9      333000000    84000000
> 14783      10c20000.memory-controller     devfreq0              35     825000000    633000000
> 15873      soc:bus_wcore                  devfreq1              41     84000000     400000000
> 15873      soc:bus_noc                    devfreq2   devfreq1   0      67000000     100000000
> [snip]
> 
> 
> Depends on:
> It depends on patch[2] for preventing the merge conflic.
> [2] https://patchwork.kernel.org/patch/11320257/
> - PM / devfreq: Add missing function description and rename static functions
> 
> Chanwoo Choi (2):
>   PM / devfreq: Add debugfs support with devfreq_summary file
>   PM / devfreq: Add devfreq_transitions debugfs file
> 
>  drivers/devfreq/Kconfig            |  13 ++
>  drivers/devfreq/devfreq.c          | 206 +++++++++++++++++++++++++++++
>  drivers/devfreq/governor.h         |   3 +
>  drivers/devfreq/governor_passive.c |   2 +
>  include/linux/devfreq.h            |   1 +
>  5 files changed, 225 insertions(+)
>
Chanwoo Choi Jan. 10, 2020, 3:17 a.m. UTC | #2
On 1/10/20 12:06 AM, Kamil Konieczny wrote:
> Hi,
> 
> On 07.01.2020 10:05, Chanwoo Choi wrote:
>> Add debugfs interface to provide debugging information of devfreq device.
>> It contains 'devfreq_summary' and 'debug_transitions' debugfs file
>> in order to provide the simple profiling to user via debugfs
>> without any specific profiling tool.
>>
>> [Added debugfs file]
>> - "/sys/kernel/debug/devfreq/devfreq_summary"
>>   : Show the summary of the registered devfreq devices.
>> - "/sys/kernel/debug/devfreq/devfreq_transitions"
>>   : Show the frequency transition of the registered devfreq devices.
>>
>> Recommend the each patch to check the detailed description
>> of each fields of both devfreq_summary and devfreq_transitions.
>>
>> This series contains the patch[1] and add the patch2 for 'devfreq_transitions'
>> [1] https://patchwork.kernel.org/patch/11320265/
>> - [v3] PM / devfreq: Add debugfs support with devfreq_summary file
>>
>>
>> For example on Exynos5422-based Odroid-XU3 board,
>> - In order to show the multiple governors on devfreq_summay result,
>> change the governor of devfreq0 from simple_ondemand to userspace.
>>
>> $ cat /sys/kernel/debug/devfreq/devfreq_summary
>> dev_name                       dev        parent_dev governor        polling_ms cur_freq_hz  min_freq_hz  max_freq_hz
> 
> Imho either drop "_hz" or change it to "_Hz".

hz -> Hz

> 
>> ------------------------------ ---------- ---------- --------------- ---------- ------------ ------------ ------------
>> 10c20000.memory-controller     devfreq0              userspace       0          206000000    165000000    825000000
>> soc:bus_wcore                  devfreq1              simple_ondemand 50         532000000    88700000     532000000
>> soc:bus_noc                    devfreq2   devfreq1   passive         0          111000000    66600000     111000000
>> soc:bus_fsys_apb               devfreq3   devfreq1   passive         0          222000000    111000000    222000000
>> soc:bus_fsys                   devfreq4   devfreq1   passive         0          200000000    75000000     200000000
>> soc:bus_fsys2                  devfreq5   devfreq1   passive         0          200000000    75000000     200000000
>> soc:bus_mfc                    devfreq6   devfreq1   passive         0          333000000    83250000     333000000
>> soc:bus_gen                    devfreq7   devfreq1   passive         0          266000000    88700000     266000000
>> soc:bus_peri                   devfreq8   devfreq1   passive         0          66600000     66600000     66600000
>> soc:bus_g2d                    devfreq9   devfreq1   passive         0          0            83250000     333000000
> 
> Imho it better looks with freq aligned to right, eg.:

OK.

> 
> soc:bus_gen                    devfreq7   devfreq1   passive         0          266000000     88700000     266000000
> soc:bus_peri                   devfreq8   devfreq1   passive         0           66600000     66600000      66600000
> soc:bus_g2d                    devfreq9   devfreq1   passive         0                  0     83250000     333000000
> 
>> soc:bus_g2d_acp                devfreq10  devfreq1   passive         0          0            66500000     266000000
>> soc:bus_jpeg                   devfreq11  devfreq1   passive         0          0            75000000     300000000
>> soc:bus_jpeg_apb               devfreq12  devfreq1   passive         0          0            83250000     166500000
>> soc:bus_disp1_fimd             devfreq13  devfreq1   passive         0          0            120000000    200000000
>> soc:bus_disp1                  devfreq14  devfreq1   passive         0          0            120000000    300000000
>> soc:bus_gscl_scaler            devfreq15  devfreq1   passive         0          0            150000000    300000000
>> soc:bus_mscl                   devfreq16  devfreq1   passive         0          0            84000000     666000000
>>
>> $ cat /sys/kernel/debug/devfreq/devfreq_transitions
>> time_ms    dev_name                       dev        parent_dev load_% old_freq_hz  new_freq_hz
>> ---------- ------------------------------ ---------- ---------- ---------- ------------ ------------
>> 14600      soc:bus_noc                    devfreq2   devfreq1   0      100000000    67000000
>> 14600      soc:bus_fsys_apb               devfreq3   devfreq1   0      200000000    100000000
>> 14600      soc:bus_fsys                   devfreq4   devfreq1   0      200000000    100000000
>> 14600      soc:bus_fsys2                  devfreq5   devfreq1   0      150000000    75000000
>> 14602      soc:bus_mfc                    devfreq6   devfreq1   0      222000000    96000000
>> 14602      soc:bus_gen                    devfreq7   devfreq1   0      267000000    89000000
>> 14602      soc:bus_g2d                    devfreq9   devfreq1   0      300000000    84000000
>> 14602      soc:bus_g2d_acp                devfreq10  devfreq1   0      267000000    67000000
>> 14602      soc:bus_jpeg                   devfreq11  devfreq1   0      300000000    75000000
>> 14602      soc:bus_jpeg_apb               devfreq12  devfreq1   0      167000000    84000000
>> 14603      soc:bus_disp1_fimd             devfreq13  devfreq1   0      200000000    120000000
>> 14603      soc:bus_disp1                  devfreq14  devfreq1   0      300000000    120000000
>> 14606      soc:bus_gscl_scaler            devfreq15  devfreq1   0      300000000    150000000
>> 14606      soc:bus_mscl                   devfreq16  devfreq1   0      333000000    84000000
>> 14608      soc:bus_wcore                  devfreq1              9      333000000    84000000
>> 14783      10c20000.memory-controller     devfreq0              35     825000000    633000000
>> 15873      soc:bus_wcore                  devfreq1              41     84000000     400000000
>> 15873      soc:bus_noc                    devfreq2   devfreq1   0      67000000     100000000
>> [snip]
>>
>>
>> Depends on:
>> It depends on patch[2] for preventing the merge conflic.
>> [2] https://patchwork.kernel.org/patch/11320257/
>> - PM / devfreq: Add missing function description and rename static functions
>>
>> Chanwoo Choi (2):
>>   PM / devfreq: Add debugfs support with devfreq_summary file
>>   PM / devfreq: Add devfreq_transitions debugfs file
>>
>>  drivers/devfreq/Kconfig            |  13 ++
>>  drivers/devfreq/devfreq.c          | 206 +++++++++++++++++++++++++++++
>>  drivers/devfreq/governor.h         |   3 +
>>  drivers/devfreq/governor_passive.c |   2 +
>>  include/linux/devfreq.h            |   1 +
>>  5 files changed, 225 insertions(+)
>>
>