새로운 Memory Profiler 1.0.0 버전을 사용하면 프로파일링 제품군을 개선하고, 메모리 사용량에 대한 더 완전한 뷰를 제공받으며, 더 쉽고 빠르게 성능을 최적화하거나 메모리 문제를 감지할 수 있습니다.유니티 프로파일러 팀은 2022년 9월부로 Memory Profiler 패키지가 실험 단계에서 검증 완료 단계에 도달하여 Unity 2022.2 테크 스트림을 사용하는 모든 분이 이용할 수 있게 되었다는 기쁜 소식을 알려 드립니다.Memory Profiler: 개요
성능이 한정된 기기에서 실행되는 애플리케이션의 메모리 충돌을 방지하려면 메모리 최적화가 반드시 필요합니다. 여러 기기를 대상으로 출시하려는 경우, 각 플랫폼에서 최고의 성능을 끌어내기 위해 메모리 사용량을 조정해야 할 수도 있습니다.
Memory Profiler는 게임 스냅샷을 찍고 특정 시점의 메모리 사용량을 검토하여 이러한 문제를 해결할 수 있는 유용한 툴입니다.
게임의 '스냅샷'을 찍으면 어떤 요소가 주로 메모리를 점유하고 있는지 확인하거나 애플리케이션 충돌을 유발할 수 있는 문제를 식별할 수 있습니다.
참고: Memory Profiler의 전체 기능과 메모리 추적은 2022.2 이후 버전에서만 사용 가능하지만, 새로운 UI(사용자 인터페이스)를 활용해 빈 2022+ 프로젝트에서 Memory Profiler를 열고 이전 스냅샷을 임포트하여 이전 캡처를 검사할 수 있습니다.
지금까지의 과정
Memory Profiler는 본래 몇 년 전에 실험 패키지로 릴리스되었으나, 이번 릴리스에서는 속도를 높이고 사용성을 개선하기 위해 UI 및 UX(사용자 경험)가 대대적으로 수정되었습니다.
기존 실험 패키지 단계에서는 일부 얼리 어답터들 덕분에 많은 사례에서 메모리 문제를 식별하는 도움을 받았습니다. 하지만 사용이 어려웠고 느렸으며, 첫 번째 반복 작업을 진행하려면 전문적인 지식이 필요했습니다.
그래서 유니티는 새로운 버전의 패키지 작업을 시작할 때 목표한 내용은 다음과 같습니다.
● 문제를 더 빠르게 식별하고 해결할 수 있도록 가장 일반적이고 중요한 워크플로 단순화
● 여러 기기에 걸쳐 메모리 사용량을 더 쉽게 비교할 수 있도록 더 완전하고 신뢰할 수 있는 정보 제공(또한 플랫폼별 프로파일러 사용)
● 메모리에 대한 심층적 지식이 없는 사용자도 애플리케이션을 효과적으로 최적화할 수 있도록 보다 접근성 높은 방식으로 정보 표시
이러한 목표를 달성하기 위해 유니티는 실험 패키지의 얼리 어답터들과 긴밀하게 협력하며 어떤 요구와 불만 사항이 있는지 파악했으며, 가능한 한 최고의 UX를 제공하고자 수차례에 걸쳐 디자인 측면에서 반복 작업을 진행했습니다.
얼리 어답터들의 의견 덕분에 툴을 크게 간소화하고 단순화할 수 있었으며, 전문 용어를 줄이고 오브젝트와 세부 사항, 종속 관계를 툴에서 곧바로 검사하기 더 쉽게 만들었습니다.포함된 기능
Memory Profiler는 UI가 새롭게 개선된 세 개의 주요 섹션으로 구성되어 있습니다. 아래에서 자세히 살펴보겠습니다.
● 스냅샷 목록
● 메인 섹션: 세 개의 워크플로 뷰로 구분(Summary, Unity Objects, All of Memory)
스냅샷 목록
스냅샷 목록은 게임에서 찍은 스냅샷을 캡처하고 확인할 수 있는 영역이며, 메모리 사용량과 캡처 날짜에 관한 전반적인 정보도 여기에서 얻을 수 있습니다. 툴바의 'Capture' 버튼을 사용해 스냅샷을 캡처할 수 있으며, 스냅샷을 사용할 수 없는 경우에는 메인 섹션의 스냅샷 버튼을 사용하면 됩니다.
스냅샷 간의 메모리 사용량이 바뀌는지 확인하고, 프로젝트 성능이 개선되고 있는지 파악할 수도 있습니다.
한편 단일 스냅샷과 비교된 스냅샷 중 어떤 것을 확인할지 스냅샷 목록에서 선택할 수 있습니다. 자세한 정보는 아래에서 확인해 보세요.
스냅샷 목록 뷰
메인 섹션
Memory Profiler의 핵심 영역이며 Summary, Unity Objects, All of Memory라는 세 개의 워크플로 뷰로 나뉩니다. 메인 섹션 상단의 탭에서 각각의 뷰로 이동할 수 있습니다.
Summary 뷰는 스냅샷을 로드하거나 캡처하면 열리는 기본 뷰입니다. 사용 중인 메모리 양, 기기에 '상주' 중인 메모리 양, 커밋되었지만 현재 기기에 없는 메모리 양에 대한 정보가 여기에 표시됩니다. 메모리가 여러 카테고리로 분류되어 있으므로 조사를 시작할 지점을 더 쉽게 선택할 수 있습니다.
Summary 뷰의 'Top Unity Objects in Memory' 또는 'Managed memory breakdown' 기능을 활용해 더 상세한 분석을 시작할 수도 있습니다.
메인 섹션 – Summary 뷰
여러분은 분명 Unity Objects 뷰를 가장 자주 사용하게 될 것입니다. 텍스처, 셰이더, 폰트 등 메모리에 로드되는 오브젝트의 주요 유형을 모두 표시합니다. 너무 크거나, 잘못 로드되어 해당 위치에 있을 필요가 없거나, 남아 있는 레퍼런스로 인해 메모리에 보관된 오브젝트를 이곳에서 식별할 수 있습니다. 메인 섹션 – Unity Objects 뷰
All of Memory 뷰에서는 모든 메모리를 Native, Managed, Graphics, Executables라는 카테고리별로 확인할 수 있습니다. Memory Profiler에서 캡처된 데이터를 확인하고, 프로젝트 메모리의 구성 요소를 살펴보기 위해 더 구체적인 측면을 조사할 수 있습니다.메인 섹션– All of Memory 뷰
선택 세부 정보
선택 세부 정보에는 여러 메모리 카테고리의 설명, 선택한 오브젝트의 잠재적 레퍼런스나 세부 사항 같이 메인 섹션에서 선택한 항목의 자세한 정보가 표시됩니다.
이 섹션에서는 특정 항목의 자세한 정보가 제공되므로 해당 항목이 메모리에 있는 이유를 더 쉽게 파악할 수 있습니다. 에디터에 프로젝트가 열려 있는 경우 오브젝트를 '핑'하고 씬(Scene) 또는 프로젝트(Project) 창에서 에셋을 바로 검사할 수도 있습니다.
선택 세부 정보 뷰
스냅샷 비교
위에 설명한 각 뷰를 사용하여 단일 스냅샷을 검사하거나 서로 비교할 수 있습니다.
스냅샷을 비교하려면 스냅샷 목록에서 'Compare'를 선택한 다음, 목록에서 두 번째 스냅샷을 선택합니다. 스냅샷 목록의 비교 탭을 선택하면 모든 뷰가 비교 모드로 자동 전환됩니다.
비교 모드의 Summary 뷰에는 두 캡처의 메모리 상세 정보가 나란히 표시되며, 스냅샷('A' 및 'B'로 명명됨) 간 메모리 사용량의 주된 차이를 확인할 수 있습니다.비교 모드 스냅샷
Unity Objects 및 All of Memory 뷰에는 새로운 전용 UI가 있어 여러 메모리 카테고리의 크기 변화나, 그 안에 포함된 오브젝트 수를 확인할 수 있습니다.
상단 테이블에서 카테고리를 선택하면 아래 테이블에서 스냅샷 A와 B의 각 차이를 검사할 수 있습니다.
비교 모드를 사용한 Unity Objects 및 All of Memory 뷰
단일 스냅샷을 다시 검사하려면 스냅샷 목록에서 'Single'을 선택하면 됩니다. 두 번째 스냅샷은 잠재적 로드 상태를 유지하므로 필요에 따라 두 스냅샷 사이를 빠르게 전환할 수 있습니다.
Unity상의 메모리 및 메모리 최적화 방법
향후 몇 개월 이내에 메모리를 효과적으로 최적화할 수 있는 방법에 관한 추가 리소스와 정보를 제공해 드리려 합니다. 일반적인 메모리 문제를 식별하는 방법과 Unity에서 메모리가 작동하는 방식에 대한 심층 분석을 담은 블로그 게시물이 올라올 예정이니 계속 지켜봐 주시기 바랍니다.
애플리케이션 성능을 최적화하는 방법에 관한 일반적인 리소스는 다음을 참조하시기 바랍니다.
향후 계획
새롭게 설계된 이번 Memory Profiler에는 실험 버전의 패키지를 사용한 바 있는 많은 얼리 어답터들의 의견이 반영되어 있습니다. 이 버전에서는 툴의 안정성과 사용성이 모두 크게 개선되었으나 아직 갈 길은 멉니다.
또한 앞으로 지원을 제공할 수 있도록 단편화 감소와 관련된 워크플로를 더 파악하기 위해 노력하고 있습니다. 아직 해결되지 않았으며 개선이 필요한 사용성 및 UX 문제의 피드백도 수집하고 있습니다.
피드백이나 제안 사항이 있다면 로드맵 페이지를 통해 의견을 공유해 주시기 바랍니다. 이 페이지에서는 실행 중인 기존 기능에 투표하거나 새로운 기능을 제안하실 수 있습니다. 포럼을 통해 질문해 주셔도 됩니다.
두 채널 모두 지속적으로 모니터링하고 있으므로, 협력을 통해 Unity의 성능과 툴을 더 개선할 수 있기를 바랍니다.