LTO : 그것이 무엇이며 젠투에서 사용하는 방법

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 패키지에서 파일에 이름 (전체 이름, firefox 대신 www-client / firefox) 만 입력하면됩니다. 패키지.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"

그리고 파일에서 패키지.env 컴파일이 실패한 패키지를 넣을 것입니다. LTO. 그 여기 내 패키지.env (내가 사용하는 놀토.conf 대신 비 LTO.conf).

우리는 또한 추가해야합니다 LTO USE 변수 make.conf, 이것은 개발자가 젠투 일부 패키지에서이 최적화를 사용하기위한 선택적 패치를 (천천히) 추가하고 있습니다.

이 작업이 완료되면 모든 시스템 패키지를 다시 컴파일 해 보겠습니다.

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

–keep-going을 사용하여 운반 오류를 무시하고 &> 모든 버그의 출력을 errors라는 파일로 리디렉션하고이 파일을 사용하여 컴파일에 실패한 패키지를 확인하고 목록에 추가합니다. 패키지.env.

&>는 모든 출력을 빼앗길 것입니다. 프로세스의 출력을보고 싶다면 다음 명령을 (루트로) 사용해야합니다 :

tail -f /var/log/emerge.log

그리고 그게 다야, 의심을 남기지 않았 으면 좋겠다. Openmp 및 / 또는 석묵.


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.

  1.   MSX

    젠투, 으 ...
    중요한 것은 흑연입니다!

    1.    x11tete11x

      어리 석고 감각적 인 Graphite xD, xD 시스템을 파열시키는 비정상적인 것, 마지막으로 사용했을 때 "notify-send KDE <50"을 3 번 반복하여 a를 만들기에 충분했습니다. 50 번, 환경은 지옥으로 파열 될 것입니다.

    2.    승용차

      나는 이미 내가 여전히 격려를 받고 Graphite로 만들었다 고 말했습니다. 그러나 어쨌든 Graphite (및 기타 최적화)는 LTO에서 가장 잘 작동합니다. 또한 LTO와 달리 Graphite 및 OpenMP에는 문제가 있습니다. 모든 프로그램이 혜택을받는 것은 아니며 혜택이없는 프로그램에서는 성능이 저하되므로이 경우 몇 가지 패키지에만 사용하는 것이 좋습니다.