Intel Virtualization and clock_gettime reproducer
From: Mr. Berkley Shands
Date: Thu Nov 09 2017 - 09:02:09 EST
This affects every kernel I tried, 4.9.[54|35|24], 3.18.27, RH 3.10.0-693*.
The test machine is a Dell R740 with 2X8168 and 384GB.
#include <time.h>
#include <stdio.h>
#include <sys/time.h>
inline long GetPerf()
{
int _hi, _lo;
__asm__ __volatile__ ("rdtsc":"=a" (_lo), "=d"(_hi));
return ((long) _hi << 32) | _lo;
}
int main()
{
struct timespec ts;
int i, count;
long start, end, delta, min, max, total, avg;
count = 100;
min = 0x7fffffff;
max = 0;
total = 0;
for (i = 0; i < count; i++)
{
start = GetPerf();
clock_gettime(CLOCK_REALTIME, &ts);
end = GetPerf();
delta = end - start;
if (delta > max) max = delta;
if (delta < min) min = delta;
total += delta;
}
avg = total / count;
printf("min: %ld\n", min);
--
//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.