17.4. 读取硬件时钟源的成本比较
您可以比较系统中的时钟速度。从 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、HPET和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。运行
time工具以及 ./clock_timing程序。输出显示了读取时钟源 1,000万次所需的持续时间。time ./clock_timing real 0m0.601s user 0m0.592s sys 0m0.002s
# time ./clock_timing real 0m0.601s user 0m0.592s sys 0m0.002sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 示例显示了以下参数:
-
实时- 从程序调用开始的总时间,直到进程结束。real包括用户和内核时间,并且通常大于后者的总和。如果此进程被优先级更高的应用中断,或者被系统事件(如硬件中断(IRQ))中断,那么此等待时间也被实时计算。 -
用户- 执行用户空间中进程执行不需要内核干预的任务所花费的时间。 -
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 步结果。