OAT添加服务器时出错

在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,且服务运行正常。

@论坛小助手 请分析下原因

根据文档库中的信息,您的问题可能与服务器的时钟源配置有关。以下是详细分析和解决方法:

问题分析

  1. 报错原因
    报错信息表明,在执行预检查(precheck)时,当前系统的时钟源(current_clocksource)被检测为 hpet,而期望值是 tsc。这可能导致性能问题或不满足 OceanBase 的系统要求。

  2. Chrony 配置正常但仍然报错
    虽然您已经配置了 Chrony 并且服务运行正常,但这仅保证了时间同步服务的正常运行,而未解决底层时钟源的问题。OceanBase 对时钟源有明确的要求,建议使用 tsc 以获得更好的性能。


解决方案

根据文档信息,您可以按照以下步骤手动修复时钟源配置:

1. 修改 GRUB 配置文件

clocksource=tsc 参数添加到 GRUB 的内核启动参数中:

  • 编辑 /etc/default/grub 文件,找到 GRUB_CMDLINE_LINUX 行。
  • 在该行末尾追加 clocksource=tsc,例如:
    GRUB_CMDLINE_LINUX="... clocksource=tsc"
    
  • 保存文件后,更新 GRUB 配置并重启服务器:
    grub2-mkconfig -o /boot/grub2/grub.cfg
    reboot
    

2. 验证时钟源是否修改成功

重启后,检查当前时钟源是否已更改为 tsc

cat /sys/devices/system/clocksource/clocksource0/current_clocksource

如果输出为 tsc,则说明修改成功。

3. 如果无法直接修改 GRUB 配置

如果您无法通过 GRUB 配置修改时钟源,可以尝试临时修改时钟源(注意:此方法仅在当前会话有效,重启后失效):

echo tsc > /sys/devices/system/clocksource/clocksource0/current_clocksource

注意事项

  1. 时钟源的重要性
    根据文档片段 6 的说明,OceanBase 集群对时钟偏差非常敏感,允许的最大偏差为 2 秒。因此,确保时钟源配置正确是集群稳定运行的基础。

  2. Chrony 和时钟源的关系
    Chrony 是用于时间同步的服务,而时钟源决定了系统如何获取本地时间基准。两者需要协同工作,缺一不可。


总结

根据文档库中的信息(参考文档标题:配置时钟源),您需要将时钟源修改为 tsc,以满足 OceanBase 的系统要求。具体操作请参考上述步骤。如果问题仍未解决,请联系 OceanBase 技术支持以获取进一步帮助。

更多信息请查看:

  1. 主机标准化检查项
  2. ob_tenant_partition_leader_absent OceanBase 租户分区无主
  3. host_ntp_offset_too_large 服务器与时钟源偏移过大
  4. 检查 NTP 偏移量
  5. (可选)配置时钟源
  6. 进行 TPC-C 测试
  7. 使用 OCP 进行运维
1 个赞

hpet 和 tsc 有什么区别? @论坛小助手

根据文档库中的信息以及内在知识,HPETTSC 是两种不同的硬件时钟源,它们在性能、精度和适用场景上存在显著差异。以下是详细的对比分析:

1. 定义

  • HPET (High Precision Event Timer)
    HPET 是一种高精度事件计时器,通常用于需要精确时间戳的场景。它是一个独立的硬件模块,提供多个计时通道,适合多任务操作系统使用。HPET 的设计目标是提供一个通用的、高分辨率的时间基准。

  • TSC (Time Stamp Counter)
    TSC 是 CPU 内部的一个寄存器,记录自 CPU 启动以来的时钟周期数。它的值随着 CPU 的时钟频率变化而递增,因此可以用来测量时间间隔。


2. 性能与精度

  • HPET

    • 提供稳定的高精度时间基准,不受 CPU 频率变化的影响。
    • 在多核系统中,所有核心共享同一个 HPET 计时器,因此跨核时间同步性较好。
    • 但 HPET 的访问速度相对较慢,因为它是一个外部硬件设备。
  • TSC

    • 提供极高的访问速度,因为它是 CPU 内部的寄存器。
    • 如果 CPU 支持不变 TSC(Invariant TSC),即使在动态调整频率的情况下,TSC 的值仍然保持线性增长,从而保证了时间测量的准确性。
    • 在多核系统中,不同核心的 TSC 可能存在微小偏差,但在现代 CPU 中,这种偏差已经被优化到几乎可以忽略的程度。

3. 适用场景

  • HPET

    • 更适合需要稳定时间基准的场景,例如实时操作系统或对时间精度要求极高的应用。
    • 在某些老旧硬件或虚拟化环境中,可能无法使用 TSC,此时 HPET 是更好的选择。
  • TSC

    • 更适合高性能计算场景,尤其是在单机或多核环境中需要快速获取时间戳的应用。
    • OceanBase 等分布式数据库对性能要求较高,因此推荐使用 TSC 作为时钟源以获得更好的性能表现。

4. OceanBase 的推荐

根据您之前的问题以及文档库中的信息(参考文档标题:配置时钟源),OceanBase 推荐使用 TSC 作为时钟源。原因如下:

  • TSC 提供更高的性能和更低的延迟,能够满足分布式数据库对时间敏感操作的需求。
  • 现代 CPU 通常支持不变 TSC(Invariant TSC),这使得 TSC 成为一个可靠且高效的选择。
  • 如果您的服务器硬件支持 TSC,并且已经通过 BIOS 或内核参数启用了不变 TSC(Invariant TSC),那么 TSC 是最佳选择。

5. 如何确认硬件支持 TSC

可以通过以下命令检查当前系统的 TSC 支持情况:

cat /proc/cpuinfo | grep "tsc"

如果输出包含 tsc,说明 CPU 支持 TSC 功能。

此外,还可以检查是否支持不变 TSC:

dmesg | grep -i tsc

如果输出中包含类似 invariant_tsc 的字样,则说明系统支持不变 TSC。


6. 总结

  • HPET 提供稳定的高精度时间基准,但访问速度较慢。
  • TSC 提供极高的访问速度和较好的性能,适用于现代高性能计算场景。
  • 对于 OceanBase 数据库,推荐使用 TSC 作为时钟源,以获得更好的性能表现。

如果您仍有疑问,请进一步提供硬件环境信息(如 CPU 型号等),以便更准确地分析问题。

具体信息可参考以下文档:

  1. 进行 TPC-H 测试
  2. 检查 NTP 偏移量
  3. UTC_TIME
  4. UTC_TIMESTAMP
  5. DATE、DATETIME 和 TIMESTAMP 类型
  6. (可选)配置时钟源
  7. V$OB_TIMESTAMP_SERVICE
2 个赞