關於Linux的Jiffies/Tick/HZ

Linux核心幾個重要跟時間有關的幾個名詞: HZtick、jiffieslinux

1.linux HZspa

Linux核心每隔固定週期會發出timer interrupt (IRQ 0)HZ是用來定義每一秒有幾回timer interrupts。舉例來源碼

說,HZ1000,表明每秒有1000timer interrupts,比較常見的設置是HZ=100。grep

能夠經過 cat /proc/interrupt 查看timer中斷次數,並於一秒後再次觀察其值,經過先後差值能夠估算HZ的值。im

要檢查內核源碼中HZ的值是什麼,能夠執行命令:文件

#cat kernel/.config | grep 'CONFIG_HZ='時間

還能夠直接更改文件param.hco

2.Tick內核

TickHZ的倒數,意即timer interrupt每發生一次中斷的時間。如HZ250時,tick4毫秒(millisecond) time

3.Jiffies

JiffiesLinux核心變數(32位元變數,unsigned long),它被用來紀錄系統自開機以來,已通過多少的tick。每發生一次timer interruptJiffies變數會被加一。ARM體系結構中,jiffies被初始化爲jiffies_64,jiffies_64是一個u64位元變數,在kernel/timer.c中定義:

u64 jiffies_64 __cacheline_aligned_in_smp = INITIAL_JIFFIES;

jiffies系統開機時,並不是初始化成零,而是被設爲INITAL_JIFFIES(在文件include/linux/jiffies.h中定義爲-300*HZ),即表明系統於開機五分鐘後,jiffies便會溢位。那溢位怎麼辦?事實上,Linux核心定義幾個macro(timer_aftertime_after_eqtime_beforetime_before_eq),即使是溢位,也能藉由這幾個macro正確地取得jiffies的內容。

相關文章
相關標籤/搜索