There have been a series of patches committed to the mainline kernel
recently that address a performance issue for gettimeofday when running
on hypervisors that enable hardware assisted virtualization. The
non-ideal performance occurs because a CPUID instruction is used to
serialize the pipeline before RDTSC, and when using hardware
virtualization, CPUID always exits to the hypervisor.
The code in question also exists in the RHEL 5.2 64-bit kernel (see
get_cycles_sync in include/asm-x86_64/timex.h).
The fix is to use MFENCE/LFENCE instead of CPUID. Here are links to
relevant patches by Andi Kleen which are now in git:
Description of problem:
There have been a series of patches committed to the mainline kernel
recently that address a performance issue for gettimeofday when running
on hypervisors that enable hardware assisted virtualization. The
non-ideal performance occurs because a CPUID instruction is used to
serialize the pipeline before RDTSC, and when using hardware
virtualization, CPUID always exits to the hypervisor.
The code in question also exists in the RHEL 5.2 64-bit kernel (see asm-x86_ 64/timex. h).
get_cycles_sync in include/
The fix is to use MFENCE/LFENCE instead of CPUID. Here are links to
relevant patches by Andi Kleen which are now in git:
http:// git.kernel. org/?p= linux/kernel/ git/torvalds/ linux-2. 6.git;a= commit; h=de4218634e3df 6d73a3e6cdfdf3a 17fa3bc7e013 git.kernel. org/?p= linux/kernel/ git/torvalds/ linux-2. 6.git;a= commit; h=707fa8ed923b1 b6a3d7af0d386b0 b3abad28ed19 git.kernel. org/?p= linux/kernel/ git/torvalds/ linux-2. 6.git;a= commit; h=fde1b3fa947c2 512e3715962ebb1 d3a6a9b9bb7d git.kernel. org/?p= linux/kernel/ git/torvalds/ linux-2. 6.git;a= commit; h=6d63de8dbcda9 8511206897562ec fcdacf18f523 git.kernel. org/?p= linux/kernel/ git/torvalds/ linux-2. 6.git;a= commit; h=f06e4ec1c1569 1b0cfd2397ae322 14fa36c90d71
http://
http://
http://
http://
Would you be able to make a similar change to the RHEL 5.2 kernel, to
address this issue ?
Thanks,
Alok