LTO: apa itu dan bagaimana menggunakannya di Gentoo

Apa LTO?

KPP adalah singkatan dari Optimasi Waktu Tautan. Ini adalah operasi di mana kompiler menunda pengoptimalan pada saat menautkan file sumber, memungkinkan Anda untuk melihat semua file yang membuat satu file yang dapat dieksekusi sebagai satu file, dan dengan cara ini menerapkan pengoptimalan dengan cara yang lebih efektif.

Untuk informasi lebih lanjut: wiki dari GCC.

Untuk melihat kelebihan dan kekurangannya KPP: Tolok ukur dari Phoronix

Hal-hal yang perlu diingat

  • Ini tidak stabil, dapat menyebabkan masalah pada beberapa paket.
  • Beberapa paket akan gagal untuk dikompilasi (lebih lanjut tentang cara memperbaikinya nanti).
  • Direkomendasikan untuk menggunakan linker Gold.
  • Usa siempre versi terbaru dari GCC.

Gold, selain mendukung fitur-fitur canggih yang membuatnya semakin menarik untuk digunakan KPP, ini lebih cepat dari GNU, terutama jika berhubungan dengan program besar, di mana hal itu bisa terjadi 5 kali lebih cepat. Untuk menggunakannya, jalankan:

binutils-config --linker ld.gold


Menggunakan LTO: metode yang disarankan

Alih-alih mengaktifkan KPP secara global (yang bisa menimbulkan masalah) lebih baik mengaktifkannya di paket yang kita inginkan. Dengan cara ini, hanya paket yang ingin Anda manfaatkan KPP mereka dikompilasi dengan pengoptimalan ini, atau yang menghindari waktu kompilasi yang lebih lambat dalam program yang tidak mendapatkan keuntungan darinya. Ini dapat dicapai dengan cara berikut:

Di direktori / etc / portage / env, kami membuat file LTO.conf dan kami menambahkan baris berikut:

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.

Jadi, untuk digunakan KPP dalam satu paket, kita hanya perlu memasukkan namanya (nama lengkap, www-client / firefox, bukan firefox) di file paket.env, bersama dengan LTO.conf di sebelah kananmu. Berikut ini contohnya:

app-emulation/wine LTO.conf
www-client/firefox LTO.conf
sys-devel/gcc LTO.conf
kde-base/kdelibs LTO.conf

Sekarang kita hanya perlu mengkompilasi paket yang kita ingin mereka gunakan KPP.


Menggunakan LTO secara global (tidak disarankan)

Alih-alih melamar KPP paket demi paket, kami juga dapat menerapkannya secara global (yang saya gunakan). Untuk menerapkannya, langkah-langkah yang harus diikuti adalah:

Kami mengedit file /etc/portage/make.conf dan menambahkan yang berikut (baris yang sama dari file 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.

Pada gilirannya, kami membuat file /etc/portage/env/no-LTO.conf dan menambahkan baris berikut:

CFLAGS="${CFLAGS} -fno-lto -fno-use-linker-plugin"
CXXFLAGS="${CXXFLAGS} -fno-lto -fno-use-linker-plugin"
LDFLAGS="${LDFLAGS} -fno-lto -fno-use-linker-plugin"

Dan di dalam file paket.env kami akan meletakkan paket-paket yang kompilasinya gagal KPP. Dia ini saya paket.env (perhatikan yang saya gunakan nolto.conf di tempat non-LTO.conf).

Kita juga harus menambahkan KPP untuk MENGGUNAKAN variabel buat.conf, ini perlu karena pengembang Gentoo mereka (perlahan) menambahkan patch opsional untuk penggunaan pengoptimalan ini di beberapa paket.

Setelah ini selesai, mari lanjutkan untuk mengkompilasi ulang semua paket sistem:

emerge -e @world @system --keep-going &> errores

Dengan menggunakan –keep-going, kami memberi tahu Portage untuk mengabaikan kesalahan, sementara &> mengarahkan output dari semua bug ke file bernama error, gunakan file ini untuk melihat paket mana yang gagal dikompilasi dan tambahkan ke daftar paket.env.

&> Akan menghilangkan semua keluaran kita, jika kita ingin melihat keluaran dari proses, kita harus menggunakan (sebagai root) perintah ini:

tail -f /var/log/emerge.log

Dan itu saja, saya harap saya tidak meninggalkan keraguan, jika itu saya akan menghibur dan menulis artikel tentang Openmp dan / atau Grafit.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.

  1.   MSX dijo

    Gentoo, meh ...
    Mari kita ke hal yang penting: Grafit!

    1.    x11tete11x dijo

      Graphite xD bodoh dan sensual, hal subnormal yang meledakkan sistem xD anda, saya ingat bahwa terakhir kali saya menggunakannya, cukup membuat untuk itu iterasi 50 kali melakukan "notify-send KDE <3" sehingga di iterasi nomor 50 , lingkungan akan meledak ke neraka hahahahaha, ya, saya akan kentut xD

    2.    pengendara jalan dijo

      Saya sudah mengatakan bahwa saya masih didorong dan dibuat salah satu dari Grafit. Tapi bagaimanapun, Graphite (dan pengoptimalan lainnya) bekerja paling baik dengan LTO. Selain itu, tidak seperti LTO, Graphite dan OpenMP memiliki masalah. Tidak semua program mendapat manfaat darinya, dan pada mereka yang tidak mendapat manfaat darinya, kinerja menurun, jadi dalam hal ini lebih baik menggunakannya hanya untuk beberapa paket.