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。
參考
答案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
來源表明它是一個編譯時常數並且取決於您的特定係統。