반응형

CentOS 환경에서 QT와 CPP를 이용하여 프로젝트를 개발하고 있다. 프로그램의 규모가 커진 만큼 프로젝트를 빌드하기 위해 많은 시간이 소요되며, 빌드 과정중에 CPU 및 Memory 소모량 역시 증가했다.

또한 각 프로그램이 구동되기 위해 필요한 프로그램 들도 Memory 점유율이 높은 상태여서 개발 PC의 Memory가 항상 부족한 상태다.

이러한 상황에서 테스트 및 기능 수정 도중 빌드를 시작하면 시스템이 다운되고, 재부팅을 해야 하는 등의 문제가 많은 상태다.

빌드에 소요되는 시간 및 메모리 점유율을 낮추기 위해 윈도우에서 많이 사용되는 IncrediBuild와 같은 솔루션의 리눅스판을 찾아 보았고, distcc라는 훌륭한 프로그램을 발견했다.

해당 프로그램에 대한 설명은 주로 cmake와 관련되어 설명이 되어있고, QT Creator에서 바로 사용하는 방법에 대한 자료를 찾지 못하였고, 많은 시행착오 끝에 정리된 과정을 글로 남기기로 하였다.

본 게시글은 CentOS 7.X 환경에 QTCreator와 Development Tool이 설치되어있다고 가정하고 작성하였다.

0. Distcc 정의

Client : 빌드 요청을 하는 개발PC

Server : 빌드 요청을 수신하여 빌드를 수행하는 PC

1. Distcc 설치하기.

아래의 명령어를 통해 Distcc를 설치한다.

sudo yum install "distcc*"

위의 명령을 통해 distcc와 관련된 모든 프로그램(distcc, distcc server, distcc monitor)을 설치해 준다.

2. Server 설정하기

먼저, /etc/sysconfig/distccd를 수정하여 허용할 host 및 core수 등을 설정한다.

### See distcc(1) manual page for more information on these options.
###

USER="distcc"

### Set this if don't want distccd to use gcc or g++ by accident.
#DISTCCPATH="/usr/lib/distcc/bin"
OPTIONS="--nice (우선순위) --jobs (코어수) --allow 192.168.0.0/24"

위의 예시에서 --allow 옵션이 요청을 허용할 host의 ip범위이다. 위의 예제는 192.168.0.X 대역의 모든 요청을 허용한다는 의미다.

만일 단일 IP만 허용하고 싶으면 --allow IP로 설정하면 되며, 여러개의 IP를 설정하고 싶으면 --allow IP를 여러번 반복 입력해주면 된다.

--port 포트번호 옵션을 추가해 주면 distcc의 포트 번호도 변경 가능하다.

설정이 완료되면 데몬을 추가하고 실행해 준다.

sudo systemctl enable distccd
sudo systemctl start distccd

위의 명령어 까지 실행하면, Distcc 서버의 설정은 완료되었다.

distcc서버 역할을 할 pc가 많을 경우 여러 대의 서버에 위의 설정을 추가해주면 된다.

3. Client 설정하기

client는 빌드 요청을 할 server의 목록을 /etrc/distcc/hosts 파일에 서버마다 하나의 라인으로 HOST:PORT/JOB 형식으로 추가하면 된다.

아래 예시는 다음과 같은 시나리오에 대한 예시다.

  • 서버 종류
    • 192.168.0.1
    • 192.168.0.2
    • 192.168.0.3
      • 포트 번호 재설정 : 1234
    • local PC는 빌드에 사용하지 않음
  • 각 서버에 Job을 10개씩 할당
192.168.0.1/10
192.168.0.2/10
192.168.0.3:1234/10

위와 같이 설정이 완료되면 distcc --show-hosts 명령어를 통해 설정이 잘 되었는지 확인이 가능하다.

4. QT Creator 설정

QT Creator에서 간단한 설정을 통해 distcc를 이용한 빌드 수행이 가능하다.

먼저, 현재 개발중인 프로젝트를 불러온 뒤, 좌측의 Projects 탭으로 이동한 뒤 Build & Run 하단의 Build 를 선택한다.

Build Steps의 Make에 Details를 클릭한다.

그럼 위와 같은 부분이 확장되며 나타나는데, Make argumentws: 항목에

-j (Job수) CXX="distcc g++" CC="distcc gcc" 를 입력한다.

그 후 빌드를 수행하면 distcc를 이용한 분산 빌드가 수행된다.

5. Distcc 작동 확인

과정 1 에서 설치한 distcc monitor를 이용하여 빌드 상태 확인이 가능하다.

distccmon-gnome 명령어를 이용하여 모니터 프로그램을 실행한다.

그 후 빌드를 수행한다.

(파일 및 IP일부는 제거하였습니다.)

빌드를 수행하는 순간, 연결된 각 host의 build 상태가 표기된다.


distcc를 사용해본 결과 전체 rebuild 속도가 상당히 빨라졌다. 또한 build에 리소스를 많이 사용하여 시스템이 멈추는 현상도 감소했다.

반응형

댓글을 달아 주세요