Dies sollte nicht Es ist nicht allzu überraschend, wenn man einige von Linus Torvalds früheren Kommentaren über Compiler-Optimierungen und schlechte Erfahrungen mit GCC betrachtet, aber Linus Torvalds ist nicht daran interessiert, eine einstellbare Kconfig-Option für die Verwendung der-O3-Compiler-Optimierungsebene zum Erstellen des Linux-Kernels ohne wesentliches zu sehen Rechtfertigung.
Wie ich Anfang dieser Woche geschrieben habe, gab es einen vorgeschlagenen Patch, um eine Kconfig-Option zuzulassen, um beim Kompilieren des Linux-Kernels die-O3-Optimierungsebene des Compilers anstelle von-O2 zu verwenden. Eine solche Option existiert tatsächlich bereits im Kernel, wird aber nur für den ARC-CPU-Port verfügbar gemacht. Die vorgeschlagenen Patches sollten diese „CC_OPTIMIZE_FOR_PERFORMANCE_O3“-Option für alle Architekturen verfügbar machen, allerdings mit einem deutlich gekennzeichneten „experimentell“-Flag. Bei einigen besteht Interesse an-O3-Kernel-Builds für eine bessere Leistung und/oder zum einfachen Aufspüren von Linux-Kernel-Code oder Compiler-Problemen beim Umschalten auf die aggressivere Optimierungsstufe.
Nicht alle Upstream-Entwickler waren mit dieser Idee einverstanden, da die-O3-Optimierungsstufe bereits mit der KCFLAGS-Umgebungsvariable eingestellt werden kann und die Möglichkeit besteht, dass die Compiler-Optimierungen Probleme mit sich bringen – insbesondere subtile Unterschiede aggressive Compiler-Optimierungen, die manchmal schwer aufzuspüren sind.
Linus Torvalds hat heute Nachmittag kommentiert, dass er es ist effektiv dagegen, eine solche Kconfig-Option zu haben. Er müsste wirklich von einigen harten, realen Daten überzeugt werden, um seine Vorteile zu zeigen, aber selbst dann, wie er in der Vergangenheit zitiert hat, gab es in der Vergangenheit bekannte Compiler-Probleme mit einigen Optimierungen. Interessierte können immer”KCFLAGS=-O3″verwenden, um das gleiche Verhalten zu erreichen, aber er zitiert erneut die Geschichte der GCC-Compiler-Optimierungsprobleme.
Ehrlich gesagt, entfernen wir einfach-O3 vollständig.
Es zu aktivieren und dann nicht einmal das Ergebnis zu testen, ist so ziemlich der *schlimmste* mögliche Fall. Das ist einfach schrecklich.
Das Argument”aber ARC verwendet es”ist kein Argument. Es war immer ein schlechtes Argument, und ARC muss einfach das beheben, was es zu einem Problem gemacht hat (wahrscheinlich bereits mit einem Compiler-Upgrade behoben).
Und auf keinen Fall würde ich das jemals als”Lassen Sie es die Leute ausprobieren”akzeptieren, wenn
-wie erwähnt, verwenden Sie einfach KCFLAGS=-O3, wenn Sie möchten
–O3 hat eine *lange* Historie, schlechteren Code als-O2 zu generieren
also werde ich diese Art von Patches *nicht* nehmen ohne einige ernsthafte Erklärungen dafür, warum-O3 es plötzlich hat wieder akzeptabel werden.
Diese Erklärungen sollten besser mehr sein als”die Leute es versuchen lassen”. Sie sollten detaillierte tatsächliche Leistungszahlen für eine echte Belastung haben, nicht irgendeine erfundene „Größer ist besser“-Logik.
Linus