17.4. 读取硬件时钟源的成本比较


您可以比较系统中的时钟速度。从 TSC 读取涉及从处理器读取寄存器。从 HPET 时钟读取涉及读取内存区域。从 TSC 读取速度快,当每秒时间戳上数以千计的信息时,这提供了显著的性能优势。

先决条件

  • 您在系统上具有 root 权限。
  • clock_timing 程序必须在系统上。如需更多信息,请参阅 clock_timing 程序

流程

  1. 进入保存 clock_timing 程序的目录。

    # cd clock_test
    Copy to Clipboard Toggle word wrap
  2. 查看系统中的可用时钟源。

    # cat /sys/devices/system/clocksource/clocksource0/available_clocksource
    tsc hpet acpi_pm
    Copy to Clipboard Toggle word wrap

    在本例中,系统中的可用时钟源为 TSCHPETACPI_PM

  3. 查看当前使用的时钟源。

    # cat /sys/devices/system/clocksource/clocksource0/current_clocksource
    tsc
    Copy to Clipboard Toggle word wrap

    在本例中,系统中的当前时钟源是 TSC

  4. 运行 time 工具以及 ./clock_timing 程序。输出显示了读取时钟源 1,000万次所需的持续时间。

    # time ./clock_timing
    
    	real	0m0.601s
    	user	0m0.592s
    	sys	0m0.002s
    Copy to Clipboard Toggle word wrap

    示例显示了以下参数:

    • 实时 - 从程序调用开始的总时间,直到进程结束。real 包括用户和内核时间,并且通常大于后者的总和。如果此进程被优先级更高的应用中断,或者被系统事件(如硬件中断(IRQ))中断,那么此等待时间也被 实时计算
    • 用户 - 执行用户空间中进程执行不需要内核干预的任务所花费的时间。
    • sys - 在执行用户进程所需任务的同时,内核花费的时间。这些任务包括打开文件、读取和写入文件或 I/O 端口、内存分配、线程创建和网络相关活动。
  5. 将您要测试的下一个时钟源的名称写入 /sys/devices/system/clocksource/clocksource0/current_clocksource 文件。

    # echo hpet > /sys/devices/system/clocksource/clocksource0/current_clocksource
    Copy to Clipboard Toggle word wrap

    在本例中,当前的时钟源被改为 HPET

  6. 对所有可用时钟源重复步骤 4 和 5。
  7. 比较所有可用时钟源的第 4 步结果。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部