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
来源表明它是一个编译时常量并且取决于您的特定系统。