LTO: Nedir ve Gentoo'da nasıl kullanılır?

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.

Daha fazla bilgi için: wiki'si GCC.

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.

&> Bizi tüm çıktılardan mahrum edecek, eğer sürecin çıktısını görmek istiyorsak, bu komutu (kök olarak) kullanmalıyız:

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.


Yorumunuzu bırakın

E-posta hesabınız yayınlanmayacak. Gerekli alanlar ile işaretlenmiştir *

*

*

  1. Verilerden sorumlu: Miguel Ángel Gatón
  2. Verilerin amacı: Kontrol SPAM, yorum yönetimi.
  3. Meşruiyet: Onayınız
  4. Verilerin iletilmesi: Veriler, yasal zorunluluk dışında üçüncü kişilere iletilmeyecektir.
  5. Veri depolama: Occentus Networks (AB) tarafından barındırılan veritabanı
  6. Haklar: Bilgilerinizi istediğiniz zaman sınırlayabilir, kurtarabilir ve silebilirsiniz.

  1.   msx dijo

    Gentoo, ah ...
    Önemli şeye gidelim: Grafit!

    1.    x11tete11x dijo

      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

    2.    yolcu dijo

      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.