centos 定时器精度范围
在 centos(基于 linux 内核)上,定时器的可达精度主要由内核配置与所用接口决定:传统低精度定时器受内核 hz 限制,通常为毫秒级;启用高精度模式后,内核与用户态接口可支持到纳秒级的时间粒度。下表给出常见场景与典型精度对照。
| 场景 | 典型接口 | 可达精度 | 说明 |
|---|---|---|---|
| 内核低精度定时器(timer_list) | add_timer / mod_timer | 约 1/hz 秒(如 hz=100 为 10 ms;hz=1000 为 1 ms) | 受系统 tick 限制,适合非实时任务 |
| 内核高精度定时器(hrtimer) | hrtimer_init / hrtimer_start | 理论 纳秒级 | 需内核启用高精度定时器(highres) |
| 用户态 posix 定时器 | timer_create / timer_settime | 接口支持 纳秒 粒度 | 实际精度受内核与负载影响 |
| 用户态 timerfd | timerfd_create / timerfd_settime | 接口支持 纳秒 粒度 | 可与 epoll/poll 集成,便于事件循环 |
| systemd timer | onbootsec / onunitactivesec + accuracysec | 配置可达 1 ms,默认约 1 分钟 | 适合系统级周期任务,注意能耗与唤醒开销 |
如何判断与提升精度