Ni Nicolin, On 10/03/2018 04:46 PM, Nicolin Chen wrote:
Hello Guenter, I am thinking about a possibility of adding a trace event support in hwmon subsystem. Ftrace is pretty useful and widely applied to different subsystems already while hwmon doesn't seem to have one yet. I know some power/perf folks who rely on the trace events to analyse relationships among cpufreq <-> thermal <-> power: usually what they do is enabling trace events, then letting the system run for a while, and finally collecting all data from Ftrace outputs. Both cpufreq and thermal have trace events; but for power data, it seems that they have to go through sysfs nodes, which is difficult for them to get data at the same timestamps corresponding to those Ftrace data. Similar to tz->poll_queue in thermal_core, hwmon core could also have a work queue polling the registered sensor inputs (by default disabled; enabled only if users configure poll_delay) so that the power data can be generated to Ftrace outputs as well. To add this, the hwmon core needs an interface that can get sensor inputs as drivers like ina3221 don't report any values back to the core but directly expose them via sysfs ABI nodes. I noticed the hwmon_device_register_with_info() could be actually a good API to use since it has defined different sensor types and more importantly the ops->read() interface, but the ina3221 driver is very compact that there would be very little gain from this API at this moment. However, maybe having trace event support would be
"very little gain" is a false assumption. Its size would most likely be reduced by 20% or more, mostly because all the sysfs handling is done by the core if one uses the _info API.
a good reason to apply this API. What do you think about it? Any concern or better solution?
I would not object to adding trace support into the hwmon subsystem. However, it should be tied to the new API. I would resist patches adding trace support to individual hwmon drivers unless the new API is used and additional driver specific trace support is warranted. Note that this also applies to hwmon drivers registering through thermal. The thermal subsystem calls the _info API but misuses it to avoid a warning generated when using the old API. Of course, I have no influence over the hwmon code in the thermal subsystem, so whatever is done there is essentially wild-wild-west. Hope this helps, Guenter