9.5. 读取硬件时钟源的成本比较
您可以比较系统中时钟的速度。从 TSC 读取涉及从处理器读取寄存器。从 HPET 时钟读取涉及读取内存区域。从 TSC 读取速度较快,当每秒时间戳数千条消息时,它提供显著的性能优势。
先决条件
- 系统上的 root 权限。
-
clock_timing
程序必须位于系统中。如需更多信息,请参阅 clock_timing 程序。
流程
更改到保存了
clock_timing
程序的目录。# cd clock_test
查看系统中可用的时钟源。
# cat /sys/devices/system/clocksource/clocksource0/available_clocksource tsc hpet acpi_pm
在这个示例中,系统中的可用时钟源为
TSC
、SpeT、Spe
T 和ACPI_PM
。查看当前使用的时钟源。
# cat /sys/devices/system/clocksource/clocksource0/current_clocksource tsc
在这个示例中,系统中的当前时钟源是
TSC
。与 ./
clock_timing
程序一起运行时间
实用程序。输出中会显示读取时钟源 1,000万次所需的时间。# time ./clock_timing real 0m0.601s user 0m0.592s sys 0m0.002s
以下示例显示了以下参数:
-
实时
- 从程序调用开始的总时间,直到进程结束。real
包括用户和内核时间,通常大于后面的两个的总和。如果这个过程是由具有更高优先级的应用程序中断,或者由硬件中断(IRQ 等系统事件等系统事件中断,这的时间也被等待计算在实际
下。 -
user
- 进程在用户空间内花费的时间执行不需要内核干预的任务。 -
sys
- 内核在执行用户进程所需的任务时使用的时间。这些任务包括打开文件、读取和写入文件或 I/O 端口、内存分配、线程创建和网络相关活动。
-
将您要测试的下一个时钟源的名称写入
/sys/devices/system/clocksource/clocksource0/current_clocksource
文件。# echo hpet > /sys/devices/system/clocksource/clocksource0/current_clocksource
在这个示例中,当前的时钟源被改为
HPET
。- 对于所有可用时钟源,重复步骤 4 和 5。
- 比较第 4 步获得所有可用时钟源的结果。
其他资源
-
time(1)
man page