LTO: რა არის ეს და როგორ გამოვიყენოთ იგი Gentoo- ზე

რა არის LTO?

LTO არის აბრევიატურა ბმულის დროის ოპტიმიზაცია. ეს არის ოპერაცია, როდესაც შემდგენელი აყოვნებს ოპტიმიზაციებს წყაროს ფაილების მიბმის მომენტში, რაც საშუალებას გაძლევთ ნახოთ ყველა ფაილი, რომელიც ქმნის ერთ შემსრულებელს, როგორც ერთი ფაილი და ამ გზით გამოიყენეთ ოპტიმიზაციები უფრო ეფექტური გზით.

დამატებითი ინფორმაციისთვის: ვიკი GCC.

რომ ნახოთ სარგებელი და ნაკლოვანებები LTO: ნიშნული Phoronix

რამ უნდა გახსოვდეთ

  • ეს არასტაბილურია, ამან შეიძლება გამოიწვიოს პრობლემები ზოგიერთ შეფუთვაში.
  • ზოგიერთი პაკეტის შედგენა ვერ მოხერხდება (ამის შესახებ მოგვიანებით გამოსწორების შესახებ).
  • გირჩევთ გამოიყენოთ ბმულები ოქრო.
  • აშშ ყოველთვის უახლესი ვერსია GCC.

ოქროგარდა ამისა, ხელს უწყობს მოწინავე ფუნქციებს, რაც მას უფრო მიმზიდველს ხდის მის გამოყენებას LTO, ეს უფრო სწრაფია, ვიდრე გნუ ლდ, განსაკუთრებით მაშინ, როდესაც საქმე ეხება დიდ პროგრამებს, სადაც ის შეიძლება გახდეს 5 ჯერ უფრო სწრაფად. მისი გამოსაყენებლად გაუშვით:

binutils-config --linker ld.gold


LTO– ს გამოყენება: რეკომენდებული მეთოდი

გააქტიურების ნაცვლად LTO გლობალურად (რამაც შეიძლება პრობლემები შექმნას) უმჯობესია გავააქტიუროთ ჩვენთვის სასურველ პაკეტებში. ამ გზით, მხოლოდ ის პაკეტები გსურთ ისარგებლოთ LTO ისინი შედგენილია ამ ოპტიმიზაციით, ან რაც თავიდან აიცილებს ნელი კომპილირების დროს იმ პროგრამებში, რომლებიც არ სარგებლობს ამით. ამის მიღწევა შესაძლებელია შემდეგი გზით:

/ Etc / portage / env დირექტორიაში, ჩვენ ვქმნით ფაილს LTO. კონფ და დავამატებთ შემდეგ სტრიქონებს:

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.

ასე რომ, გამოიყენოს LTO პაკეტში, ჩვენ მხოლოდ მისი სახელი (სრული სახელი, www-კლიენტი / firefox, firefox– ის ნაცვლად) უნდა ჩავსვათ ფაილში პაკეტი. env, თან LTO. კონფ შენს მარჯვნივ. ქვემოთ მოცემულია მაგალითი:

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

ახლა ჩვენ უბრალოდ უნდა შევადგინოთ ის პაკეტები, რომელთა გამოყენებაც გვინდა LTO.


LTO– ს გამოყენება გლობალურად (არ არის რეკომენდებული)

განაცხადის ნაცვლად LTO პაკეტი პაკეტში, ასევე შეგვიძლია მისი გამოყენება გლობალურად (რასაც მე ვიყენებ). მისი გამოყენებისათვის შემდეგი ნაბიჯებია:

ჩვენ ვარედაქტირებთ ფაილს /etc/portage/make.conf და ვამატებთ შემდეგს (ისინი ფაილის იგივე ხაზებია LTO. კონფ):

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.

თავის მხრივ, ჩვენ ვქმნით ფაილს /etc/portage/env/no-LTO.conf და ვამატებთ შემდეგ სტრიქონებს:

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

და ფაილში პაკეტი. env ჩვენ დავაყენებთ პაკეტებს, რომელთა შედგენა ვერ მოხერხდება LTO. მამაკაცი აქ ჩემი პაკეტი. env (გაითვალისწინეთ, რომ მე ვიყენებ ნოლტო.კონფ ნაცვლად არა- LTO.conf).

