Acpi

時鐘源的變化有什麼影響?

  • November 4, 2014

的輸出cat /sys/devices/system/clocksource/clocksource0/available_clocksource列出了可用的硬體時鐘。

我改變了時鐘,沒有任何明顯的差異。 sudo /bin/sh -c 'echo acpi_pm > current_clocksource'

更改硬體時鐘的實際意義是什麼?有沒有辦法檢查可用時鐘的解析度(或其他一些可見的變化)?

嗯,首先,核心會自動選擇最好的,如果可用的話通常是 TSC,因為它由 cpu 保存並且非常快(RDTSC 和讀取 EDX:EAX)。

但情況並非總是如此,在 SMP 系統主要由多個離散 cpu 建構的早期,cpu 盡可能“平等”是非常重要的(模型、速度和步進的完美匹配) ,但即便如此,有時也會出現一個明顯快於另一個的情況,因此其間的 TSC 計數器“不穩定”,這就是允許更改它(或使用“notsc”核心參數禁用它)的原因。即使有這些限制,TSC 仍然是最好的來源,但是核心必須非常小心地只依賴多核系統中的一個 cpu 或積極嘗試保持它們同步,並且還要考慮諸如掛起/恢復之類的事情(它重置計數器)和 cpu 頻率縮放(在某些 cpu 型號中影響 TSC)。

在 SMP 的早期,有些人甚至建構了具有不同速度的 cpu 的系統(類似於 arm 中的新 BIG.little 架構),這在計時領域造成了很大的問題。

至於檢查解析度的方法,你有clock_getres(),你有一個例子here

還有一些額外的連結:官方核心文件(此目錄中還有其他有趣的文件)和chromebook 中的 TSC 重新同步以及不同時鐘源的一些基準。

簡而言之,更改時鐘源時不應該有任何使用者空間可見的變化,只有較慢的gettimeofday()

引用自:https://unix.stackexchange.com/questions/164512