ഇന്ഡക്സ്
എന്താണ് LTO?
LTO എന്നതിന്റെ ചുരുക്കരൂപമാണ് ലിങ്ക് ടൈം ഒപ്റ്റിമൈസേഷൻ. ഉറവിട ഫയലുകൾ ലിങ്കുചെയ്യുന്ന സമയത്ത് കംപൈലർ ഒപ്റ്റിമൈസേഷനുകൾ കാലതാമസം വരുത്തുന്ന ഒരു പ്രവർത്തനമാണിത്, ഒരൊറ്റ എക്സിക്യൂട്ടബിൾ നിർമ്മിക്കുന്ന എല്ലാ ഫയലുകളും ഒരൊറ്റ ഫയലായി കാണാൻ നിങ്ങളെ അനുവദിക്കുന്നു, അങ്ങനെ ഒപ്റ്റിമൈസേഷനുകൾ കൂടുതൽ ഫലപ്രദമായി പ്രയോഗിക്കുന്നു.
ഇതിന്റെ ഗുണങ്ങളും പോരായ്മകളും കാണുന്നതിന് LTO: ന്റെ മാനദണ്ഡങ്ങൾ ഫൊരൊനിക്സ
ഓർമ്മിക്കേണ്ട കാര്യങ്ങൾ
- ഇത് അസ്ഥിരമാണ്, ഇത് ചില പാക്കേജുകളിൽ പ്രശ്നങ്ങൾ സൃഷ്ടിക്കും.
- ചില പാക്കേജുകൾ കംപൈൽ ചെയ്യുന്നതിൽ പരാജയപ്പെടും (ഇത് പിന്നീട് എങ്ങനെ പരിഹരിക്കാമെന്നതിനെക്കുറിച്ച് കൂടുതൽ).
- ലിങ്കർ ഉപയോഗിക്കാൻ ശുപാർശ ചെയ്യുന്നു ഗോൾഡ്.
- യുഎസ്എ സിഎംപ്രെ ന്റെ ഏറ്റവും പുതിയ പതിപ്പ് ജിസിസി.
ഗോൾഡ്, ഉപയോഗിക്കാൻ കൂടുതൽ ആകർഷകമാക്കുന്ന നൂതന സവിശേഷതകളെ പിന്തുണയ്ക്കുന്നതിനൊപ്പം LTO, ഇത് വേഗതയേറിയതാണ് ഗ്നു 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) ഫയലിൽ ഇടുക pack.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"
ഫയലിലും pack.env സമാഹാരം പരാജയപ്പെടുന്ന പാക്കേജുകൾ ഞങ്ങൾ ഇടും LTO. അവൻ ഇവിടെ എന്റെ pack.env (ഞാൻ ഉപയോഗിക്കുന്നത് ശ്രദ്ധിക്കുക nolto.conf പകരം LTO.conf ഇല്ല).
ഞങ്ങളും ചേർക്കണം LTO ന്റെ USE വേരിയബിളിലേക്ക് make.conf, ഇത് ആവശ്യമാണ് കാരണം ഡവലപ്പർമാർ ജെന്റൂ ചില പാക്കേജുകളിൽ ഈ ഒപ്റ്റിമൈസേഷന്റെ ഉപയോഗത്തിനായി അവ (പതുക്കെ) ഓപ്ഷണൽ പാച്ചുകൾ ചേർക്കുന്നു.
ഇത് ചെയ്തുകഴിഞ്ഞാൽ, എല്ലാ സിസ്റ്റം പാക്കേജുകളും വീണ്ടും കംപൈൽ ചെയ്യുന്നതിന് നമുക്ക് മുന്നോട്ട് പോകാം:
emerge -e @world @system --keep-going &> errores
–കീപ്പ്-പോകുന്നതിലൂടെ, ഞങ്ങൾ പറയുന്നു പോർട്ടേജ് പിശകുകൾ അവഗണിക്കാൻ &> എല്ലാ ബഗുകളുടെയും output ട്ട്പുട്ട് പിശകുകൾ എന്ന് വിളിക്കുന്ന ഒരു ഫയലിലേക്ക് റീഡയറക്ടുചെയ്യുക, ഏത് പാക്കേജുകൾ കംപൈൽ ചെയ്യുന്നതിൽ പരാജയപ്പെടുന്നുവെന്ന് കാണുന്നതിന് ഈ ഫയൽ ഉപയോഗിച്ച് അവ പട്ടികയിലേക്ക് ചേർക്കുക pack.env.
tail -f /var/log/emerge.log
അത്രയേയുള്ളൂ, ഞാൻ ഒരു സംശയവും അവശേഷിപ്പിച്ചിട്ടില്ലെന്ന് ഞാൻ പ്രതീക്ഷിക്കുന്നു, അങ്ങനെയാണെങ്കിൽ ഞാൻ ധൈര്യപ്പെടുകയും ഒരു ലേഖനം എഴുതുകയും ചെയ്യും ഓപ്പൺഎംപി ഒപ്പം / അല്ലെങ്കിൽ ഗ്രാഫൈറ്റ്.
3 അഭിപ്രായങ്ങൾ, നിങ്ങളുടേത് വിടുക
ജെന്റൂ, മെഹ് ...
പ്രധാനപ്പെട്ട കാര്യത്തിലേക്ക് കടക്കാം: ഗ്രാഫൈറ്റ്!
നിങ്ങളുടെ എക്സ്ഡി സിസ്റ്റം പൊട്ടിത്തെറിക്കുന്ന അസാധാരണമായ കാര്യം വിഡ് up ിത്തവും സെൻസുവലും ആയ ഗ്രാഫൈറ്റ് എക്സ്ഡി, ഞാൻ അവസാനമായി ഇത് ഉപയോഗിച്ചതായി ഓർക്കുന്നു, അതിനായി 50 തവണ "അറിയിപ്പ്-അയയ്ക്കുക കെഡിഇ <3" ചെയ്യുന്നത് ആവർത്തിക്കുന്നു. നമ്പർ 50, പരിസ്ഥിതി നരകത്തിലേക്ക് പൊട്ടിത്തെറിക്കും hahahahaha, അതെ, ഞാൻ വീണ്ടും ഫോർട്ട് എക്സ്ഡിയിലേക്ക് പോവുകയായിരുന്നു
എന്നെ ഇപ്പോഴും പ്രോത്സാഹിപ്പിക്കുകയും ഗ്രാഫൈറ്റ് ആക്കുകയും ചെയ്തുവെന്ന് ഞാൻ ഇതിനകം പറഞ്ഞു. എന്തായാലും, ഗ്രാഫൈറ്റ് (കൂടാതെ മറ്റേതെങ്കിലും ഒപ്റ്റിമൈസേഷനും) LTO- യുമായി മികച്ച രീതിയിൽ പ്രവർത്തിക്കുന്നു. കൂടാതെ, എൽടിഒയിൽ നിന്ന് വ്യത്യസ്തമായി ഗ്രാഫൈറ്റ്, ഓപ്പൺഎംപി എന്നിവയ്ക്ക് ഒരു പ്രശ്നമുണ്ട്. എല്ലാ പ്രോഗ്രാമുകളും അതിൽ നിന്ന് പ്രയോജനം നേടുന്നില്ല, മാത്രമല്ല അതിൽ നിന്ന് പ്രയോജനം ലഭിക്കാത്തവയിലും പ്രകടനം കുറയുന്നു, അതിനാൽ ഈ സാഹചര്യത്തിൽ ഇത് കുറച്ച് പാക്കേജുകൾക്ക് മാത്രം ഉപയോഗിക്കുന്നതാണ് നല്ലത്.