Whats the purpose of get_cycles_sync()

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <tglx@...>, <mingo@...>, <hpa@...>
Cc: <linux-kernel@...>, <benjamin.serebrin@...>
Date: Tuesday, October 30, 2007 - 1:44 pm

Hi,

I would like to answer what the special purpose of the get_cycles_sync()
function is in the x86 architecture. In special I ask myself why
this function has to be *sync*?

I mean, the sync should guarantee here that the CPU does not execute the
RDTSC instruction out-of-order, thats clear. But does that really
matter? If there is a cache/tlb miss before the function returns all
accuracy that should be won by the synchronous RDTSC is lost anyway.

The problem here is, that this function executes CPUID if RDTSC itself
is not a synchronizing instruction and CPUID is very often intercepted
by hypervisors (KVM intercepts it for example). This makes this function
very expensive if the kernel is executed as a guest.

But maybe I miss some important things here.

Joerg

-- 
           |           AMD Saxony Limited Liability Company & Co. KG
 Operating |         Wilschdorfer Landstr. 101, 01109 Dresden, Germany
 System    |                  Register Court Dresden: HRA 4896
 Research  |              General Partner authorized to represent:
 Center    |             AMD Saxony LLC (Wilmington, Delaware, US)
           | General Manager of AMD Saxony LLC: Dr. Hans-R. Deppe, Thomas McCoy


-
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Whats the purpose of get_cycles_sync(), Joerg Roedel, (Tue Oct 30, 1:44 pm)
Re: Whats the purpose of get_cycles_sync(), Andi Kleen, (Tue Oct 30, 4:21 pm)
Re: Whats the purpose of get_cycles_sync(), Joerg Roedel, (Wed Oct 31, 6:18 am)
Re: Whats the purpose of get_cycles_sync(), Vojtech Pavlik, (Tue Oct 30, 6:02 pm)
Re: Whats the purpose of get_cycles_sync(), Joerg Roedel, (Wed Oct 31, 6:23 am)
Re: Whats the purpose of get_cycles_sync(), Andi Kleen, (Tue Oct 30, 6:42 pm)