不确定为什么TSC
时钟源不可用?
cat /sys/devices/system/clocksource/clocksource0/available_clocksource
hpet acpi_pm
我使用的 CPU 是Intel Xeon(R) X5570 @ 2.93GHz
。主板是Supermicro X8DTU-F
。正在运行CentOS 6.3 2.6.32-279.22.1.el6.x86_64
。
对以下程序的性能hpet
或测量结果不满意。acpi_pm
#include <time.h>
main()
{
int rc;
long i;
struct timespec ts;
for(i=0; i<10000000; i++) {
rc = clock_gettime(CLOCK_MONOTONIC, &ts);
}
}
作为hpet
时钟源
time ./clock_timing
real 6m25.761s
user 6m23.456s
sys 0m0.403s
作为acpi_pm
时钟源
time ./clock_timing
real 10m12.057s
user 0m6.615s
sys 10m2.549s
更新
cat /proc/cmdline
ro 根 = UUID = 72903706-30bf-4285-9016-d24cf2066d3c rd_NO_LUKS rd_NO_LVM LANG = en_US.UTF-8 rd_NO_MD SYSFONT = latarcyrheb-sun16 crashkernel = 132M @ 0M KEYBOARDTYPE = pc KEYTABLE = us rd_NO_DM vga = 788 consoleblank = 0 clocksource_failover = acpi_pm
grep flags /proc/cpuinfo
标志:fpu vme de pse tsc
msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe 系统调用 nx rdtscp lm constant_tsc
arch_perfmon pebs bts rep_good xtopology nonstop_tsc aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 sse4_2 popcnt lahf_lm ida dts tpr_shadow vnmi flexpriority ept vpid
答案1
一些 Westmere 之前的 Intel CPU 的 TSC 功能存在一些缺陷,也许这就是你的情况,内核将 TSC 列入了计时器源的黑名单。发出以下命令
dmesg | grep -i tsc
并在此报告输出。