Linus對支持鏈接時優化(LTO)的Linux內核并不看好
之前,用于啟用Linux 3.15內核的實驗LTO支持的補丁已經發布了一個PR(上拉請求),但Linus Torvalds 還沒有決定他是否會接受這段代碼到上游的Linux內核…… Linus 仍然沒看到鏈接時優化內核(LTO:ink-time optimizations)的好處,也不確認這段代碼是否已準備好放入主干中。
LTO的Linux kernel有一個好處是,可以減小Linux內核鏡像的大小,而且更快和更高效。在GCC中配合使用LTO會使整個程序在鏈接階段就實現整個的二進制優化。先前的結果表明,一個LTO的內核可以減少超過10%的尺寸大小,并且內核優化后比常規的內核快百分之幾,但是它目前的問題是需要占用更多的系統內存以及更長的編譯時間。
這個推送給Linux 3.15 LTO Kconfig的PR,希望在下一個內核版本中的增加一個實驗性選項。作為回復,Linus Torvalds寫道:
到目前為止,我有幾個不進行合并的原因(“實驗性太強,我們甚至不希望鼓勵人們去測試它”,以及“它不是完全可靠,并且使得編譯時間變的很長"). 而且至今沒有人真正和我討論過,為什么我應該合并它(譯注:Linus的意思是說其實沒有人真正知道,并且討論合并LTO的理由)。
如上,我是這樣覺得的,這讓我多少動力去合并它。
所以我認為我應該讓“子彈飛一會兒”,直到人們開始討論它帶來的好處。最終的結果是到底可以小到什么程度呢?快到什么程度呢?能干的多漂亮呢?是否會有新的更酷的東西出現?那些很酷的事情真地快要來到了嗎?真的希望這個可以被合并,甚至在還沒完全準備好的情況下?
所以,請說服我。Andi?
Linus
作為對Linus的關注的回應,LTO內核變得尺寸更小了,通過把未使用代碼的自動淘汰,它們減少了對許多低級Kconfig符號的需要、減少了所需的配置選項的數目。來自Tim bird的幾個報告顯示,在ARM上帶有LTO配置的內核可以減少11%的尺寸,而其他用戶甚至最多減少了30%。也有報告稱系統調用減少了約4%。基準測試的結果根據測試負載有所差異,但一般都有幾個百分點的提升。
如今,Linux內核是否支持鏈接時優化仍然在討論,Linus 是否愿意合并此實驗性功能到Linux 3.15還不明朗。
via: http://www.phoronix.com/scan.php?page=news_item&px=MTY1OTg
譯者:owen-carter 校對:wxy