LTO: มันคืออะไรและจะใช้กับ Gentoo ได้อย่างไร

LTO คืออะไร?

LTO เป็นคำย่อของ การเพิ่มประสิทธิภาพเวลาลิงค์. เป็นการดำเนินการที่คอมไพลเลอร์ล่าช้าในการปรับแต่งในขณะที่ลิงก์ไฟล์ต้นทางทำให้คุณสามารถดูไฟล์ทั้งหมดที่ประกอบขึ้นเป็นไฟล์ปฏิบัติการเดียวเป็นไฟล์เดียวและด้วยวิธีนี้จะใช้การปรับให้เหมาะสมอย่างมีประสิทธิภาพมากขึ้น

สำหรับข้อมูลเพิ่มเติม: วิกิของ GCC.

เพื่อดูประโยชน์และข้อเสียของ LTO: เกณฑ์มาตรฐานของ Phoronix

สิ่งที่ควรทราบ

  • ไม่เสถียรอาจทำให้เกิดปัญหาในบางแพ็คเกจ
  • บางแพ็กเกจจะคอมไพล์ไม่สำเร็จ (เพิ่มเติมเกี่ยวกับวิธีแก้ไขในภายหลัง)
  • ขอแนะนำให้ใช้ตัวเชื่อม ทองคำ.
  • ประเทศสหรัฐอเมริกา เสมอ เวอร์ชันล่าสุดของ GCC.

ทองคำนอกเหนือจากการรองรับคุณสมบัติขั้นสูงที่ทำให้น่าใช้ยิ่งขึ้น LTOเร็วกว่า gnu ldโดยเฉพาะอย่างยิ่งเมื่อพูดถึงโปรแกรมขนาดใหญ่ที่สามารถกลายเป็น เร็วขึ้น 5 เท่า. หากต้องการใช้ให้เรียกใช้:

binutils-config --linker ld.gold


ใช้ LTO: วิธีที่แนะนำ

แทนที่จะเปิดใช้งาน LTO ทั่วโลก (ซึ่งอาจทำให้เกิดปัญหา) ควรเปิดใช้งานในแพ็คเกจที่เราต้องการจะดีกว่า ด้วยวิธีนี้เฉพาะแพ็คเกจที่คุณต้องการได้รับประโยชน์ LTO พวกเขารวบรวมด้วยการเพิ่มประสิทธิภาพนี้หรือหลีกเลี่ยงเวลาการรวบรวมที่ช้าลงในโปรแกรมที่ไม่ได้รับประโยชน์จากมัน สามารถทำได้ด้วยวิธีต่อไปนี้:

ในไดเร็กทอรี / etc / portage / env เราสร้างไฟล์ 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.

ดังนั้นเพื่อใช้ LTO ในแพ็คเกจเราต้องใส่ชื่อ (ชื่อเต็ม www-client / firefox แทน firefox) ในไฟล์ package.envพร้อมด้วย LTO.conf ทางขวาของคุณ ด้านล่างนี้คือตัวอย่าง:

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.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.

ในทางกลับกันเราสร้างไฟล์ /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"

และในไฟล์ package.env เราจะใส่แพ็คเกจที่การรวบรวมล้มเหลวด้วย LTO. เขา ที่นี่ของฉัน package.env (สังเกตว่าฉันใช้ nolto.conf แทนที่ ไม่มี -LTO.conf).

เราต้องเพิ่มด้วย LTO ถึงตัวแปร USE ของ make.confนี่เป็นสิ่งจำเป็นเนื่องจากนักพัฒนาของ Gentoo พวกเขา (ช้า) เพิ่มแพตช์เสริมสำหรับการใช้การเพิ่มประสิทธิภาพนี้ในบางแพ็คเกจ

เมื่อเสร็จแล้วให้ทำการคอมไพล์แพ็กเกจระบบทั้งหมดใหม่:

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

เรากำลังบอกด้วยการใช้ - ทำต่อไป การขนส่ง เพื่อละเว้นข้อผิดพลาดในขณะที่ &> เปลี่ยนเส้นทางผลลัพธ์ของจุดบกพร่องทั้งหมดไปยังไฟล์ที่เรียกว่าข้อผิดพลาดใช้ไฟล์นี้เพื่อดูว่าแพ็คเกจใดไม่สามารถรวบรวมและเพิ่มลงในรายการ package.env.

&> จะกีดกันเราจากผลลัพธ์ทั้งหมดหากเราต้องการดูผลลัพธ์ของกระบวนการเราต้องใช้ (เป็นรูท) คำสั่งนี้:

tail -f /var/log/emerge.log

และนั่นคือทั้งหมดฉันหวังว่าฉันจะไม่ทิ้งข้อสงสัยใด ๆ หากสิ่งนั้นฉันจะมีกำลังใจและเขียนบทความเกี่ยวกับ Openmp และ / หรือ กราไฟท์.


แสดงความคิดเห็นของคุณ

อีเมล์ของคุณจะไม่ถูกเผยแพร่ ช่องที่ต้องการถูกทำเครื่องหมายด้วย *

*

*

  1. ผู้รับผิดชอบข้อมูล: Miguel ÁngelGatón
  2. วัตถุประสงค์ของข้อมูล: ควบคุมสแปมการจัดการความคิดเห็น
  3. ถูกต้องตามกฎหมาย: ความยินยอมของคุณ
  4. การสื่อสารข้อมูล: ข้อมูลจะไม่ถูกสื่อสารไปยังบุคคลที่สามยกเว้นตามข้อผูกพันทางกฎหมาย
  5. การจัดเก็บข้อมูล: ฐานข้อมูลที่โฮสต์โดย Occentus Networks (EU)
  6. สิทธิ์: คุณสามารถ จำกัด กู้คืนและลบข้อมูลของคุณได้ตลอดเวลา

  1.   MSX dijo

    เก็นทูฉัน ...
    ไปที่สิ่งสำคัญ: ไฟท์!

    1.    x11tete11x dijo

      กราไฟท์ที่โง่และ ssensual สิ่งที่ผิดปกติที่ระเบิดระบบ xD ของคุณฉันจำได้ว่าครั้งสุดท้ายที่ฉันใช้มันก็เพียงพอแล้วที่จะทำซ้ำ 50 ครั้งโดยทำ "แจ้ง - ส่ง KDE <3" เพื่อให้ในการวนซ้ำ ตอนที่ 50 สภาพแวดล้อมจะนรกแตก XNUMX ใช่แล้วฉันกำลังจะผายลม xD

    2.    โรเดอร์ dijo

      บอกแล้วว่ายังมีกำลังใจและเป็นหนึ่งในไฟท์ อย่างไรก็ตาม Graphite (และการเพิ่มประสิทธิภาพอื่น ๆ ) ทำงานได้ดีที่สุดกับ LTO นอกจากนี้ไม่เหมือนกับ LTO, Graphite และ OpenMP มีปัญหา ไม่ใช่ทุกโปรแกรมที่ได้รับประโยชน์จากโปรแกรมนี้และในโปรแกรมที่ไม่ได้รับประโยชน์จากโปรแกรมนั้นประสิทธิภาพจะลดลงดังนั้นในกรณีนี้ควรใช้เพียงไม่กี่แพ็คเกจเท่านั้น