Performance Tools를 실제 환경에서 사용하기

  • Post author:
  • Post category:
  • Post comments:0 Comments
  • Post last modified:October 10, 2007

이틀 정도 성능 측정에 관한 자료를 읽고 실제로 테스트를 수행해봤는데, 그 결과를 정리해본다.

Visual Studio 2005 또는 2008 팀 시스템엔 프로필러라 칭하는 성능 측정 도구가 포함되어 있다. 비주얼 스튜디오 상단에 Developer 메뉴를 보면 Performance Wizard와 Profiler란 항목이 있다. 사용하는 법은 아주 쉬워서 마법사가 제시하는 설명을 읽고 따라하면 된다. 이 글에서는 자질구레하게 HowTo, 따라하기 식의 내용을 다루진 않는다.

좌충우돌

내가 관심을 두었던 것은 실제 환경(Production Environment)에서 프로필러를 손쉽게 돌리려면 어떻게 해야 하는가?라는 문제였다. 개발은 32비트 윈도우 XP에서 하고, 실제 운영은 64비트 윈도우 서버 2003에서 하기 때문에 이 문제는 짚고 넘어가야 했다. 한데 윈도우 서버마다 비주얼 스튜디오를 깔자니 부담스러웠다. 한두 대 정도만 샘플로 잡아서 설치해도 되지만, 경우에 따라선 특정 서버만 문제가 돼서 빨리 원인 분석을 할 필요가 있을 수도 있다.

첫 번째 시도는 성능 분석 도구만 따로 빼서 돌려보는 방법이었다. 테스트를 하려면 팀 시스템이 필요했는데, 라이센스 문제가 있어서 일단 Visual Studio 2008 Team System Beta 2을 설치했다. 그러고 나서 C:\Program Files\Microsoft Visual Studio 9.0\Team Tools\Performance Tools 폴더만 따로 복사해서 옆 자리로 가서 돌려보았다. 옆 자리엔 Visual Studio 2005 Professional만 설치되어 있었는데, Performance Tools를 복사해서 돌려보니 잘 작동했다.

이제는 64비트 윈도우 2003 서버에서 돌려볼 차례였다. 옆 자리와 마찬가지로 서버엔 VS 2005 Professional이 설치되어 있는 상황이었다. 한데 서버에선 성능 측정 도구가 작동하지 않았다. 시스템이 지정된 프로그램을 실행할 수 없습니다.란 도움이 안 되는 메시지만 나올 뿐이었다. 혹시나 해서 VS 2008을 설치했더니 이번엔 작동했다. 뭐가 문제인지 한참 고민하다가 성능 측정 명령어인 VSPerfCmd.exe파일이 DevMgr.dll을 찾지 못한다는 걸 알았다. DevMgr.dll 파일이 C:\Windows\System32\에 있었지만, 의존성 오류가 발생하는 듯 하여 Performance Tools 폴더에 DevMgr.dll 파일을 복사했더니 제대로 작동했다.

이제는 Visual Studio가 전혀 설치 안 된 깨끗한 환경에서 성능 측정 도구를 돌려볼 차례였다. 이번에는 DevMgr.Dll 파일을 Performance Tools 폴더에 복사해놓은 상태였지만, 시스템이 지정된 프로그램을 실행할 수 없습니다.란 메시지가 또 나왔다. 지난 번에 이미 VSPerfCmd.exe가 사용하는 DLL을 눈여겨 봤기 때문에 해결 방법이 명백했다. Visual Studio가 깔려 있는 컴퓨터에서 C:\Windows\WixSxS\ 폴더를 그래로 복사해오니 제대로 작동했다.

마지막으로 Visual Studio 2005 Team System에 포함된 Performance Tools를 구해서 64비트 윈도우 서버에서 돌려봤다. 하지만 작동하지 않았다. Error VSP1460 : Profiling WOW64 processes is not supported by this version of the profiling tools 같은 메시지를 봐선, 64비트 윈도우를 지원 안 하는 듯 하다. 테스트 대상인 바이너리는 64비트 윈도우에서 32비트 컴파일한 것이었다. 어쩌면 Visual Studio 2005를 64비트 윈도우에 설치해서 Performance Tools를 돌려보면 작동할지도 모르지만, 이는 테스트해보지 않았다. 실제로 Visual Studio 2008의 경우엔, 64비트 서버에선 Performance Tools\x64란 폴더가 생긴다. 하지만 32비트 윈도우에서 구한 VS 2008의 성능 측정 도구인 경우엔 64비트 윈도우에서 32비트 컴파일한 바이너리를 제대로 프로파일링 해냈다. 요컨대 VS 2008은 좀더 64비트 친화적이다.

정리

테스트 과정을 길게 늘어놓았지만 결론은 간단하다.

  1. 우선 64비트 윈도우에 Visual Studio 2008 Team System을 설치한다.

  2. C:\Program Files\Microsoft Visual Studio 9.0\Team Tools\Performance Tools를 별도로 복사한다. 여기선 C:\Performance Tools라고 하겠다.

  3. C:\Windows\DevMgr.dll 파일을 C:\Performance Tools에 복사해 넣는다.

  4. C:\Windows\WinSxS\를 별도로 복사해 놓는다. 여기선 C:\WinSxS라고 하겠다.

  5. C:\Performance ToolsC:\WinSxS을 배포하면 된다.

문제 해결에 도움을 준 도구

  • Depenency Walker

    Visual Studio와 함께 배포된다. 물론 웹 사이트에서 별도로 내려받을 수도 있다. 이 도구를 사용하면 DLL 의존성을 볼 수 있는데, 시스템에서 찾지 못하는 DLL을 별도로 보여주기 때문에 이 문제를 해결하는 데 가장 큰 도움이 됐다.

  • Process explorer

    이 도구는 Dependency Walker와 달리 실행 중인 프로세스의 DLL 의존성만 볼 수 있다. 실제로 사용하는 DLL을 볼 수 있지만, 이번엔 크게 도움이 되진 못했다.

관련 자료

Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
0 0 votes
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments