第 30 章 应用程序时间戳


执行频繁时间戳的应用程序会受到读取时钟的 CPU 成本的影响。用于读取时钟的高成本和时间可能会对应用程序的性能造成负面影响。

您可以通过选择一个具有读机制的硬件时钟来降低读取时钟的成本,比默认时钟更快。

在 RHEL for Real Time 中,可以使用带有 clock_gettime () 函数的 POSIX 时钟来获取更多性能,以生成可能最低 CPU 成本的时钟读取。

这些好处对于使用带有高读取成本的硬件时钟的系统更为明显。

30.1. POSIX 时钟

POSIX 是实施和代表时间源的标准。您可以为应用程序分配 POSIX 时钟,而不影响系统中的其他应用程序。这与内核选择并在系统中实施的硬件时钟相反。

用于读取给定 POSIX 时钟的函数是 clock_gettime (),它在 < time.h > 中定义。内核与 clock_gettime () 对应的是系统调用。当用户进程调用 clock_gettime () 时:

  1. 对应的 C 库(glibc)调用 sys_clock_gettime () 系统调用。
  2. sys_clock_gettime () 执行请求的操作。
  3. sys_clock_gettime () 将结果返回给用户程序。

但是,从用户应用程序切换到内核的上下文具有 CPU 成本。虽然这个成本非常低,但如果操作重复了数千次,但累积的成本可能会对应用程序的整体性能产生影响。为了避免上下文切换到内核,从而更快地读取时钟,支持 CLOCK_MONOTONIC_COARSECLOCK_REALTIME_COARSE POSIX 时钟,格式为虚拟动态共享对象(VDSO)库函数。

使用其中一个 _COARSE 时钟变体执行 clock_gettime () 的时间读取不需要内核干预,且完全在用户空间中执行。这会显著提高性能。_COARSE 时钟读取的时间具有毫秒(ms)解析,这意味着不会记录小于 1 ms 的时间间隔。POSIX 时钟的 _COARSE 变体适合可容纳 millisecond 时钟分辨率的任何应用程序。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部