LTO nedir?
LTO kısaltması Bağlantı Süresi Optimizasyonu. Derleyicinin, kaynak dosyaları bağlama anında optimizasyonları geciktirdiği, tek bir yürütülebilir dosyayı oluşturan tüm dosyaları tek bir dosya olarak görmenize ve bu şekilde optimizasyonları daha etkili bir şekilde uygulamanıza olanak sağlayan bir işlemdir.
Yararlarını ve dezavantajlarını görmek için LTO: Karşılaştırmaları Phoronix
Akılda tutulması gereken şeyler
- Kararsızdır, bazı paketlerde sorunlara neden olabilir.
- Bazı paketler derlenemeyecek (daha sonra bunun nasıl düzeltileceği hakkında daha fazla bilgi).
- Bağlayıcı kullanılması tavsiye edilir Altın.
- Amerika Birleşik Devletleri daima son versiyonu GCC.
Altın, kullanımı daha çekici hale getiren gelişmiş özellikleri desteklemenin yanı sıra LTOdaha hızlı GNU kimliğiözellikle büyük programlar söz konusu olduğunda, 5 kat daha hızlı. Kullanmak için şunu çalıştırın:
binutils-config --linker ld.gold
LTO kullanma: önerilen yöntem
Aktive etmek yerine LTO küresel olarak (sorunlara neden olabilir) istediğimiz paketlerde etkinleştirmek daha iyidir. Bu sayede sadece faydalanmak istediğiniz paketler LTO bu optimizasyon ile derlenirler veya bundan faydalanmayan programlarda daha yavaş derleme sürelerini önlerler. Bu şu şekilde başarılabilir:
/ Etc / portage / env dizininde dosyayı oluşturuyoruz LTO.conf ve aşağıdaki satırları ekliyoruz:
CFLAGS="${CFLAGS} -flto=5" #pon en -flto los hilos de tu CPU + 1
CXXFLAGS="${CXXFLAGS} -flto=5" #igual que arriba
LDFLAGS="${LDFLAGS} -fuse-linker-plugin" #solo si usas Gold, es mejor.
Yani, kullanmak LTO bir pakette, dosyaya yalnızca adını (firefox yerine tam adı, www-client / firefox) koymamız gerekir paket.env, Birlikte LTO.conf sağınızda. Aşağıda bir örnek verilmiştir:
app-emulation/wine LTO.conf
www-client/firefox LTO.conf
sys-devel/gcc LTO.conf
kde-base/kdelibs LTO.conf
Şimdi sadece kullanmalarını istediğimiz paketleri derlemeliyiz LTO.
LTO'yu global olarak kullanma (önerilmez)
Uygulamak yerine LTO paket bazında, bunu global olarak da uygulayabiliriz (ben de bunu kullanıyorum). Uygulamak için izlenecek adımlar şunlardır:
/Etc/portage/make.conf dosyasını düzenleriz ve aşağıdakileri ekleriz (bunlar dosyanın aynı satırlarıdır LTO.conf):
CFLAGS="${CFLAGS} -flto=5" #pon en -flto los hilos de tu CPU + 1
CXXFLAGS="${CXXFLAGS} -flto=5" #igual que arriba
LDFLAGS="${LDFLAGS} -fuse-linker-plugin" #solo si usas Gold, es mejor.
Buna karşılık, /etc/portage/env/no-LTO.conf dosyasını oluştururuz ve aşağıdaki satırları ekleriz:
CFLAGS="${CFLAGS} -fno-lto -fno-use-linker-plugin"
CXXFLAGS="${CXXFLAGS} -fno-lto -fno-use-linker-plugin"
LDFLAGS="${LDFLAGS} -fno-lto -fno-use-linker-plugin"
Ve dosyada paket.env derlemesi başarısız olan paketleri koyacağız LTO. O işte benim paket.env (kullandığımı unutmayın nolto.conf yerine LTO.conf dışı).
Ayrıca eklemeliyiz LTO değişken KULLANMAK make.confbu gereklidir çünkü geliştiriciler Gentoo bazı paketlerde bu optimizasyonun kullanımı için (yavaşça) isteğe bağlı yamalar ekliyorlar.
Bu yapıldıktan sonra, tüm sistem paketlerini yeniden derlemeye devam edelim:
emerge -e @world @system --keep-going &> errores
"Devam et" özelliğini kullanarak şunu söylüyoruz: Portage hataları yok saymak için &> tüm hataların çıktısını hata adı verilen bir dosyaya yönlendirin, bu dosyayı hangi paketlerin derlenemediğini görmek için kullanın ve bunları listesine ekleyin. paket.env.
tail -f /var/log/emerge.log
Ve hepsi bu, umarım hiç şüphem kalmaz, eğer neşelenir ve hakkında bir makale yazarım Openmp ve / veya grafit.
Gentoo, ah ...
Önemli şeye gidelim: Grafit!
Aptal ve duyusal Grafit xD, xD sisteminizi patlatan o normalden farklı şey, onu en son kullandığımda, 50 kez "bildir-KDE <3" yaparak bir yineleme yapmak için yeterli olduğunu hatırlıyorum, böylece yinelemede 50 numara, çevre cehenneme patlayacak hahahahaha, evet, yeniden osurmaya gidiyordum xD
Hala cesaretlendirildiğimi ve bir Grafit yaptığımı söyledim. Ancak yine de, Graphite (ve diğer herhangi bir optimizasyon) en iyi LTO ile çalışır. Ayrıca, LTO'dan farklı olarak Graphite ve OpenMP'nin bir sorunu var. Tüm programlar bundan faydalanmaz ve fayda sağlamayanlarda performans düşer, bu nedenle bu durumda sadece birkaç paket için kullanmak daha iyidir.