
我找不到任何關於rt
和lowlatency
Linux 核心的好資訊。
我想知道為什麼有人會不是想要使用低延遲核心。
另外,如果有人能說出具體差異是什麼,那就太好了。
答案1
不同的配置,「通用」、「低延遲」(如 Ubuntu 中的配置)和 RT(「即時」),都是為了平衡吞吐量與延遲。通用核心更傾向於吞吐量而不是延遲,其他核心則更傾向於延遲而不是吞吐量。因此,對吞吐量的需求大於對低延遲的需求的用戶不會選擇低延遲核心。
與通用配置相比,低延遲核心更改了以下設定:
- 預設情況下,IRQ 是執行緒化的,這意味著更多的 IRQ(仍然沒有全部IRQ)可以被搶佔,它們也可以被優先化並控制它們的CPU關聯性;
- 搶佔在整個核心中啟用(
CONFIG_PREEMPT
代替CONFIG_PREEMPT_VOLUNTARY
); - 這延遲偵錯啟用工具,以便使用者可以確定哪些核心操作正在阻止進度;
- 定時器頻率設定為1000赫茲代替250赫茲。
RT 內核添加一些補丁主線內核,以及一些配置調整。大多數這些修補程式的目的是透過刪除或分割鎖來允許更多的搶佔機會,並減少內核處理不間斷任務所花費的時間(特別是透過改進日誌記錄機制並減少使用它們) 。這一切的目標是讓內核按時完成任務,IE確保當需要處理某件事時,它不會忙於做其他事情;這與高吞吐量或低延遲不同,但解決延遲問題會有所幫助。
大多數發行版中預設配置的通用核心被設計為「明智」的妥協:它們試圖確保沒有單一任務可以長時間獨佔系統,並且任務可以合理地頻繁切換,但不會影響吞吐量——因為核心花在考慮是否切換任務(核心內部還是外部)或處理中斷的時間越多,整個系統可以「工作」的時間就越少。這種妥協對於延遲敏感的工作負載(例如即時音訊或視訊處理)來說還不夠好:對於這些工作負載,低延遲核心以犧牲一些吞吐量為代價提供更低的延遲。為了滿足即時要求,即時核心會刪除盡可能多的低延遲阻塞程序,但代價是增加吞吐量。
Linux 的主流發行版大多安裝在伺服器上,傳統上延遲並沒有被認為那麼重要(儘管如果您進行百分位效能分析,並關心最高百分位效能,您可能會不同意),因此預設核心相當保守的。桌面用戶可能應該使用低延遲內核,正如內核自己的文檔所建議的那樣。事實上,使用的低延遲內核越多,有關其相關性的回饋就越多,這有助於對預設核心配置進行普遍適用的改進; RT 核心也是如此(許多 RT 補丁在某些時候是針對主流核心的)。
本次演講主題為提供了相當多的背景。
從 Linux 核心 5.12 版本開始,“動態搶佔”可以啟用;這允許在核心命令列上使用以下命令覆蓋預設搶佔模型preempt=
範圍。目前支援none
(伺服器)、voluntary
(桌面)和full
(低延遲桌面)。
答案2
史蒂芬·基特(Stephen Kitt)解釋了配置和平衡性以及所有技術參數。我想提供一個小的直觀區別:
您正在狩獵,乘坐吉普車穿越地形。你的獵物正在逃跑。當獵物位於十字準線中時,你扣動扳機,步槍射擊 - 計算很簡單 - 獵物在十字準線中 = 擊中,獵物不在十字準線中 = 未擊中 - 你迫切需要低延遲- 然後你恢復,重新裝彈步槍,尋找另一個獵物 - 不需要額外的速度,不需要規律性。潛伏是全部。
您正在轉換該 Safari 中的影片。時間很長,需要幾個小時。您並不關心何時處理特定幀以及某些幀是否比其他幀花費更多時間來處理。您需要盡快完成該過程 - 更好吞吐量意味著更少的時間,其他都不重要
您正在收到電報 - 只是短、長和空格 - 莫爾斯電碼很容易破譯,您不需要知道每個脈衝的確切時間開始或結束,但您需要一個保證, 你所做的不要錯過其中任何一個 - 你需要即時的(它可能很慢,電報沒那麼快,但它必須是有規律的
在這三個示例中,您顯然只選擇了其中之一潛伏,吞吐量或者規律性,犧牲其他兩個 - 原因顯而易見。如果您無法同時擁有所有三項功能,那麼只有其中一項您真正需要低延遲。
答案3
通俗地說:
- 如果您不定期讓 PC 完成工作,那麼低延遲核心非常適合您。
- 如果您經常讓 PC 執行 CPU 密集型任務,那麼通用核心就適合您。
- 如果您只是隨意使用電腦瀏覽、播放影片、音樂…那麼低延遲適合您。
- 如果您正在玩遊戲,那麼低延遲和通用之間的理論上的區別是低延遲將在除一種情況之外的所有情況下獲勝;等級加載,但這更取決於您是否有 SSD,以及 SSD 的質量,因為您的基本 SSD 以 1 倍速度執行,而最高 PCI-Express SSD 則以 6 倍速度執行。傳統硬碟的速度為 0.1 倍。因此,SSD 的速度比傳統硬碟快 60 倍。
基本上,通用核心可以在最短的時間內完成最多的工作,而低延遲核心使 PC 的響應速度最快;假設核心或系統中沒有遇到錯誤。
對大多數人來說,低延遲核心最有意義。但是,如果您總是為您的 PC 分配大量工作要做,那麼通用核心適合您。
換句話說,如果 90% 的時間所有核心的 CPU 負載 < 60%,那麼低延遲核心就適合您。另一方面,如果您的所有核心的 cpu 負載在大部分時間都大於 80%、90% 或更多,那麼通用核心適合您。
測驗:哪個核心在基準測試中得分較高?只要忽略延遲作為基準參數,通用總是會贏得比賽,但低延遲就像你身邊有一隻準備委託的章魚。
答案4
因為這是一個權衡。切換進程或進入/退出中斷需要時間。例如,以 1000Hz(而不是 250Hz)運行調度程序意味著您將有一個計時器中斷,並且可能會四倍頻繁地切換進程。這可以讓進程反應更快,因為它可以更頻繁地執行。然而,作為人類,您可能不會注意到任何差異(250Hz 意味著每 4 毫秒一次,這已經比任何人類反應時間快得多)。
處理能力或 I/O 吞吐量的總量是有限的,更頻繁地呼叫調度程序僅意味著您將浪費其中的一部分。