長期 Linux 內核英特爾的工程師 Peter Zijlstra 發布了他最新的“呼叫深度跟踪”補丁,作為 Retbleed 的緩解措施,旨在降低系統性能的成本,而不是當前的緩解方法。通過這個最新的補丁系列,他表示他希望盡快讓這個代碼成為主流。
針對 Retbleed 緩解的調用深度跟踪旨在避免當前影響受影響的英特爾 CPU 的 IBRS“性能恐怖秀”。開發人員此前承認,鑑於 Retbleed,間接分支受限投機 (IBRS) 的使用會帶來“瘋狂的開銷”。至於調用深度跟踪方法:
調用深度跟踪旨在通過將推測陷阱調用填充到 RSB 中來打破這種推測路徑,這些調用永遠不會得到相應的返回執行。這會停止預測路徑,直到它重新轉向,
假設在第 12 次返回時填充足以在它遇到下溢和回退到其他預測器之前打破推測。測試證實它有效。 Johannes,其中一名重新出血的研究人員。試圖攻擊這種方法並確認它可以將信噪比降低到水晶球水平。
顯然沒有科學證據表明這可以承受未來的研究進展,但我們現在所能做的就是推測。
呼叫深度跟踪已更新9月初和周四標誌著補丁的第三次迭代。這是一個好消息,尤其是在 Skylake 時代服務器上當前基於 IBRS 的 Retbleed 緩解措施對性能造成嚴重影響的情況下。
隨著周四發布的 v3 補丁系列,彼得指出:
自 v2 以來的變化很小;我根據 Linus 的要求(補丁 #8)重新設計了對齊的東西,並收集了一些標籤。
除非有很大的反對意見,否則我希望盡快將其合併,這樣我們就可以繼續做其他事情了。
所以如果一切順利,我們可能會看到它合併為Linux 6.1 週期將在 10 月初到來。由於它是一個安全/緩解項目,它可能仍然可以嘗試在當前的 6.0 週期中著陸,但鑑於它是一組 59 個補丁並且已經存在現有的 Retbleed 緩解,大概 Linus Torvalds 想要等到 v6.1 合併窗口即將打開。
對於受 Retbleed 影響且當前使用 IBRS 的處理器,呼叫深度跟踪“東西”(請參閱下面的選項名稱)可在保持系統安全的同時大大減少開銷:
使用這些補丁,在受影響的處理器上,默認情況下不使用呼叫深度跟踪緩解,但至少目前僅使用“retbleed=stuff”內核選項激活。