많은 CPU 코어가있는 워크 스테이션에서 소프트웨어 패키지를 컴파일하려면 (예 : 12) 구성 단계는 실제 컴파일 단계보다 훨씬 오래 걸립니다 ./configure
. 테스트는 하나씩 수행 하고 다른 명령은 병렬로 make -j
실행 하기 때문 gcc
입니다.
나머지 11 개의 코어가 느리게 ./configure
완료 되기를 기다리는 대부분의 시간 동안 유휴 상태로 유지하는 것은 엄청난 자원 낭비라고 생각합니다 . 테스트를 순차적으로 수행해야하는 이유는 무엇입니까? 각 테스트는 서로 의존합니까? 나는 착각 할 수 있지만 대부분 독립 한 것처럼 보입니다.
더 중요한 것은 속도를 높일 수있는 방법이 ./configure
있습니까?
편집 : 상황을 설명하기 위해 GNU Coreutils 의 예가 있습니다.
cd /dev/shm
rm -rf coreutils-8.9
tar -xzf coreutils-8.9.tar.gz
cd coreutils-8.9
time ./configure
time make -j24
결과 :
# For `time ./configure`
real 4m39.662s
user 0m26.670s
sys 4m30.495s
# For `time make -j24`
real 0m42.085s
user 2m35.113s
sys 6m15.050s
로 로 coreutils-8.9 , ./configure
6 시간 이상 소요됩니다 make
. ./configure
CPU 시간을 적게 사용 하지만 ( "사용자"및 "sys"시간보기) 병렬화되지 않기 때문에 훨씬 더 오래 걸립니다 ( "실제"). 테스트를 몇 번 반복하고 (관련 파일이 메모리 캐시에있을 수 있음) 시간은 10 % 이내입니다.