LTO: apakah itu dan bagaimana menggunakannya di Gentoo

Apa itu LTO?

LTO adalah singkatan untuk Pautan Pengoptimuman Masa. Ini adalah operasi di mana penyusun menunda pengoptimuman pada saat menghubungkan fail sumber, yang membolehkan anda melihat semua fail yang membentuk satu yang dapat dilaksanakan sebagai satu fail, dan dengan cara ini menerapkan pengoptimuman dengan cara yang lebih efektif.

Untuk maklumat lanjut: wiki dari GCC.

Untuk melihat faedah dan kekurangan dari LTO: Tanda aras bagi Phoronix

Perkara yang perlu diingat

  • Ia tidak stabil, boleh menyebabkan masalah dalam beberapa bungkusan.
  • Beberapa pakej akan gagal disusun (lebih lanjut mengenai cara memperbaikinya kemudian).
  • Adalah disyorkan untuk menggunakan penghubung EMAS.
  • Usa siempre versi terkini dari GCC.

EMAS, selain menyokong ciri canggih yang menjadikannya lebih menarik untuk digunakan LTO, lebih pantas daripada gnu ldterutamanya ketika datang ke program besar, di mana ia boleh menjadi 5 kali lebih pantas. Untuk menggunakannya, jalankan:

binutils-config --linker ld.gold


Menggunakan LTO: kaedah yang disyorkan

Daripada mengaktifkan LTO secara global (yang boleh menyebabkan masalah) lebih baik mengaktifkannya dalam pakej yang kita mahukan. Dengan cara ini, hanya pakej yang ingin anda manfaatkan LTO mereka disusun dengan pengoptimuman ini, atau yang mengelakkan masa penyusunan yang lebih perlahan dalam program yang tidak mendapat faedah daripadanya. Ini dapat dicapai dengan cara berikut:

Di direktori / etc / portage / env, kami membuat fail LTO.conf dan kami menambah 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 LTO dalam pakej, kita hanya perlu meletakkan namanya (nama penuh, www-client / firefox, bukannya firefox) dalam fail pakej.env, bersama dengan LTO.conf di sebelah kanan anda. Berikut adalah contoh:

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

Sekarang kita hanya perlu menyusun pakej yang kita mahu mereka gunakan LTO.


Menggunakan LTO secara global (tidak digalakkan)

Daripada memohon LTO pakej demi pakej, kita juga boleh mengaplikasikannya secara global (itulah yang saya gunakan). Untuk menerapkannya, langkah-langkah yang harus diikuti adalah:

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

Sebaliknya, kami membuat fail /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 dalam fail pakej.env kami akan meletakkan pakej yang kompilasinya gagal LTO. Beliau di sini saya pakej.env (perhatikan bahawa saya gunakan nolto.conf sebaliknya bukan LTO.conf).

Kita juga mesti menambah LTO ke PENGGUNAAN pemboleh ubah dari buat.conf, ini perlu kerana pemaju Gentoo mereka (perlahan) menambah tambalan pilihan untuk penggunaan pengoptimuman ini dalam beberapa pakej.

Setelah ini selesai, mari kita terus mengumpulkan semua pakej sistem:

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

Dengan menggunakan –ke-going, kita memberitahu Portage untuk mengabaikan kesilapan, sementara &> ubah hala output semua bug ke fail yang disebut ralat, gunakan fail ini untuk melihat paket mana yang gagal dikompilasi dan tambahkannya ke senarai pakej.env.

&> Akan melucutkan kita semua output, jika kita ingin melihat output dari proses tersebut, kita mesti menggunakan (sebagai root) perintah ini:

tail -f /var/log/emerge.log

Dan itu sahaja, saya harap saya tidak meninggalkan keraguan, sekiranya saya bersorak dan menulis artikel Openmp dan / atau grafit.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.

  1.   MSX kata

    Gentoo, saya ...
    Mari kita pergi ke perkara penting: Grafit!

    1.    x11tete11x kata

      Graphite xD yang bodoh dan sensual, bahawa perkara yang tidak normal yang meletupkan sistem xD anda, saya ingat bahawa kali terakhir saya menggunakannya, sudah cukup untuk membuatnya untuk itu berulang 50 kali melakukan "notify-send KDE <3" sehingga dalam lelaran nombor 50, persekitaran akan hancur hahahahaha, ya, saya pergi ke xD kentut semula

    2.    pengembara kata

      Saya sudah mengatakan bahawa saya masih diberi semangat dan menjadikan salah satu Graphite. Tetapi bagaimanapun, Graphite (dan pengoptimuman lain) berfungsi paling baik dengan LTO. Juga, tidak seperti LTO, Graphite dan OpenMP mempunyai masalah. Tidak semua program mendapat manfaatnya, dan pada program yang tidak memanfaatkannya, prestasi menurun, jadi dalam hal ini lebih baik menggunakannya hanya untuk beberapa paket.