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.