performance - 컴파일러 - just in time 뜻




하이퍼 스레딩이 컴파일러 성능에 미치는 영향? (2)

Ubuntu 8.04 x86에서 coreutils-8.4 컴파일

HT를 사용하는 Intel Atom 1.6 GHz :

~/coreutils-8.4$ make clean > /dev/null
~/coreutils-8.4$ time make > /dev/null

real    2m33.375s
user    2m22.873s
sys     0m10.541s
~/coreutils-8.4$ make clean > /dev/null
~/coreutils-8.4$ time make -j2 > /dev/null

real    1m54.707s
user    3m26.121s
sys     0m13.821s
~/coreutils-8.4$ make clean > /dev/null
~/coreutils-8.4$ time make > /dev/null

real    2m33.372s
user    2m22.753s
sys     0m10.657s
~/coreutils-8.4$ make clean > /dev/null
~/coreutils-8.4$ time make -j2 > /dev/null

real    1m54.851s
user    3m26.145s
sys     0m13.685s
~/coreutils-8.4$

따라서 하이퍼 스레딩은 실행 시간을 75 %로 줄여 주므로 처리 능력이 33 % 향상됩니다 . (모든 것이 메모리 캐시에 있는지 확인하기 위해 두 번 실행했습니다.)

그리고 make -j2 만으로는 coreutils 컴파일 속도가 향상되지 않는다는 제어 실험이 있습니다 -8.4 우분투 8.04 x86에서

단일 코어 코어 2 쿼드 2.5GHz VM (HT 없음) :

~/coreutils-8.4$ make clean > /dev/null
~/coreutils-8.4$ time make > /dev/null

real    0m44.453s
user    0m38.870s
sys     0m5.500s
~/coreutils-8.4$ make clean > /dev/null
~/coreutils-8.4$ time make -j2 > /dev/null

real    0m45.131s
user    0m40.450s
sys     0m4.580s
~/coreutils-8.4$ make clean > /dev/null
~/coreutils-8.4$ time make > /dev/null

real    0m44.621s
user    0m39.090s
sys     0m5.340s
~/coreutils-8.4$ make clean > /dev/null
~/coreutils-8.4$ time make -j2 > /dev/null

real    0m45.165s
user    0m40.390s
sys     0m4.610s
~/coreutils-8.4$

가능한 한 빨리 커다란 프로젝트 (GCC 또는 리눅스 커널)를 컴파일하려고한다고 가정 해 보겠습니다. 하이퍼 스레딩 기능을 갖춘 CPU (예 : 인텔 코어 i7)가 하이퍼 스레딩을 사용하거나 사용하지 않도록 설정하면 더 빨리 컴파일러를 실행합니까? 이 문제를 테스트하기 위해 게시 된 벤치 마크가 있습니까?

하이퍼 스레딩에 대한 나의 이해는 각 코어가 두 개 이상의 프로세스에서 명령어를 선택할 수 있다는 것입니다. 기능 단위가 유휴 상태에 빠질 확률이 적기 때문에 일반적으로 코어가 더 효율적입니다. 그러나 동일한 코어에서 실행되는 프로세스가 캐시와 같은 리소스를 공유하고 서로 간섭 할 수 있으므로 성능상의 불이익이 발생할 수 있습니다. 성능이 실제로 증가하는지 여부는 작업 부하에 따라 다릅니다.

따라서 컴파일러 워크로드의 경우 성능이 향상됩니까? 그렇다면 얼마만큼?


컴파일러가 멀티 스레드로 작성되었는지 여부에 따라 다릅니다. 그렇다면 OS가 컴파일러의 스레드의 다른 부분을 다른 코어에 스케쥴 할 수 있기 때문에 하이퍼 스레딩이 약간 속도가 빠르다. 나는 컴파일이 일반적으로 집중적 인 처리보다 I / O 바인딩이 더 많다는 것을 Ken과 동의한다. 따라서 빠른 하드 드라이브는 100 개의 코어를 가진 신속한 프로세서보다 더 필요하다.







hyperthreading