概述
概述
有很多时钟源可用于硬件虚拟机 (HVM) 实例,例如 Xen、时间戳计数器 (TSC)、高精度事件时间 (HPET) 或高级配置和电源接口规范 (ACPI)。对于windows虚拟机 ,最佳实践是使用 tsc 时钟源。
1.列出宿主机时钟源,查看available_clocksource:
cat /sys/devices/system/clocksource/clocksource0/available_clocksource
tsc hpet acpi_pm
2.将当前时钟源设置为不同的值
- 作为超级用户运行 bash 以覆盖 current_clocksource:
sudo bash -c 'echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource'
- 运行 dmesg 命令查看内核消息:
dmesg | less
如果覆盖成功,将显示此消息:
clocksource: Switched to clocksource tsc
注意:重启系统会导致 Linux 内核重置时钟源。
3.在系统启动加载程序期间设置时钟源
- 在内核命令行参数中设置 clocksource。
例如: 如果使用 grub2 并且您想要将时钟源设置为“tsc”,请编辑 /etc/default/grub 文件,并为 GRUB_CMDLINE_LINUX 选项添加 clocksource=tsc tsc=reliable:
GRUB_CMDLINE_LINUX="console=tty0 crashkernel=auto console=ttyS0,115200 clocksource=tsc tsc=reliable"
- 生成 grub.cfg 文件:
grub2-mkconfig -o /boot/grub2/grub.cfg
4.rating:时钟源的精度
同一个设备下,可以有多个时钟源,每个时钟源的精度由驱动它的时钟频率决定,比如一个由10MHz时钟驱动的时钟源,他的精度就是100nS。clocksource结构中有一个rating字段,代表着该时钟源的精度范围,它的取值范围如下:
1--99: 不适合于用作实际的时钟源,只用于启动过程或用于测试;
100--199:基本可用,可用作真实的时钟源,但不推荐;
200--299:精度较好,可用作真实的时钟源;
300--399:很好,精确的时钟源;
400--499:理想的时钟源,如有可能就必须选择它作为时钟源;
linux-4.0.4/arch/x86/kernel/kvmclock.c,kvm-clock的rating是400;
linux-4.0.4/arch/x86/kernel/tsc.c中,tsc的rating是300;
linux-4.0.4/arch/x86/kernel/hpet.c中,hpet的rating是250;
linux-4.0.4/drivers/clocksource/acpi_pm.c中,acpi_pm的rating是200;
linux-4.0.4/drivers/clocksource/i8253.c中,pit的rating是110。
综上,Linux大致实现了clocksource的管理框架,各个timer实现自己的drvier,并注册到clocksource中。根据rating来看timer的性能:kvmclock>tsc>hpet>acpi_pm>pit
。
参考:
How to change the clock source in the system
为什么guest虚拟机需要精确的时钟
clocksource的管理和虚拟化
Linux时间子系统之一:clock source(时钟源)
最后
以上就是健康毛衣为你收集整理的如何管理kvm虚拟机的时钟源的全部内容,希望文章能够帮你解决如何管理kvm虚拟机的时钟源所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复