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