Linux 内核中 jiffie 的分辨率是多少

Linux 内核中 jiffie 的分辨率是多少

Linux内核中jiffie的分辨率是多少?

根据当前的定时器源(cat /sys/devices/system/clocksource/clocksource0/current_clocksource),Linux 使用 TSC 并且具有纳秒分辨率

根据http://lxr.free-electrons.com/source/include/linux/jiffies.hjiffie不小于1us,但可以更大。

有没有办法确定其当前分辨率。

答案1

如果你看一下手册页man 7 time

HZ 的值因内核版本和硬件平台而异。在 i386 上,情况如下:在 2.4.x 及之前的内核上,HZ 为 100,给出的 jiffy 值为 0.01 秒;从 2.6.0 开始,HZ 提高到 1000,即 0.001 秒。从内核 2.6.13 开始,HZ 值是一个内核配置参数,可以是 100、250(默认)或 1000,分别产生 0.01、0.004 或 0.001 秒的 jiffies 值。从内核 2.6.20 开始,可以使用更多频率:300,该数字可均匀划分常见视频帧速率(PAL,25 HZ;NTSC,30 HZ)。

times(2) 系统调用是一个特例。它以内核常量 USER_HZ 定义的粒度报告时间。用户空间应用程序可以
使用 sysconf(_SC_CLK_TCK)确定该常量的值。

您可以查询CLK_TCK常数:

$ getconf CLK_TCK
100

这告诉你HZ的值,即100。这个值是一秒内的jiffies数。

参考

答案2

根据这些消息来源,该决议吉菲斯1/HZ(无论HZ发生什么值):

它在与内核相关的头文件之一中定义,例如,

/usr/include/asm-generic/param.h

其中包括来自

/usr/include/linux/param.h

最终来自<sys/param.h>,它可能位于特定于体系结构的目录中,例如,

/usr/include/x86_64-linux-gnu/sys/param.h

来源表明它是一个编译时常量并且取决于您的特定系统。

相关内容