Linux - profiling 1 : ktime_get()
收錄於關於 Ameba 的 100 篇
Ref: Timers and Time Management in the Linux Kernel
Ref: Linux Document - Timekeeping
time(): 從 1970 年以來的秒數
xtime :
- 即是 wall time, 起始時間 1970/1/1 24時開始
- clocksource
- do_gettimeofday(): 獲取當前時間, 返回 timeval 結構, 精準度到 us
timeval 結構
- getnstimeofday() : 獲取當前時間, 返回 timespec 結構, 精準度到 ns
timespec 結構
- current_kernel_time(): 返回 kernel 最後一次更新 xtime 的時間, 不包括最後一次 clocksource
計數
--
monotonic time :
- 從系統開機到現在的累計時間
- 不計算休眠時間, 但會受 NTP 調整影響
- ktime_get_ts() : 返回 timespec 結構
- ktime_get() : 返回 ktime 結構
ktime_t : s64
--
raw monotonic
- 和 monotonic time 類似, 但不受 NTP 調整影響
範例:
完整程式: Github
執行結果:
module init start
module init end
ktime test for profiling
2^10 = 0, spend time: 93508, iterations: 10000
但這每次執行誤差還蠻大的. 後續.
Ref: Timers and Time Management in the Linux Kernel
Ref: Linux Document - Timekeeping
time(): 從 1970 年以來的秒數
xtime :
- 即是 wall time, 起始時間 1970/1/1 24時開始
- clocksource
- do_gettimeofday(): 獲取當前時間, 返回 timeval 結構, 精準度到 us
timeval 結構
struct timeval {
- getnstimeofday() : 獲取當前時間, 返回 timespec 結構, 精準度到 ns
timespec 結構
struct timespec {
- current_kernel_time(): 返回 kernel 最後一次更新 xtime 的時間, 不包括最後一次 clocksource
計數
--
monotonic time :
- 從系統開機到現在的累計時間
- 不計算休眠時間, 但會受 NTP 調整影響
- ktime_get_ts() : 返回 timespec 結構
- ktime_get() : 返回 ktime 結構
ktime_t : s64
--
raw monotonic
- 和 monotonic time 類似, 但不受 NTP 調整影響
時間種類 | 精度(統計單位) | 訪問速度 | 累計休眠時間 | 受NTP 調整影響 | 使用函式 |
xtime | 高 | 快 | Yes | Yes | do_gettimeofday(), ktime_get_real_ts(), ktime_get_real() |
monotonic | 高 | 快 | No | Yes | ktime_get(), ktime_get_ts64() |
raw monotonic | 高 | 快 | No | No | ktime_get_raw(), getrawmonotonic64() |
boot time | 高 | 快 | Yes | Yes | ktime_get_boottime() |
範例:
完整程式: Github
執行結果:
module init start
module init end
ktime test for profiling
2^10 = 0, spend time: 93508, iterations: 10000
但這每次執行誤差還蠻大的. 後續.
留言
張貼留言