2011-03-04 5 views
2

나는 펄 프로그램을 둘러싼 단순한 래퍼 인 웹 스크립트를 가지고있다.exec() 호출의 오버 헤드?

#!/bin/sh 
source ~/.myinit // pull in some configurations like [PRIVATE_DIR] 
exec [PRIVATE_DIR]/myprog.pl 

메인 프로그램 (myprog.pl)이 다른 구성을 가진 다른 컴퓨터에서 실행되기 때문에 코드를 더 잘 구분하기 만하면된다. 모드가 있으며 모든 설치에 대해 업데이트하지 않아도됩니다. 그러나 나는 효율성을 위해 청결을 기꺼이 희생하려고한다.

그래서이 엑스트라 sh exec() 호출은 웹 서버에서 꽤 자주 (한 번에 1000 명 이상의 사용자가 있음) 고려할 수있는 무시할 수없는 오버 헤드를 추가합니까? 사람들이 여분의 fork/exec 호출을하지 않아도되는 것을 피하기 위해 httpd에 프로그램을 삽입하는 데 많은 시간이 걸렸다는 것을 알고 있기 때문에 나는 묻는다. 필자의 가정은 이것이 호출되는 프로그램의 오버 헤드 (예 : mod_perl이 매우 느린 펄 시작을 우회 함) 때문이며 자체 호출 프로세스가 아닙니다. 그것이 정확할까요?

이 벤치 마크를 시도했지만 차이가 있는지 확인해야하는 해상도를 얻을 수 없습니다. 그것에 대한 조언도 감사하겠습니다.

고마워!

+0

'overhead of exec() call?'에 대한 답변에 대한 의견이 있으십니까? ;-)? – shellter

답변

0

시험을보십시오.

생산 환경과 별개의 테스트 환경이 있다고 가정합니다.

는 (이 조금 모호하고, 실제 테스터이 개선하는 방법을 증폭 할 수있을 것입니다) 같은 PARAM를 사용하여 꽉 루프에서 현재 2 레벨 디자인을 실행

  • 을 10 만명? 1,000,000? ...

  • 그런 다음 동일한 패러미터를 사용하여 perl이 직접 호출되도록 코드를 '수정'하고 같은 수만큼 반복합니다.

  • 두 실행에 대한 성능 통계를 캡처하십시오. 둘 사이의 차이는 추가 통화 비용 (대략)이어야합니다.

이 밖으로 작동하는 경우,이 :-)에 결과를보고 감사하겠습니다

나는이 희망

(태그 = 벤치 마크에 비해 태그 = 테스트를 위해 더 많은 게시물이 있습니다) 도움이됩니다.

P. 당신이 새로운 사용자로 보일 때, 당신이 그것을 받아 들일 수있는 것으로 표시하는 것을 기억하는 데 도움이되는 대답을 얻었거나 유용한 답으로 + (또는 -)를 주면 도움이됩니다.

0

perl 프로그램이 쉘 스크립트의 일부 envars에 대해서는 Have perl execute shellscript & take over env vars에 대한 응답을 참조하십시오. 이것을 사용하면 exec 오버 헤드에 대한 모든 걱정을 덜어 줄 수있는 exec가 필요하지 않습니다. :-)