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