LTO: ما هو وكيف يتم استخدامه على Gentoo

ما هو LTO؟

عفرتو هو اختصار ل ارتباط الوقت الأمثل. إنها عملية يقوم فيها المترجم بتأخير التحسينات في لحظة ربط الملفات المصدر ، مما يسمح لك بمشاهدة جميع الملفات التي تشكل ملفًا تنفيذيًا واحدًا كملف واحد ، وبهذه الطريقة يتم تطبيق التحسينات بطريقة أكثر فعالية.

للمزيد من المعلومات: ويكي الخليج.

لمعرفة مزايا وعيوب عفرتو: معايير الكس

أشياء يجب مراعاتها

  • إنه غير مستقر ، يمكن أن يسبب مشاكل في بعض الحزم.
  • ستفشل بعض الحزم في التجميع (المزيد حول كيفية إصلاح ذلك لاحقًا).
  • من المستحسن استخدام الرابط ذهبي.
  • استخدم دائما أحدث إصدار من الخليج.

ذهبي، بالإضافة إلى دعم الميزات المتقدمة التي تجعلها أكثر جاذبية للاستخدام عفرتو، إنه أسرع من غنو لد، خاصة عندما يتعلق الأمر بالبرامج الكبيرة ، حيث يمكن أن تصبح 5 مرات أسرع. لاستخدامه ، قم بتشغيل:

binutils-config --linker ld.gold


باستخدام 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.

لذلك ، للاستخدام عفرتو في الحزمة ، علينا فقط وضع اسمها (الاسم الكامل ، 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 عالميًا (غير مستحسن)

بدلا من التقديم عفرتو حزمة تلو الأخرى ، يمكننا أيضًا تطبيقها عالميًا (وهو ما أستخدمه). لتطبيقه ، الخطوات التي يجب اتباعها هي:

نقوم بتحرير الملف /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 سنضع الحزم التي فشل تجميعها مع عفرتو. هو هنا بلدي package.env (لاحظ أنني استخدم ملفات nolto.conf بدلا من غير LTO.conf).

يجب أن نضيف أيضا عفرتو لاستخدام متغير جعل، هذا ضروري لأن مطوري جنتو إنهم (ببطء) يضيفون تصحيحات اختيارية لاستخدام هذا التحسين في بعض الحزم.

بمجرد الانتهاء من ذلك ، دعنا ننتقل إلى إعادة ترجمة جميع حزم النظام:

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

باستخدام – keep-going ، نحن نقول حمل لتجاهل الأخطاء ، بينما &> إعادة توجيه إخراج جميع الأخطاء إلى ملف يسمى الأخطاء ، استخدم هذا الملف لمعرفة الحزم التي تفشل في تجميعها وإضافتها إلى قائمة package.env.

سيحرمنا &> من جميع المخرجات ، إذا أردنا رؤية ناتج العملية ، يجب أن نستخدم (كجذر) هذا الأمر:

tail -f /var/log/emerge.log

وهذا كل شيء ، أتمنى ألا يكون لدي أي شك ، إذا كان ذلك سوف أبتهج وأكتب مقالًا عنه برنامج OpenMP و / أو الجرافيت.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.

  1.   MSX قال

    Gentoo ، meh ...
    دعنا ننتقل إلى الشيء المهم: الجرافيت!

    1.    x11tete11x قال

      الجرافيت xD الغبي والرائع ، هذا الشيء غير الطبيعي الذي ينفجر نظام xD الخاص بك ، أتذكر أنه في المرة الأخيرة التي استخدمته فيها ، كان كافياً أن أجعل ذلك يتكرر 50 مرة للقيام بـ «إخطار - إرسال كيدي <3" بحيث في رقم التكرار 50 ، سوف تنفجر البيئة إلى الجحيم هاهاهاهاها ، نعم ، كنت ذاهبًا إلى فرتس xD

    2.    رودر قال

      لقد قلت بالفعل إنني ما زلت متشجعًا وصنعت واحدة من الجرافيت. ولكن على أي حال ، فإن الجرافيت (وأي تحسين آخر) يعمل بشكل أفضل مع LTO. أيضًا ، على عكس LTO ، يواجه الجرافيت و OpenMP مشكلة. لا تستفيد منه كل البرامج ، وفي تلك التي لا تستفيد منه يقل الأداء ، لذلك في هذه الحالة يفضل استخدامه لحزم قليلة فقط.