게임 서버의 로직을 검사하고 부하를 걸어 성능 테스트를 할 프로그램이 필요하다. 이러한 애플리케이션에는 당연히 수행 시간을 측정하는 기능이 들어가야 해서 관련 자료를 훑어보고 정리해봤다.
-
프로그램의 시간(성능)측정
이 글에는 시간을 측정하는 다양한 방법이 있다. VS.NET의 Profile 기능은 테스트 클라이언트용으로는 부적합하다. 저녁마다 자동으로 테스트를 수행해야 하는데 VS.NET의 Profile 기능을 애플리케이션에 넣을(Embed) 방법이 없다.
더군다나 몇몇 테스트 케이스의 평균 수행 시간 정도만 알아내면 되기 때문에 전체 애플리케이션의 수행 속도를 측정할 이유가 없다. 오히려 지금 같은 상황에선 실제 성능 측정할 대상은 원격에 있는 서버인 반면, 성능 측정이 이뤄지는 장소는 로컬에 있는 클라이언트가 되기 때문에 VS.NET의 프로필 기능은 고려 대상이 아니다.
-
Game Timing and Multicore Processors
보통 성능 측정을 할 때는 RDTSC나 QPerformanceTimer를 주로 사용한다. 해상도 자체는 RDTSC가 나은 듯 하다. 하지만 멀티 프로세서 또는 멀티 코어 환경에선 정확한 데이터가 나오지 않는 문제가 있어 QPerformanceTimer를 쓸 때가 많다. 특히 RDTSC는 64비트 환경에선 작동하지 않는다. 64비트 서버를 운영할 입장이라면 난감한 문제다.
실제 시간 측정용 코드를 작성할 때 위의 두 예제가 큰 도움이 됐다. 첫 번째 예제가 초보자가 보기 좋은 작은 코드 조각이라면, 두 번째 예제는 중급자 수준이다. 손수 만든 간이 프로필러를 공개했는데, 안타깝게도 VS 2005에선 컴파일 관련 오류가 나서 고쳐서 돌렸다. MFC 쪽 명세가 바뀐 부분이 있었던 걸로 기억한다.