Linux 时钟源查看与 PIT 问题总结
1. Linux 如何查看支持的时钟源和正在使用的时钟源 在 Linux 内核时间子系统(timekeeping)里,clocksource 表示内核用来累计时间的“基准计时器”(对比 clockevent 用来产生周期性中断)。 在支持 sysfs 的系统上,可以直接读取 clocksource 相关文件: 1.1 当前正在使用的时钟源 cat /sys/devices/system/clocksource/clocksource0/current_clocksource 输出的就是当前启用的 clocksource 名称(例如常见会看到 tsc、hpet、acpi_pm、kvm-clock 等,具体取决于平台与内核选择逻辑)。 1.2 支持/可用的时钟源 cat /sys/devices/system/clocksource/clocksource0/available_clocksource available_clocksource 通常以空格或换行方式列出当前系统“已注册/可用”的 clocksource 列表。 如果机器可能存在多个 clocksource 目录,也可以直接列出所有可读目录后逐个查看(一般只会有 clocksource0): ls /sys/devices/system/clocksource/ 1.3 通过内核日志交叉验证(选择过程) 内核在启动与必要时切换 clocksource 时,会在日志里打印相关信息。可以用关键字过滤: dmesg | grep -i "clocksource" 1.4 不依赖 sysfs 的补充:查看计时/定时器信息 /proc/timer_list 更偏向“计时器/clockevent”视角,但有时也能辅助判断时间子系统是否正常工作。可以作为补充排查手段: cat /proc/timer_list 1.5 内核选择 clocksource 的思路(以实时场景为例) 在 multiprocessor(SMP/NUMA)系统中,内核会在启动阶段发现可用 clock sources,并为当前场景选择一个合适的 clocksource 来累计时间。 在 Red Hat 的参考中,preferred 的选择通常是:...