컴퓨터활용/티맥스

HP 장비의 make 시간이 IBM 장비 보다 오래 걸리는 현상

멜번초이 2008. 5. 22. 17:02
반응형


HP 장비를 개발장비로 사용하고 있는데 dbio 는 60여초, 매퍼는 40여초 정도의 컴파일 시간이 걸리고 있습니다.
 
IBM 장비를 사용하고 있는 프로젝트로서 3.0을 사용하고 있는 S협, 4.0 사용중인 D증권, H은행에서는 컴파일 속도 때문에 문제된 경우는 없다고 합니다. ( 전화문의 )
그러나 HP 장비를 사용하고 있는 S은행의 경우 여기 경우와 같이  DBIO를 컴파일 하는데 1분 이상이 걸린다는 것을 들었습니다.( 전화문의 )
 
make 시 시간이 오래 걸리는 것은 HP 장비의 일반적인 현상으로 보입니다.
 
다음은 프로젝트에 투입되어 있는 HP 기술자의 현재까지의 진행상황에 대한 답변 내용인데요.
 
[ 원 본 글 ]====================================================================================
* 발 신 자 : 류익상 차장/한국HP/인프라
* 발신시각 : 2008-05-22 09:23:13

안녕하세요? 
컴파일 속도 지연에 대한 진행상황을 업데이트정보입니다.
<진행상황>
-HP RC에 환경구성 후 테스트 프로그램으로 상황 재연 테스트(파일 120,000개 생성후)==> 성능지연, 문제파악
         -컴파일 옵션 변경에 의한 개선 테스트==> 효과 없음
         -컴파일 과정의 분석에 의한 개선부분을 체크 테스트 ==> 지연원인 파악 및 화일시스템 변경테스트 효과없음
         -WTEC에 의해 개선부분 진행중 ==> 현재 개선부분에 대한 문의중

 
<5월 21일 HP RC 김병수, 정영훈에 의한 테스트 및 진행과정의 1차 답변>
================================================================================================
make 유틸리티가 실행 되면서 내부적으로 opendir(), readdir() 함수를 통해 현재 디렉터리의 내용(directory entry)을 읽으면서 시간 지연이 있는 것으로 판단됩니다.
10:39:24 {3675851} <0.000011> open(".", O_RDONLY|0x200000, 0)
................................................ = 5
10:39:24 {3675851} <0.000006> fstat(5, 0x7fffd380)
........................................................... = 0
10:39:24 {3675851} <0.000005> fcntl(5, F_SETFD, 0)
........................................................... = 0
10:39:24 {3675851} <0.000052> getdents(5, 0x40450ec0, 8192)
.................................................. = 7960
10:39:24 {3675851} <0.000036> getdents(5, 0x40450ec0, 8192)
.................................................. = 7952
10:39:24 {3675851} <0.000037> getdents(5, 0x40450ec0, 8192)
.................................................. = 7728
10:39:24 {3675851} <0.000025> getdents(5, 0x40450ec0, 8192)
.................................................. = 7872
...
위 부분이 "." directory (현재 directory)를 open 한 후 getdents()를 계속 호출하는 부분인데 이 부분은 아래와 같이 directory open 후에 readdir() 이 호출되는 과정입니다.
    struct dirent *d;
    ....
    if ((dp = opendir(".")) == NULL) {
        perror(".");
        exit(1);
    }
   ...
    while ((d = readdir(dp)) != NULL) {
        ....
이렇게 가져온 dirent 구조체를 통해 파일 정보를 얻을 수 있습니다.
 120,000 개 정도 되는 파일을 prealloc 으로 실제 size를 줘서 생성한 후 테스트를 해 보면 make 시간이 상당히 지연되는 것을 확인했습니다. HP-UX 에서 이 시간 지연 문제는 make 유틸리티의 옵션 조정 등 으로는 해결하기 어렵다고 판단됩니다.
화일 시스템을 변경하여 HFS 파일 시스템에서도 테스트를 해보았으나 성능 향상은 없었습니다.
현재 까지의 테스트 결과에 의해 결과는 Compile 시의 작업 디렉터리에 파일을 적게 두는 방법이 개선의 방법입니다.
===================================================================================
감사합니다.
류익상

반응형