第 11 章 KVM 客户端计时管理
KVM 使用很多先进 CPU 的恒定时间戳计数器(TSC)特性。一些没有恒定时间戳计数器的 CPU 会影响 KVM 中运行的客户端计时。无法准确计时的客户端可能会严重影响一些联网应用程序,因为您的客户端可能会比实际时间运行得快或者慢。
不准确的时钟和计数器为客户端带来的一些问题:
时钟可能会无法与实际时间同步,这将导致会话无效并影响到网络。
时钟慢一些的客户端迁移时会出现问题。
客户端可能会停止或者崩溃。
这些问题在其它虚拟化平台中也存在,因此应经常测试计时。
NTP
应该在主机和客户端中运行网络时间协议(NTP)守护进程。请启用 ntpd
服务:
# service ntpd start
请在默认启动序列中添加 ntpd 服务:
# chkconfig ntpd on
使用 ntpd
服务应该可以在各种情况下最小化时钟偏移造成的影响。
确定您的 CPU 是否有恒定时间戳计数器
如果显示 constant_tsc
标签,那么您的 CPU 就有恒定时间戳计数器。要确定您的 CPU 是否有 constant_tsc
标签,请运行以下命令:
$ cat /proc/cpuinfo | grep constant_tsc
如果有输出结果,说明您的 CPU 有 constant_tsc
字节。如果没有输出结果,请按以下步骤执行。
配置没有恒定时间戳计数器的主机
没有恒定时间戳计数器的系统需要进行额外配置。电源管理特性可影响准确计时,且必须在客户端中禁用以便使用 KVM 准确计时。
Note
这些说明仅用于 AMD 修订 F cpu。
If the CPU lacks the constant_tsc
bit, disable all power management features (BZ#513138). Each system has several timers it uses to keep time. The TSC is not stable on the host, which is sometimes caused by cpufreq
changes, deep C state, or migration to a host with a faster TSC. To stop deep C states, which cam stop the TSC, add “processor.max_cstate=1
“ to the kernel boot options in grub on the host:
term Fedora (vmlinuz-2.6.29.6-217.2.3.fc11)
root (hd0,0)
kernel /vmlinuz-vmlinuz-2.6.29.6-217.2.3.fc11 ro root=/dev/VolGroup00/LogVol00 rhgb quiet processor.max_cstate=1
要禁用 cpufreq
(只在没有 cpufreq
的主机中需要),请编辑 /etc/sysconfig/cpuspeed
配置文件并将 MIN_SPEED
和 MAX_SPEED
变量改为可用的最高频率。有效上限请查看 /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies
文件。
在红帽企业版 Linux 客户端中使用半虚拟时钟
某些红帽企业版 Linux 客户端需要附加内核参数。这些参数的设置可通过在客户端 /boot/grub/grub.conf 文件的 /kernel 行结尾添加它们完成。
下表列出了红帽企业版 Linux 版本以及没有恒定时间戳计数器客户端所需要的参数。
红帽企业版 Linux | 附加客户端内核参数 |
---|---|
使用半虚拟时钟的 5.4 AMD64/Intel 64 | 不需要附加参数 |
没有半虚拟时钟的 5.4 AMD64/Intel 64 | divider=10 notsc lpj=n |
使用半虚拟时钟的 5.4 x86 | 不需要附加参数 |
没有半虚拟时钟的 5.4 x86 | divider=10 clocksource=acpi_pm lpj=n |
5.3 AMD64/Intel 64 | divider=10 notsc |
5.3 x86 | divider=10 clocksource=acpi_pm |
4.8 AMD64/Intel 64 | notsc divider=10 |
4.8 x86 | clock=pmtmr divider=10 |
3.9 AMD64/Intel 64 | 不需要附加参数 |
3.9 x86 | 不需要附加参数 |
在 Windows 客户端中使用半虚拟时钟
在 Windows 客户端中编辑引导参数可启用半虚拟时钟。Windows 引导设置保存在 boot.ini 文件中。要弃用半虚拟时钟,请添加以下行:
/use pmtimer
有关 Windows 引导设置以及 pmtimer 选项的详情请参考 Windows XP 可用切换选项以及 Windows 服务器 2003 boot.ini 文件。