LTO: यह क्या है और इसे Gentoo पर कैसे उपयोग किया जाए

LTO क्या है?

LTO के लिए है लिंक समय अनुकूलन। यह एक ऑपरेशन है जिसमें संकलक स्रोत फ़ाइलों को जोड़ने के क्षण में अनुकूलन को विलंबित करता है, जिससे आप उन सभी फ़ाइलों को देख सकते हैं जो एकल फ़ाइल के रूप में एक निष्पादन योग्य बनाती हैं, और इस तरह अधिक प्रभावी तरीके से अनुकूलन लागू करती हैं।

अधिक जानकारी के लिए: की विकी जीसीसी.

के लाभों और कमियों को देखने के लिए LTO: के बेंचमार्क Phoronix

ध्यान रखने योग्य बातें

  • यह अस्थिर है, यह कुछ पैकेजों में समस्याएं पैदा कर सकता है।
  • कुछ पैकेज संकलित करने में विफल रहेंगे (बाद में इसे कैसे ठीक करें पर अधिक)।
  • लिंकर का उपयोग करने की सिफारिश की जाती है सोना.
  • संयुक्त राज्य अमेरिका सदैव का नवीनतम संस्करण जीसीसी.

सोना, उन्नत सुविधाओं का समर्थन करने के अलावा जो इसे उपयोग करने के लिए अधिक आकर्षक बनाते हैं LTO, यह तेजी से है जीएनयू ने एल.डी., खासकर जब यह बड़े कार्यक्रमों की बात आती है, जहां यह बन सकता है 5 बार तेजी से। इसका उपयोग करने के लिए, दौड़ें:

binutils-config --linker ld.gold


एलटीओ का उपयोग करना: अनुशंसित विधि

सक्रिय करने के बजाय LTO विश्व स्तर पर (जो समस्याएं पैदा कर सकता है) इसे उन पैकेजों में सक्रिय करना बेहतर है जो हम चाहते हैं। इस तरह, केवल वे पैकेज जिनसे आप लाभ लेना चाहते हैं LTO वे इस अनुकूलन के साथ संकलित हैं, या जो उन कार्यक्रमों में धीमे संकलन समय से बचते हैं जो इससे लाभ नहीं उठाते हैं। इसे निम्नलिखित तरीके से प्राप्त किया जा सकता है:

/ Etc / portage / env डायरेक्टरी में, हम फाइल बनाते हैं एलटीओ.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- क्लाइंट / फ़ायरफ़ॉक्स के बजाय फ़ायरफ़ॉक्स) रखना होगा पैकेज.envसाथ में एलटीओ.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 फ़ाइल को संपादित करते हैं और निम्नलिखित जोड़ते हैं (वे फ़ाइल से समान पंक्तियाँ हैं एलटीओ.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"

और फाइल में पैकेज.env हम उन पैकेजों को डालेंगे जिनका संकलन विफल रहता है LTO. वह यहाँ मेरा पैकेज.env (ध्यान दें कि मैं उपयोग करता हूं nolto.conf के बजाय नहीं-LTO.conf).

हमें भी जोड़ना होगा LTO का उपयोग करने के लिए चर बनाना.conf, यह आवश्यक है क्योंकि डेवलपर्स Gentoo वे (धीरे) कुछ पैकेजों में इस अनुकूलन के उपयोग के लिए वैकल्पिक पैच जोड़ रहे हैं।

एक बार यह हो जाने के बाद, हम सभी सिस्टम पैकेजों को फिर से शुरू करने के लिए आगे बढ़ते हैं:

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

-एक-चलन का उपयोग करके, हम बता रहे हैं भारवाहन त्रुटियों को अनदेखा करना, जबकि &> त्रुटियों के लिए एक फ़ाइल के लिए सभी कीड़े के उत्पादन को पुनर्निर्देशित करें, इस फ़ाइल का उपयोग यह देखने के लिए करें कि कौन से संकुल संकलित करने में विफल हैं और उन्हें सूची में जोड़ें पैकेज.env.

&> हमें सभी आउटपुट से वंचित करेगा, अगर हम प्रक्रिया का आउटपुट देखना चाहते हैं, तो हमें इसका उपयोग करना चाहिए (मूल रूप में)

tail -f /var/log/emerge.log

और यह सब, मुझे आशा है कि मैंने कोई संदेह नहीं छोड़ा है, अगर मैं खुश होऊंगा और एक लेख लिखूंगा खुला हुआ और / या सीसा.


अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: मिगुएल elngel Gatón
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।

  1.   MSX कहा

    Gentoo, meh ...
    आइए महत्वपूर्ण बात पर जाएं: ग्रेफाइट!

    1.    x11tete11x कहा

      बेवकूफी और ssensual ग्रेफाइट xD, वह उप-असामान्य चीज़ जो आपके xD सिस्टम को फोड़ती है, मुझे याद है कि पिछली बार जब मैंने इसका इस्तेमाल किया था, तो इसके लिए यह बनाने के लिए पर्याप्त था कि 50 बार iterates को "अधिसूचित-भेज केडीई <3" करना ताकि पुनरावृत्ति में 50 नंबर, पर्यावरण नरक हाहाहाहा को फोड़ देगा, हां, मैं फार्ट्स एक्सडी पर जा रहा था

    2.    रोडर कहा

      मैंने पहले ही कहा कि मुझे अभी भी प्रोत्साहित किया गया है और ग्रेफाइट में से एक बनाया है। लेकिन वैसे भी, ग्रेफाइट (और किसी भी अन्य अनुकूलन) LTO के साथ सबसे अच्छा काम करता है। इसके अलावा, LTO के विपरीत, ग्रेफाइट और OpenMP में एक समस्या है। सभी कार्यक्रम इससे लाभान्वित नहीं होते हैं, और जो लाभ नहीं करते हैं, उनमें प्रदर्शन कम हो जाता है, इसलिए इस मामले में इसका उपयोग केवल कुछ पैकेजों के लिए करना बेहतर है।