在OAT添加服务器时,执行precheck出错,报错信息:
check current_clocksource:hpet…EXPECT tsc…FAIL
tips:modify current_clocksource to tsc.eg:append clocksource=tsc to BRUB_CMDLINE_LINUX in grub.cfg
服务器已配置chrony,且服务运行正常。
在OAT添加服务器时,执行precheck出错,报错信息:
check current_clocksource:hpet…EXPECT tsc…FAIL
tips:modify current_clocksource to tsc.eg:append clocksource=tsc to BRUB_CMDLINE_LINUX in grub.cfg
服务器已配置chrony,且服务运行正常。
根据文档库中的信息,您的问题可能与服务器的时钟源配置有关。以下是详细分析和解决方法:
报错原因
报错信息表明,在执行预检查(precheck)时,当前系统的时钟源(current_clocksource
)被检测为 hpet
,而期望值是 tsc
。这可能导致性能问题或不满足 OceanBase 的系统要求。
Chrony 配置正常但仍然报错
虽然您已经配置了 Chrony 并且服务运行正常,但这仅保证了时间同步服务的正常运行,而未解决底层时钟源的问题。OceanBase 对时钟源有明确的要求,建议使用 tsc
以获得更好的性能。
根据文档信息,您可以按照以下步骤手动修复时钟源配置:
将 clocksource=tsc
参数添加到 GRUB 的内核启动参数中:
/etc/default/grub
文件,找到 GRUB_CMDLINE_LINUX
行。clocksource=tsc
,例如:GRUB_CMDLINE_LINUX="... clocksource=tsc"
grub2-mkconfig -o /boot/grub2/grub.cfg
reboot
重启后,检查当前时钟源是否已更改为 tsc
:
cat /sys/devices/system/clocksource/clocksource0/current_clocksource
如果输出为 tsc
,则说明修改成功。
如果您无法通过 GRUB 配置修改时钟源,可以尝试临时修改时钟源(注意:此方法仅在当前会话有效,重启后失效):
echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource
时钟源的重要性
根据文档片段 6 的说明,OceanBase 集群对时钟偏差非常敏感,允许的最大偏差为 2 秒。因此,确保时钟源配置正确是集群稳定运行的基础。
Chrony 和时钟源的关系
Chrony 是用于时间同步的服务,而时钟源决定了系统如何获取本地时间基准。两者需要协同工作,缺一不可。
根据文档库中的信息(参考文档标题:配置时钟源),您需要将时钟源修改为 tsc
,以满足 OceanBase 的系统要求。具体操作请参考上述步骤。如果问题仍未解决,请联系 OceanBase 技术支持以获取进一步帮助。
更多信息请查看:
根据文档库中的信息以及内在知识,HPET
和 TSC
是两种不同的硬件时钟源,它们在性能、精度和适用场景上存在显著差异。以下是详细的对比分析:
HPET (High Precision Event Timer)
HPET 是一种高精度事件计时器,通常用于需要精确时间戳的场景。它是一个独立的硬件模块,提供多个计时通道,适合多任务操作系统使用。HPET 的设计目标是提供一个通用的、高分辨率的时间基准。
TSC (Time Stamp Counter)
TSC 是 CPU 内部的一个寄存器,记录自 CPU 启动以来的时钟周期数。它的值随着 CPU 的时钟频率变化而递增,因此可以用来测量时间间隔。
HPET
TSC
HPET
TSC
根据您之前的问题以及文档库中的信息(参考文档标题:配置时钟源),OceanBase 推荐使用 TSC
作为时钟源。原因如下:
可以通过以下命令检查当前系统的 TSC 支持情况:
cat /proc/cpuinfo | grep "tsc"
如果输出包含 tsc
,说明 CPU 支持 TSC 功能。
此外,还可以检查是否支持不变 TSC:
dmesg | grep -i tsc
如果输出中包含类似 invariant_tsc
的字样,则说明系统支持不变 TSC。
如果您仍有疑问,请进一步提供硬件环境信息(如 CPU 型号等),以便更准确地分析问题。
具体信息可参考以下文档: