Vinay Devadas wrote:
>> And never executed halt, right?
>>     
>
> No, I just made the sampling thread sleep for the "interval length". I did 
> not halt the CPU.
>   

Sorry. I don't think it is supposed to matter anyway. If I read the 
System Programmer's Guide description of APERF/MPERF correctly, these 
counters only increment when in the C0 state anyway. So, OK, I give up. 
If we are in P0 for the entire interval, then why isn't APERF/MPERF 
equal to 1. Aubrey, do you have any ideas?

> -Vinay
>
> ----- Original Message -----
> From: Mark Haywood <Mark.Haywood at Sun.COM>
> Date: Wednesday, July 23, 2008 1:51 pm
> Subject: Re: [tesla-dev] Experiment Results on APERF/MPERF registers - Need 
> Clarification
> To: Vinay Devadas <Vinay.Devadas at Sun.COM>
> Cc: tesla-dev at opensolaris.org
>
>
>   
>> Vinay Devadas wrote:
>>     
>>> Actually, I don't think that's right. I think that the only time you 
>>>       
>> would see APERF/MPERF equal to 1, is if the CPU was at P0 and never 
>>     
>>> went idle.
>>>
>>> The whole experiment, CPU was in P0.
>>>   
>>>       
>> And never executed halt, right?
>>
>>     
>>> ----- Original Message -----
>>> From: Mark Haywood <Mark.Haywood at Sun.COM>
>>> Date: Wednesday, July 23, 2008 1:29 pm
>>> Subject: Re: [tesla-dev] Experiment Results on APERF/MPERF registers 
>>>       
>> - Need Clarification
>>     
>>> To: Vinay Devadas <Vinay.Devadas at Sun.COM>
>>> Cc: tesla-dev at opensolaris.org
>>>
>>>
>>>   
>>>       
>>>> Vinay Devadas wrote:
>>>>     
>>>>         
>>>>> Hi,
>>>>>
>>>>> Here are the intial results I obtained for Turbo Mode using 
>>>>>       
>>>>>           
>>>> APERF/MPERF, I need some clarification on the results.
>>>>     
>>>>         
>>>>> Remaining in P0, I sampled the ratio APERF and MPERF for different 
>>>>>           
>>>>>       
>>>>>           
>>>> interval lengths. The computer I ran these experiments on does not 
>>>>         
>>>> have Turbo Mode feature, so the clock is expected to be in P0 
>>>> throughout the experiment. I took 10 samples per interval length. I 
>>>>         
>>>> reset APERF/MPERF registers after every read.
>>>>     
>>>>         
>>>>> Interval Length = 1sec
>>>>> 1 ratio = 0.953074
>>>>> 2 ratio = 0.950529
>>>>> 3 ratio = 0.955870
>>>>> 4 ratio = 0.950900
>>>>> 5 ratio = 0.947259
>>>>> 6 ratio = 0.950799
>>>>> 7 ratio = 0.947093
>>>>> 8 ratio = 0.949705
>>>>> 9 ratio = 0.947057
>>>>> 10 ratio = 0.951851
>>>>>
>>>>> Interval Length = 10sec
>>>>> 1 ratio = 0.852206
>>>>> 2 ratio = 0.852150
>>>>> 3 ratio = 0.846130
>>>>> 4 ratio = 0.825831
>>>>> 5 ratio = 0.763463
>>>>> 6 ratio = 0.751499
>>>>> 7 ratio = 0.782461
>>>>> 8 ratio = 0.772478
>>>>> 9 ratio = 0.750490
>>>>> 10 ratio = 0.855870
>>>>>
>>>>> Ideally since we are in P0, I believe we expect the ratio = 
>>>>>       
>>>>>           
>>>> APERF/MPERF to be 1 (correct me if I am wrong). When the interval 
>>>>         
>> is 
>>     
>>>> 1sec we see that the ratio is around 0.95, on the other hand when 
>>>> interval is 10sec, the ratio is around 0.85 and during some 
>>>>         
>> sampling 
>>     
>>>> it goes down to 0.75 as well. 
>>>>     
>>>>         
>>>>>   
>>>>>       
>>>>>           
>>>> Actually, I don't think that's right. I think that the only time 
>>>>         
>> you 
>>     
>>>> would see APERF/MPERF equal to 1 is if the CPU was at P0 and never 
>>>>         
>>>> went 
>>>> idle.
>>>>     
>>>>         
>>>>> I understand the ratio cannot be one, as we have to execute 2 
>>>>>       
>>>>>           
>>>> instructions to read both regs (APERF MPERF) and these two cannot 
>>>> occur concurently. So practically, the ratio should be close to one 
>>>>         
>>>> (when in P0). But, I see values like 0.85 and 0.75, is this normal 
>>>>         
>> ? 
>>     
>>>> and this happens when the interval is large (10sec) in my example.
>>>>     
>>>>         
>>>>> By the way, I am taking care to make the 2 reads happens as 
>>>>>           
>> quickly 
>>     
>>>>>       
>>>>>           
>>>> as possible,
>>>>     
>>>>         
>>>>> spl_high()
>>>>> rdmsr (APERF)
>>>>> rdmsr (MPERF)
>>>>> spl0()
>>>>>
>>>>> Please let me know of any suggestions/explanations possible.
>>>>>
>>>>> Thanks,
>>>>> Vinay
>>>>>
>>>>> _______________________________________________
>>>>> tesla-dev mailing list
>>>>> tesla-dev at opensolaris.org
>>>>> http://mail.opensolaris.org/mailman/listinfo/tesla-dev
>>>>>   
>>>>>       
>>>>>           
> _______________________________________________
> tesla-dev mailing list
> tesla-dev at opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/tesla-dev
>   


Reply via email to