On 9/20/2012 10:24 AM, Igor Zhbanov wrote:
Chris Ferron wrote:
> On 09/19/2012 01:26 AM, Igor Zhbanov wrote:
>> I mean that only online cores are shown in /proc/cpuinfo.
>> So the PowerTOP doesn't count currently offline ones.
>> And you must run the PowerTOP on a heavy loaded system
>> to let the PowerTOP see all CPU cores.
>> Therefore it is impossible to run the PowerTOP before starting
>> of heavy application to get information about all CPU cores.
>> Probably the PowerTOP could cache CPU information in some file,
>> so it will be possible to register trace events for all cores.
> Off hand I don't have a good solution to help your ARM story. Your notes
> are interesting and I agree this is something that ARM is going to need.
> Do you have a complete solution you would like to purpose? I assume you
> have done some hacking to get around this, but if you have taken that
> and tuned it i suggest purposing the change. If you find a solution that
> doesn't digress the Architectures, and corrects the ARM story then
> please submit patches. I would be interested in seeing what you have
> come up with.
> I will try and look for a general solution, are there any other ARM
> advocates on this list who would like to chime in?
Now I'm looking for solution. But I see now only four ways:
1) Develop another kernel mechanism for providing information about all available
CPUs and cores. Or ask the kernel authors not to remove offline cores from
/proc/cpuinfo and their information files from /sys/.../cpu/.
2) Scan /sys/.../cpu for all CPUs and temporarily wake it up to gather information.
3) Ask the user to run PowerTOP on a heavy loaded system for the first time
(or wake up all CPUs by the PowerTOP) and store collected CPU information somewhere
in /var/cache/powertop and reuse it on later runs.
4) Don't just sleep in a main cycle, but scan /sys/.../cpu for new CPUs to appear.
(Perhaps there could be something like D-Bus or netlink notification when a core
brought online -- I don't know about it).
At your personal view, what way fits better in the PowerTOP project?
it's messy. ARM in some ways is abusing CPU Offline for idle...
P.S. This may be the case for x86 CPUs too. I have disable CPU2 by writing
to /sys/devices/system/cpu2/online, and the PowerTOP sees only CPU0, CPU1, and CPU3.
Although default PC's CPU governor as I know doesn't turn off CPUs frequently.
on x86, you don't win any power at all by offlining CPUs (in fact, it's very power
inefficient to do so,
idle tends to be THAT good)