Verify the frequency of a core

pradeep hettiarachchi pacprnt at gmail.com
Fri Jun 24 10:16:42 EDT 2011


Hi Tharindu,

Re: great effort, unfortunately what you mentioned does not verify the
required fact (In other words, (1) your method requests the governor
to do the frequency change request (FCR), (2) the governor ask the
driver to do the job (trace the kernel code path, you will understand
this). But internally, the CPU has single VID set, which request the
motherboard regulator to change the Vcc. Motherboard (DC-to-DC)
regulator does not have any way of setting different voltages for
individual cores simultaneously. So, different core frequencies are
not possible. However, (still I did not study the code), the scheduler
might take the assigned frequency (by the user) into account when it
schedule any task in the core (might be load balancing: to be
confirmed) still no multiple frequencies are possible ).

The informed frequency from sysfile is not accurate (the low lever
drivers are not even called when you ask governor (sysfiles) to read
the frequency): if you change the CPU frequency by other means (eg
using writing directly to MSR), your sysfiles does not catch it.


Have a look at low level implementation of frequency driver (they all
change the frequency of the processor using MSR- a set of registers
that specifically used to manage the CPU functionality and the
configuration)

So, if you want to verify that the CPU cores can stay in multiple
frequencies simultaneously, the best method is to change the frequency
by user-space governor and try to verify the frequency using direct
MSRs (I did that and found which is not possible).  If you can
successfully show that, let me know.




Sincerely,

Pradeep M. Hettiarachchi



On Thu, Jun 23, 2011 at 9:52 PM, Tharindu Rukshan Bamunuarachchi
<btharindu at gmail.com> wrote:
> Hi Pradeep,
>
> Below commands will do the job.
>
> modprobe acpi-cpufreq
> modprobe cpufreq_userspace
>
> cd /sys/devices/system/cpu/cpu0/cpufreq
> echo userspace > scaling_governor
> echo 2394000 > scaling_setspeed
>
> cd /sys/devices/system/cpu/cpu1/cpufreq
> echo userspace > scaling_governor
> echo 2128000 > scaling_setspeed
>
> cd /sys/devices/system/cpu/cpu2/cpufreq
> echo userspace > scaling_governor
> echo 1862000 > scaling_setspeed
>
> cd /sys/devices/system/cpu/cpu3/cpufreq
> echo userspace > scaling_governor
> echo 1596000 > scaling_setspeed
>
> cat /proc/cpuinfo | grep MHz
> cpu MHz        : 2394.000
> cpu MHz        : 2128.000
> cpu MHz        : 1862.000
> cpu MHz        : 1596.000
>
> Tested on Q6600
> quadcore:~ # cat /proc/cpuinfo | grep GHz
> model name    : Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz
> model name    : Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz
> model name    : Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz
> model name    : Intel(R) Core(TM)2 Quad CPU    Q6600  @ 2.40GHz
>
>
> __
> Tharindu "Rukshan" Bamunuarachchi
>
>
>
>
>
>
> On Fri, Jun 24, 2011 at 3:17 AM, pradeep hettiarachchi <pacprnt at gmail.com>
> wrote:
>>
>> Hi Tharindu,
>>
>> An another round of the old questions:
>>
>> Can you give me any evidence to confirm that the core frequencies can
>> be run in different values from each other. You may try to do (set
>> individual core frequency values) it individually through any governor
>> or MSR methods. However, actually it does not implemented internally.
>> Please show/tell me if you have any methods to show that core
>> frequencies are different at any given time. (Take i7 950 or Q 6600
>> processors applicable approach so that I can verify it so easily)
>>
>>
>>
>>
>> Sincerely,
>>
>> Pradeep M. Hettiarachchi
>>
>>
>>
>> On Sat, Dec 25, 2010 at 2:45 PM, pradeep hettiarachchi
>> <pacprnt at gmail.com> wrote:
>> > Hi,
>> >
>> > Here what I did:
>> > I set the "performance" governor for one of the cores and "ondemand"
>> > governor on an another core. Then I noticed that the cores have
>> > different frequencies.
>> > Based of the above observation on different processors, I have a
>> > couple of questions.
>> >
>> > 1) When I tried to frequency-scale in a core i7 processor, it allows
>> > me to set different governors for individual cores. As per to my
>> > understanding, the processor has 4 physical cores and 2 hardware
>> > threads per core. (totaling 8 cores altogether)  This means, I should
>> > not be able to set different frequencies in two adjacent cores (say
>> > core 0 and core 1) as they both same hardware. My understanding is I
>> > should not be able to set the individual core frequencies as explained
>> > above.
>> >
>> > 2) When I played with Q6600 processor, I found that trough the
>> > governor, I can set the individual core-frequency. But as per to the
>> > literature, Intel does not provide a facility to frequency-scale in
>> > individual cores but the frequency in the entire processor.
>> >
>> > 3) What does the governor do? Does it set the frequency of the core
>> > directly ?
>> >
>> > 4) Is there any way that I can verify the actual frequency of a core
>> > other than the interface of the governor.  Do you recommend to use MSR
>> > direly to change and  measure the frequency  of the system ?
>> >
>> >
>> >
>> >
>> > Sincerely,
>> >
>> > Pradeep M. Hettiarachchi
>> >
>
>



More information about the Kernelnewbies mailing list