프로파일링 툴 맛보기

Like Big·2023년 11월 17일

Unity Profier

  • windows -> analysis -> profier
  • 에디터에서 프로파일링 하는것보다 실제 기기에 연결해서 프로파일링 하는게 중요
    1)Direct Mode 선택, 2) file -> build settings에서 development build 를 선택(다만 출시에선 끄기)
  • 프로파일러 마커(구글링 해서 사용법 참고) : 마커 추가하여 내가 만든 코드도 커스텀하게 볼수 있다. line by line 프로파일링 가능. xcode로 보면 훨씬더 구체적으로 볼 수 있음.
  • windows -> analysis -> propile analyzer 를 띄워서 프로파일 캡쳐한상태에서 Pull data를 하게 되면 캡쳐데이터를 얻오게 되는데 compare 선택하여 각각 시점을 비교할 수 있음
  • UI용 프레임 디버거와 비슷하다. batch(ex 아틀라스로 드로우콜 줄이는 해결법 가능) 현황을 볼 수 있으며 일반 프레임디버거는 UI를 상세하게 못보는데 이건 가능
  • UI도 너무 많이 나오면 성능 저하이므로 오브젝트 pool을 사용하자

Frame Debug

  • 한 프레임을 렌더링하는 드로우콜을 디버깅하는 툴으로 성능이 측정이 되지는 않음. xcode라던가 다른 툴을 사용해야함.
  • 배칭에 대한 힌트를 알 수 있는 좋은 툴로 게임창에서 버그 모양을 누르면 뜬다.

Memory propiler

  • 없다면 package manager에서 받으면 된다.
  • 현재 프레임을 스냅샷을 다 떠서 나중에 비교를 하면 된다.
  • tree map을 볼수 있어 메모리 사용을 그림 비율로 확인할 수 있다. 더 클릭하면 자세히 볼 수 있다.
  • 단편화(Fragmentation) 까지 확인할 수 있다
  • 다른 기기에서 스냅샷을 떠서 비교해볼 수 있다. 파일로 저장되어있어서 .snap파일로 가져올 수 있다.

Xcode Instrument

  • cpp 레벨까지 확인가능. 깊은 레벨까지 필요할 때 사용성 좋음
  • 클래스명_함수명_uuid 이름을 Symbol Name이 명명됨

GPU Profiling

  • GPU는 벤더에서 제공하는 툴에서 확인가능하다. 제품이 워낙 다양하므로
  • Xcode에서도 가능. CPU, GPU 바운더리인지 확인 가능. FPS 항목 보려면 옵션에서 GPU Frame Capture -> Metal 체크해야함.
  • ARM 스튜디오, 스냅드레곤 프로파일러, 말리스튜디오 등등...
  • 마이크로소프트가 만든 PIX for windows 사용 하며 AMD, Nvidia 모두 지원.
    윈도우에서 개발자 모드를 켜줘야고, Nvidia는 제어판에서 개발자 -> GPU 성능 카운터 관리 켜주기, Direct3D12 를 Grapics APIs for Windows에서 켜줘야함. 그리고 Developent Build 옵션을 켜준다.

Physics Debug

  • 물리충돌이 어떻게 이루어지는지 확인가능. 참고로 pulse 이런것들도 어디 방향으로 받는지는 2022버전에서 확인이 가능하다.

참고

  • 알쓸유잡 : 다양한 프로파일링 툴 소개
  • 물리는 고정된 시간에 수행되므로 (fixedUpdated) 특정 시간에 물리엔진 계산으로 프로파일
    피크치기도 한다.
  • 유니티는 C++ Engine(네이트브 영역), C# API(매니지드 영역), Phsics 영역 공간(2D는 Box2D, 3D는 Physx 오픈소스 이용)따로 존재하며 프로파일러의 SyncTransformChange는 여러 월드의 싱크를 맞춰주는 리소스가 소요됨. 예를들어 transform을 C#으로 조작하는데 Gravity에 영향을 받은 rigidbody가 영향을 주어 둘다 위치를 조작하게 된다.
  • Gfx.WaitForPresent 는 CPU가 GPU를 기다리는 시간을 나타냄
  • Gfx.WaitForCommand 는 GPU가 CUP를 기다리는 시간을 나타냄
  • UI도 모두 폴리곤으로 버택스로 이루어짐
  • sorting 레이어를 만들면 같은 레이어끼리 그리는 경우가 있으며 health bar처럼 케릭터 크리고 bar 그리는 방법이 아닌 layer를 분리하여 한번에 그리는 방법도 좋다
  • 배치가 100개 이하여야 저사양 모바일기기에서도 돌아감
  • pc의 경우 가상메모리는 하드디스크에서 스왑형태로 사용가능하지만 모바일의 경우는 스왑이 아닌 메모리를 압축했다 풀었다 하는 방식으로 하기때문에 가상메모리 확보가 용이하지 않고 메모리 적어 프로그램이 종료될 수 있다.
  • 모바일은 cpu, gpu 모두 같은 메모리 공간을 사용하므로 게임에서 사용가능한 메모리가 절대적으로 부족하다. 메모리 관련 최적화를 잘해야함.
  • 메모리 프로파일러에서 CameraColorAttechment는 대략 포스트 프로세싱을 위해 화면을 그대로 저장해놓은 메모리로 해상도가 높을수록 크다.
profile
개고운(개발,고양이,운동)

0개의 댓글