我是靠谱客的博主 健康毛衣,最近开发中收集的这篇文章主要介绍如何管理kvm虚拟机的时钟源,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

概述

有很多时钟源可用于硬件虚拟机 (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虚拟机的时钟源所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部