如何确定运行 Linux 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例使用的时钟源以及如何更改它?
简短描述
通过使用 SSH 客户端,您可以找到当前的时钟源,列出可用的时钟源,或更改时钟源。
**注意:**有很多时钟源可用于硬件虚拟机 (HVM) 实例,例如 Xen、时间戳计数器 (TSC)、高精度事件时间 (HPET) 或高级配置和电源接口规范 (ACPI)。对于在 AWS Xen 管理程序上启动的 EC2 实例,最佳实践是使用 tsc 时钟源。其他 EC2 实例类型,例如 C5 或 M5,使用的是 AWS Nitro 管理程序。为 AWS Nitro 管理程序推荐的时钟源是 kvm-clock。
**请注意:**AWS Graviton2 处理器使用 arch_sys_counter 作为时钟源。
解决方法
查找时钟源
将 SSH 客户端打开到您的 EC2 实例,然后运行以下命令来查找当前的和可用的时钟源。
要查找当前设置的时钟源,请列出 current_clocksource 文件的内容:
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
xen
要列出可用的时钟源,请列出 available_clocksource 文件的内容:
cat /sys/devices/system/clocksource/clocksource0/available_clocksource
xen tsc hpet acpi_pm
将当前时钟源设置为不同的值
1. 作为超级用户运行 bash 以覆盖 current_clocksource:
sudo bash -c 'echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource'
2. 运行 dmesg 命令查看内核消息:
dmesg | less
如果覆盖成功,则将显示此消息:
clocksource: Switched to clocksource tsc
**请注意:**重启系统会导致 Linux 内核重置时钟源。
永久设置时钟源
要永久设置时钟源,请在系统启动加载程序中设置时钟源:
1. 在内核命令行参数中设置 clocksource。
例如,如果您使用 grub2 并且想要将时钟源设置为 "tsc",则请在编辑器中打开 /etc/default/grub。然后,为 GRUB_C MDLINE_LINUX 选项添加 clocksource =tsc tsc=reliable:
GRUB_CMDLINE_LINUX="console=tty0 crashkernel=auto console=ttyS0,115200 clocksource=tsc tsc=reliable"
2. 生成 grub.cfg 文件:
grub2-mkconfig -o /boot/grub2/grub.cfg
相关信息
为 Linux 实例设置时间