To by nemělo být příliš překvapivé vzhledem k některým z předchozích komentářů Linuse Torvaldse o optimalizacích kompilátoru a dlouhodobých špatných zkušenostech s GCC, ale Linus Torvalds nemá zájem vidět laditelnou možnost Kconfig. -O3 Úroveň optimalizace kompilátoru pro sestavení linuxového jádra bez vnitřního zdůvodnění.
Jak jsem o tom psal na začátku tohoto týdne, bylo Doporučená oprava, která umožní volbě Kconfig používat úroveň optimalizace -O3 kompilátoru Místo -O2 při kompilaci linuxového jádra. Taková možnost je již v jádře, ale je vystavena pouze portu CPU ARC. Navrhovanými opravami bylo zpřístupnit tuto možnost „CC_OPTIMIZE_FOR_PERFORMANCE_O3“ všem architekturám, i když s jasně definovaným příznakem „beta“. Někteří mají zájem o sestavení jádra -O3 pro lepší výkon a/nebo pro snadné vysledování problémů s jádrem nebo kódem kompilátoru při přechodu na robustnější úroveň optimalizace.
Ne všichni upstream vývojáři byli s touto myšlenkou přátelští, protože úroveň optimalizace -O3 již lze nastavit pomocí KCFLAGS Optimalizace proměnných prostředí a kompilátoru mohou způsobit problémy – zvláště jemné rozdíly s výkonnými optimalizacemi kompilátoru, které je někdy těžké vystopovat.
Linus Torvalds dnes odpoledne visel Účinně se staví proti existenci takové možnosti Kconfig. Musel by se opravdu spokojit s některými tvrdými faktickými údaji, aby ukázal své výhody, ale i tehdy, jak bylo zmíněno v minulosti, byly historicky známé problémy s kompilátorem s určitými optimalizacemi. Zájemci mohou vždy použít „KCFLAGS = -O3“ k dosažení stejného chování, ale znovu cituje historii problémů s optimalizací kompilátoru v GCC.
Upřímně, odeberme -O3 úplně.
Povolit to a pak nevytvářet výsledek testu je jen *nejhorší* možný případ. Tohle je prostě strašné.
Argument, že „ale ARC to používá“ není argument. Vždy to byl špatný argument a ARC potřebuje opravit vše, co mu dělá problém (pravděpodobně je to již opraveno aktualizací kompilátoru).
A v žádném případě to nemohu přijmout jako „nechat lidi, aby to zkusili“, když
– Jak již bylo zmíněno, stačí použít KCFLAGS = -O3, pokud chcete
-O3 má *dlouhé* datum pro vygenerování symbolu horší než -O2
Takže *nebral bych* tyto druhy skvrn bez nějakého velmi vážného vysvětlení, proč je -O3 najednou zase přijatelné.
Tato vysvětlení by byla lepší než „nechat lidi, ať to zkusí“. Měly by mít podrobné údaje o skutečném výkonu pro skutečnou zátěž, ne nějakou falešnou logiku „větší, tím lepší“.
Linus
„Obhájce Twitteru. Zombie fanatik. Hudební fanoušek. Milovník cestování. Webový expert. Pivní guru. Kávový fanatik.“