gpt4 book ai didi

linux - "perf sched record"使用什么时间范围?

转载 作者:行者123 更新时间:2023-12-04 07:51:10 26 4
gpt4 key购买 nike

我一直在尝试分析 perf sched record 的输出但我不明白我用什么引用系来理解“20624.983302 秒”。现在肯定不是 Unix 时间,那是什么?我将如何将其转换为 Unix 时间?

*A0                               20624.983302 secs A0 => migration/0:12
*. 20624.983311 secs . => swapper:0
*B0 20624.983318 secs B0 => IPC I/O Child:33924
*. 20624.983355 secs
*C0 20624.983485 secs C0 => WRScene~lder#15:39974
*. 20624.983581 secs
*D0 20624.983972 secs D0 => IPC I/O Parent:33780

最佳答案

这些时间戳是使用内核调度程序时钟捕获的,自启动以来以纳秒计。确切的细节取决于为构建特定 Linux 发行版和目标架构而选择的编译时参数。
通常,样本的时间戳大约在记录时捕获。只要内核保持事件状态,同一内核上的时间戳就可以保证单调增加。您显示的样本都是在同一个核心上捕获的,并且核心从第一个样本到最后一个样本都保持事件状态。因此,在这种情况下,无论平台和分布如何,时间戳都保证是单调的。在多个内核上进行分析时,无法保证所有内核上的时钟同步。
全部 perf工具使用相同的时钟来捕获时间戳,但它们在打印时间戳的方式上可能有所不同,并且可能会发生两个工具从同一示例文件中以不同的方式打印时间戳。这取决于内核版本。
调用 perf_event_open() 时可以指定时钟源通过设置 use_clockid到 1 并设置 clockidlinux/time.h 中定义的时钟源之一,例如 CLOCK_MONOTONIC . perf record提供 -k--clockid选项指定用于捕获时间戳的时钟源。
x86 上的现代发行版通常使用 TSC 作为调度程序时钟的来源(检查 /sys/devices/system/clocksource/clocksource0/current_clocksource)。因此,如果您使用的是 x86 处理器,则很可能使用配置内核的 TSC 来捕获 TSC 周期的当前值,该值在内部被转换为纳秒。打印时间戳时,它可能会转换为不同的单位。在这种情况下,时间戳以“seconds.microseconds”格式打印。可以在以下位置找到 TSC 在 Intel 处理器上的行为摘要:Can constant non-invariant tsc change frequency across cpu states? .

关于linux - "perf sched record"使用什么时间范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66974440/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com