게임 프로파일러, 도입 전에 확인할 성능 계측 조건
평균 60fps가 찍힌다는 이유만으로 성능 준비가 끝난 것은 아닙니다. 한 프레임이 갑자기 40ms까지 늘어나는 스파이크, 특정 기기에서만 발생하는 메모리 압박, 원인을 알 수 없는 GPU 대기처럼 실제 플레이를 망치는 문제는 평균값 뒤에 숨어 있기 때문입니다. 게임 프로파일러를 고르기 전에는 도구의 유명세보다 우리 게임에서 어떤 병목을 재현하고 추적할 수 있는지부터 확인해야 합니다.
아래 점검표는 상용 프로파일러 구매, 엔진 내장 도구 사용, 자체 계측 코드 개발을 결정할 때 그대로 적용할 수 있습니다. 개발 중인 프로젝트 하나를 열어 놓고 각 항목에 답해 보면 필요한 기능과 불필요한 비용이 빠르게 구분됩니다.
1. 프레임 목표를 숫자로 먼저 고정합니다
평균 FPS보다 프레임 시간 예산이 중요합니다
프로파일링은 목표가 구체적일수록 강해집니다. 60fps 게임이라면 한 프레임에 사용할 수 있는 시간은 약 16.67ms이며, 30fps라면 약 33.33ms입니다. 하지만 이 시간을 CPU와 GPU가 각각 전부 사용할 수 있다고 생각하면 안 됩니다. 렌더링 제출, 게임 로직, 물리, 애니메이션, 오디오, 운영체제 작업이 서로 영향을 주므로 시스템별 예산과 여유 시간을 따로 정해야 합니다.
예를 들어 CPU 게임 스레드 7ms, 렌더 스레드 4ms, GPU 13ms를 목표로 잡았다고 가정해 보겠습니다. 이때 선택할 게임 프로파일러는 단순 FPS 표시가 아니라 스레드별 실행 시간, 프레임 간 변동, CPU와 GPU의 동기화 지점을 함께 보여 줘야 합니다. 120Hz 대응까지 계획한다면 약 8.33ms라는 훨씬 좁은 프레임 시간 안에서 같은 판단을 다시 내려야 합니다.
- 목표 플랫폼: PC, 콘솔, 모바일 중 실제 출시 대상을 적습니다.
- 목표 프레임: 30·60·90·120fps 가운데 최소 보장값을 정합니다.
- 하위 백분위: 평균값뿐 아니라 느린 프레임 구간을 별도로 확인합니다.
- 허용 스파이크: 로딩, 전투 시작, 오브젝트 생성 때 허용할 최대 시간을 기록합니다.
- 전력 조건: 모바일은 지속 성능과 발열 제한까지 목표에 포함합니다.
프로파일러를 켠 뒤 목표를 찾지 마세요. 먼저 프레임 예산을 정해야 측정 결과가 ‘빠르다’가 아니라 ‘기준을 통과했다’로 바뀝니다.
2. 실제 출시 기기에서 캡처할 수 있는지 확인합니다
에디터 측정값만으로 구매를 결정하지 않습니다
개발 PC의 에디터에서 발생한 병목과 출시 빌드의 병목은 다를 수 있습니다. 에디터 UI, 디버그 검증, 로그 출력이 시간을 소비하는 반면, 실제 기기에서는 메모리 대역폭과 발열, 드라이버, 백그라운드 프로세스가 더 큰 영향을 줍니다. 따라서 구매 후보가 개발 빌드와 배포에 가까운 빌드 모두에서 원격 캡처를 지원하는지 확인해야 합니다.
특히 모바일 게임은 짧은 벤치마크가 양호해도 15분 뒤 열 스로틀링으로 프레임이 떨어질 수 있습니다. 콘솔은 플랫폼별 권한과 전용 도구 연동 여부가 중요하며, PC는 서로 다른 GPU 제조사와 드라이버 환경을 다뤄야 합니다. ‘지원 플랫폼’이라는 제품 설명만 읽지 말고, 팀이 보유한 대표 기기에서 연결·캡처·파일 저장·재열기까지 직접 시험해 보세요.
- 최저 사양, 권장 사양, 고성능 사양에서 동일한 플레이 구간을 실행합니다.
- USB, 유선 네트워크, 무선 네트워크 환경에서 캡처 안정성을 비교합니다.
- 프로파일러 연결 전후의 프레임 시간 차이를 측정해 계측 오버헤드를 확인합니다.
- 10분 이상 연속 캡처했을 때 파일 크기와 메모리 사용량을 기록합니다.
- 기기 연결이 끊긴 뒤 세션을 복구하거나 부분 저장할 수 있는지 점검합니다.
무료 체험판이 있다면 화려한 데모 장면보다 현재 개발 중인 가장 무거운 스테이지를 사용해야 합니다. 팀의 네트워크 보안 정책이나 콘솔 개발 환경 때문에 원격 연결이 차단될 가능성도 구매 전에 확인해야 예상 밖의 도입 지연을 막을 수 있습니다.
3. CPU 타임라인이 호출 관계까지 설명하는지 봅니다
느린 함수 이름보다 느려진 경로가 필요합니다
CPU 프로파일링 화면에는 함수별 시간이 길게 표시되지만, 그것만으로 수정 지점을 곧바로 찾을 수 있는 것은 아닙니다. 같은 함수도 누가 호출했는지, 몇 번 호출됐는지, 작업이 어느 스레드에서 기다렸는지에 따라 해결책이 달라집니다. 선택할 도구가 샘플링 프로파일, 계측 기반 타임라인, 호출 트리, 플레임 그래프 가운데 무엇을 제공하는지 확인하세요.
가령 적 AI 갱신에 4ms가 걸렸다고 해도 개별 판단이 비싼 경우와 같은 탐색 함수를 수백 번 중복 호출한 경우는 전혀 다른 문제입니다. 전자는 알고리즘이나 데이터 구조를 바꿔야 하고, 후자는 갱신 주기 분산이나 결과 캐싱이 효과적입니다. 잡 시스템을 사용한다면 작업 실행 시간뿐 아니라 큐 대기, 워커 유휴 시간, 메인 스레드 합류 지점까지 보여 주는 도구가 유리합니다.
| 확인 화면 | 찾을 수 있는 문제 | 구매 전 질문 |
|---|---|---|
| 호출 트리 | 중복 호출과 상위 호출자 | 포함 시간과 자체 시간을 분리하는가? |
| 스레드 타임라인 | 락, 대기, 불균형 | 컨텍스트 전환과 작업 이름이 보이는가? |
| 프레임 비교 | 간헐적 스파이크 | 빠른 프레임과 느린 프레임을 비교할 수 있는가? |
| 사용자 마커 | 게임 시스템별 비용 | C++·스크립트 양쪽에서 마커를 넣을 수 있는가? |
테스트할 때는 전투 개시, 대규모 스폰, 세이브, 맵 스트리밍처럼 작업량이 급변하는 순간에 사용자 마커를 심어 보세요. 코드 수정 후 캡처에서 마커가 검색되고 계층적으로 묶이는지까지 확인해야 팀이 실제로 활용할 수 있습니다.
4. GPU 병목을 드로우콜 밖까지 추적합니다
렌더 패스와 하드웨어 카운터를 함께 점검합니다
드로우콜 개수만 줄이면 GPU 성능이 좋아진다는 설명은 충분하지 않습니다. 픽셀 오버드로, 대역폭, 셰이더 분기, 텍스처 샘플링, 렌더 타깃 전환, 동기화 배리어처럼 병목의 원인은 다양합니다. 게임 프로파일러가 렌더 패스별 GPU 시간과 개별 이벤트, 리소스 상태 전환을 얼마나 정확히 연결해 주는지 살펴봐야 합니다.
예를 들어 반투명 이펙트가 많은 전투에서 GPU 시간이 늘었다면 파티클 개수만 의심하기 쉽습니다. 하지만 낮은 해상도에서도 시간이 거의 줄지 않으면 픽셀 처리보다 정점 처리나 CPU 제출이 문제일 수 있고, 해상도를 낮췄을 때 크게 개선된다면 픽셀 셰이딩 또는 대역폭을 우선 조사할 근거가 생깁니다. 이처럼 설정을 한 번에 하나씩 바꾸고 캡처를 비교할 수 있어야 결과를 설명할 수 있습니다.
- GPU 이벤트가 게임의 패스 이름과 일치하는지 확인합니다.
- 셰이더별 실행 시간과 컴파일된 명령 수를 볼 수 있는지 점검합니다.
- 텍스처, 버퍼, 렌더 타깃의 크기와 형식을 추적합니다.
- 오버드로 및 파이프라인 통계 같은 시각화 모드를 시험합니다.
- DirectX, Vulkan, Metal 등 프로젝트 API를 실제로 지원하는지 확인합니다.
- 프레임 디버거 캡처가 게임 상태나 타이밍을 과도하게 바꾸는지 비교합니다.
그래픽 디버거와 일반 게임 프로파일러가 별도 제품이라면 라이선스 비용뿐 아니라 캡처를 오가는 작업 시간도 계산해야 합니다. 업계 발표와 렌더링 사례를 찾을 때는 GDC의 배경과 성격을 함께 살펴보면 자료의 맥락을 이해하는 데 도움이 됩니다.
5. 메모리 누수와 순간 할당을 구분할 수 있어야 합니다
총사용량 그래프만으로는 원인이 보이지 않습니다
게임 메모리는 실행 시간이 길어질수록 조금씩 증가하는 누수만 문제가 아닙니다. 전투 진입 때 발생하는 대량 임시 할당, 파편화로 인한 큰 블록 확보 실패, 사용이 끝났지만 참조가 남은 에셋도 크래시와 끊김을 만듭니다. 도구가 할당 시점, 호출 스택, 객체 유형, 수명, 메모리 영역을 기록하는지 확인해야 합니다.
가장 실용적인 시험은 동일한 스테이지에 세 번 진입하고 빠져나오는 것입니다. 각 반복이 끝난 뒤 기준 지점의 스냅샷을 저장해 잔존 객체를 비교하세요. 첫 진입에서 캐시가 늘어난 뒤 안정되는 것은 의도된 동작일 수 있지만, 매번 같은 종류의 텍스처와 게임 객체가 누적된다면 해제 경로나 참조 관계를 조사해야 합니다.
- 기준선 저장: 타이틀 화면에서 첫 메모리 스냅샷을 만듭니다.
- 부하 재현: 가장 무거운 전투와 UI 전환을 정해진 순서로 실행합니다.
- 반복 비교: 동일 시나리오를 여러 번 실행해 계속 증가하는 항목만 필터링합니다.
- 호출 위치 확인: 네이티브와 관리형 메모리의 할당 스택이 모두 표시되는지 봅니다.
- 실기기 검증: 운영체제 메모리 경고와 앱 내부 수치가 연결되는지 확인합니다.
스냅샷 생성에 수십 초가 걸리거나 수 기가바이트의 파일이 만들어질 수도 있으므로 저장 공간과 분석 PC 사양도 도입 비용에 포함해야 합니다. 심볼 파일이 없을 때 호출 스택이 의미 없는 주소로만 나타나는지, 최적화 빌드에서도 최소한의 출처 정보를 유지할 수 있는지도 중요한 구매 전 확인사항입니다.
6. 팀 전체가 반복 측정할 운영 비용을 계산합니다
라이선스 가격보다 자동화와 공유 방식이 중요합니다
프로파일러 한 좌석의 가격만 보면 실제 비용을 놓치기 쉽습니다. 캡처를 생성할 수 있는 인원, 분석 전용 라이선스의 유무, 빌드 머신 설치 조건, 버전 업그레이드 정책, 오프라인 환경 사용 가능 여부가 총비용을 바꿉니다. 아티스트와 기획자도 특정 장면의 성능 변화를 확인해야 한다면 개발자 전용 UI만 제공하는 도구는 협업 병목이 될 수 있습니다.
성능 기준은 개발팀의 기술 목표인 동시에 콘텐츠 범위를 결정하는 조건입니다. 레벨 밀도나 적 수, 이펙트 예산을 합의하려면 역할별 언어를 연결해야 하며, 게임 기획자의 역할을 참고하면 왜 수치를 비개발 직군도 이해할 형태로 공유해야 하는지 파악하기 쉽습니다. 캡처 하나를 전달받은 동료가 별도 유료 좌석 없이 열람하고 주석을 남길 수 있는지 시험해 보세요.
- 프로젝트 인원과 실제 분석 인원을 나눠 필요한 좌석 수를 계산합니다.
- 캡처 파일을 버전 관리에 넣지 않고 보관할 저장소와 만료 정책을 정합니다.
- 명령줄 캡처, CSV·JSON 내보내기, CI 연동 기능을 확인합니다.
- 엔진 업데이트 뒤 플러그인 호환성이 깨졌을 때 지원 절차를 확인합니다.
- 민감한 미출시 리소스가 캡처 파일에 포함되는지 점검합니다.
- 도입 교육, 사내 문서화, 재현 장면 제작에 필요한 시간을 비용으로 환산합니다.
예산을 기능별 우선순위와 연결하려면 계획예산 제도의 개념처럼 목표와 지출을 함께 보는 방식도 참고할 만합니다. 무료 도구로 요구사항의 80%를 해결할 수 있다면 남은 20%가 출시 위험을 얼마나 줄이는지 수치로 설명할 때 상용 도입 판단이 선명해집니다.
7. 프로파일러가 게임을 느리게 만들면 무엇을 믿어야 할까요
계측 오버헤드를 재고 교차 검증합니다
사용자가 가장 자주 묻는 질문은 “프로파일러를 켰더니 프레임이 떨어지는데 이 결과를 믿어도 되나요?”입니다. 답은 절대 시간은 조심해서 보고, 반복되는 상대적 패턴은 교차 검증하면 활용할 수 있다입니다. 함수 호출마다 정밀 마커를 기록하거나 모든 메모리 할당 스택을 저장하면 계측 자체가 캐시와 스레드 타이밍을 바꿀 수 있습니다.
먼저 프로파일러를 끈 기준 빌드, 경량 샘플링만 켠 빌드, 상세 계측을 켠 빌드를 같은 기기와 같은 플레이 입력으로 각각 세 번 이상 실행하세요. 상세 계측에서만 특정 락 경합이 나타난다면 관측 효과일 가능성을 의심해야 합니다. 반대로 세 모드 모두 같은 장면에서 프레임 스파이크가 반복되고 병목 함수의 순위도 유지된다면 수정 우선순위를 정할 충분한 근거가 됩니다.
- 프레임 제한, 수직 동기화, 동적 해상도 조건을 모든 실험에서 동일하게 고정합니다.
- 카메라 경로와 입력을 리플레이로 재현해 콘텐츠 차이를 줄입니다.
- 첫 실행의 셰이더 컴파일과 캐시 워밍업 구간은 별도로 표시합니다.
- CPU 타임라인 결과를 운영체제 수준 샘플러나 엔진 통계와 대조합니다.
- GPU 결과는 해상도 변경, 패스 비활성화 같은 통제 실험으로 확인합니다.
- 수정 전후에는 평균뿐 아니라 중앙값과 느린 프레임 분포를 함께 비교합니다.
구매 전 마지막 시험에서는 후보 도구 두 개로 동일한 병목을 찾아 보세요. 숫자가 완전히 같을 필요는 없지만 어느 스레드와 렌더 패스가 지배적인지에 대한 설명은 비슷해야 합니다. 도구가 제시하는 한 번의 수치보다 재현 가능한 캡처 절차와 팀이 합의한 성능 예산이 더 오래가는 자산입니다.

- 다음글무료 게임 백엔드가 유료 서비스보다 더 비싸지는 순간 26.09.12
등록된 댓글이 없습니다.
