VDSO and Intel Skylake Virtualization

From: Mr. Berkley Shands
Date: Wed Nov 08 2017 - 11:18:14 EST


FYI: We discovered the clock_gettime(CLOCK_REALTIME, &ts); was taking >
6900 cycles to run
on intel skylake cpus. Normal is ~60 cycles. In the kernel vdso code is
a very nice comment about 1:1
paring in the hypervisor or the syscall would be eventually used.
Sorry, but with no hypervisor running, the vdso call will always time
out and call the syscall.
Disabling the Intel Virtualization in the BIOS corrects this issue, and
the clock_gettime() runs as it should.
It appears that many folks have run into this issue, and are looking for
a solution.
Should the kernel check to see if there is a hypervisor before getting
confused in __vdso_clock_gettime() ?

Berkley

--

//E. F. Berkley Shands, MSc
Senior Software Architect/Engineer
Exegy Systems Engineering//

**Exegy Inc.**

349 Marshall Road, Suite 100

St. Louis , MO 63119

Direct: (314) 218-3600 X450

Cell: (314) 303-2546

Office: (314) 218-3600

Fax: (314) 218-3601

The Usual Disclaimer follows...


________________________________

This e-mail and any documents accompanying it may contain legally privileged and/or confidential information belonging to Exegy, Inc. Such information may be protected from disclosure by law. The information is intended for use by only the addressee. If you are not the intended recipient, you are hereby notified that any disclosure or use of the information is strictly prohibited. If you have received this e-mail in error, please immediately contact the sender by e-mail or phone regarding instructions for return or destruction and do not use or disclose the content to others.