ასევე უნდა დავამატოთ LTO გამოიყენოს ცვლადი გააკეთე, ეს აუცილებელია, რადგან დეველოპერები Gentoo ისინი ზოგიერთ პაკეტში (ნელ-ნელა) დაამატებენ არასავალდებულო პატჩებს ამ ოპტიმიზაციის გამოყენებისთვის

ამის გაკეთების შემდეგ, მოდით, გავაგრძელოთ სისტემის ყველა პაკეტის ხელახლა შედგენა:

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

გამოყენებით-შენარჩუნება, ჩვენ ვეუბნებით Portage შეცდომების უგულებელყოფა, ხოლო &> ყველა შეცდომის გამომუშავება გადამისამართეთ ფაილზე, რომელსაც შეცდომებს უწოდებენ, გამოიყენეთ ეს ფაილი, რომ ნახოთ რომელი პაკეტების შედგენა ვერ მოხერხდება და დაამატეთ ისინი პაკეტი. env.

&> დაგვკარგავს ყველა გამომავალს, თუ გვსურს ვნახოთ პროცესის შედეგი, უნდა გამოვიყენოთ (როგორც root) ეს ბრძანება:

tail -f /var/log/emerge.log

და ეს ყველაფერი, იმედი მაქვს ეჭვი არ დამიტოვებია, თუ ამაში გაახარებ და სტატიას დავწერ Openmp და / ან Graphite.


სტატიის შინაარსი იცავს ჩვენს პრინციპებს სარედაქციო ეთიკა. შეცდომის შესატყობინებლად დააჭირეთ ღილაკს აქ.

3 კომენტარი დატოვე შენი

დატოვე კომენტარი

თქვენი ელფოსტის მისამართი გამოქვეყნებული არ იყო. აუცილებელი ველები აღნიშნულია *

*

*

  1. მონაცემებზე პასუხისმგებელი: მიგელ ანგელ გატონი
  2. მონაცემთა მიზანი: სპამის კონტროლი, კომენტარების მართვა.
  3. ლეგიტიმაცია: თქვენი თანხმობა
  4. მონაცემთა კომუნიკაცია: მონაცემები არ გადაეცემა მესამე პირებს, გარდა სამართლებრივი ვალდებულებისა.
  5. მონაცემთა შენახვა: მონაცემთა ბაზა, რომელსაც უმასპინძლა Occentus Networks (EU)
  6. უფლებები: ნებისმიერ დროს შეგიძლიათ შეზღუდოთ, აღადგინოთ და წაშალოთ თქვენი ინფორმაცია.

  1.   msx დიჯო

    ჯენტო, მე ...
    მოდით გადავდეთ მნიშვნელოვანზე: გრაფიტი!

    1.    x11tete11x დიჯო

      სულელი და სენსუალური გრაფიტი xD, ეს არანორმალური რამ, რაც შენს xD სისტემას აფეთქებს, მახსოვს, რომ ბოლოს, როდესაც ის გამოვიყენე, საკმარისი იყო 50-ჯერ გამეორებულიყო ამისათვის "KDE- ს გაგზავნა-გაგზავნა <3" ისე, რომ განმეორებით ნომერი 50, გარემო ჯოჯოხეთში ჩაიგდებს ჰაჰაჰაჰა, დიახ, მე მივდიოდი ხელახლა farts xD

    2.    მოგზაური დიჯო

      მე უკვე ვთქვი, რომ მაინც გამამხნევეს და გრაფიტივით მივიღე. ყოველ შემთხვევაში, Graphite (და ნებისმიერი სხვა ოპტიმიზაცია) საუკეთესოდ მუშაობს LTO– სთან. ასევე, LTO- სგან განსხვავებით, გრაფიტს და OpenMP- ს პრობლემა აქვთ. ყველა პროგრამა არ სარგებლობს მასში და იმაში, ვინც არ სარგებლობს, შესრულება იკლებს, ამიტომ ამ შემთხვევაში უმჯობესია გამოიყენოთ იგი მხოლოდ რამდენიმე პაკეტისთვის.