Version: Unity 6.0 (6000.0)
언어 : 한국어
Analyzing asset processes
Asset Loading 프로파일러 모듈

에셋 로드 지표

AsyncReadManagerMetrics 클래스를 사용하여 런타임 에셋 로딩 및 파일 읽기 성능을 모니터링할 수 있습니다. 이 클래스는 AsyncReadManager에서 관리하는 모든 파일 읽기 작업에 대한 데이터를 기록합니다.

Unity 엔진은 런타임 시 대부분의 파일을 읽기 위해 AsyncReadManager를 사용합니다. AsyncReadManager로 로드되는 파일에는 에셋 번들, 어드레서블, 리소스가 포함됩니다. 또한 AsyncReadManager.Read를 사용하여 스크립트에서 파일을 로드할 수 있습니다.

AsyncReadManagerMetrics 클래스를 사용하면 지표 수집을 활성화하고 기록된 지표 데이터를 검색할 수 있습니다. 또한 분석에 도움이 되는 기록된 데이터를 필터링하고 요약할 수도 있습니다. 이 지표 정보는 에셋 로딩과 관련된 문제 영역을 식별하고 변경 사항이 에셋 로딩 성능에 미치는 영향을 측정하는 데 도움이 됩니다.

AsyncReadManagerMetrics 클래스는 개발 빌드에서 사용할 수 있습니다. ENABLE_PROFILER 심볼을 사용하여 AsyncReadManagerMetrics API에 대한 모든 호출을 #if 프리 프로세서 지시문 내에 저장해야 합니다. ENABLE_PROFILER 심볼은 개발 빌드에만 정의되므로 지표를 사용할 수 없는 빌드에서 스크립트를 컴파일할 수 있습니다. 이전 버전과의 호환성을 위해 UNITY_2020_2_OR_NEWER 심볼을 사용하여 이전 버전의 Unity에서 지표 코드를 제거할 수도 있습니다. 예시:

#if ENABLE_PROFILER && UNITY_2020_2_OR_NEWER
    AsyncReadManagerMetrics.StartCollectingMetrics();
#endif

지표 컬렉션 활성화

데이터가 기록되기 전에 지표 컬렉션을 활성화해야 합니다. 다음 방법 중 하나를 사용하여 지표 컬렉션을 활성화합니다.

참고: Unity 에디터 애플리케이션을 시작할 때 -enable-file-read-metrics 를 전달하여 플레이 모드를 시작할 때 컬렉션을 활성화할 수 있습니다. 하지만 에디터는 텍스처 같은 일부 에셋 카테고리를 자체적으로 로드하며, 플레이 모드를 시작할 때 다시 로드하지 않습니다. 파일 IO 지표에 대한 전체 정보를 얻으려면 애플리케이션의 개발 빌드에서 데이터를 수집해야 합니다.

지표 데이터 가져오기

GetMetrics를 호출하여 AsyncReadManagerMetrics 클래스에서 수집한 지표를 가져올 수 있습니다. 이 함수에 AsyncReadManagerMetrics.Flags를 전달하여 검색 후 지표를 지울지 지정합니다. 지표를 지우고 저장된 지표에서 완료된(취소 및 실패 포함) 모든 읽기를 제거합니다. 지워도 대기열에 있는 작업이나 처리 중인 작업에는 영향을 미치지 않습니다. 작업이 완료된 후 다시 GetMetrics를 호출하여 완료되지 않은 작업의 지표에 액세스할 수 있습니다. 지표를 정기적으로 지우면 동일한 데이터를 다시 읽지 않고 시스템의 데이터 오버헤드를 줄일 수 있습니다.

#if ENABLE_PROFILER && UNITY_2020_2_OR_NEWER
    AsyncReadManagerRequestMetric[] metrics 
        = AsyncReadManagerMetrics.GetMetrics(AsyncReadManagerMetrics.Flags.ClearOnRead);
#endif

가능한 경우 지표 데이터에는 읽기 작업에 대한 컨텍스트 정보가 포함됩니다. 이 정보에는 읽기를 요청한 AssetLoadingSubsystemAssetName, AssetTypeID가 포함됩니다. AsyncReadManager가 이 정보에 액세스할 수 없는 경우 해당 지표 필드의 값은 각각 Other, empty, 0입니다.

참고: 현재 지원되는 것으로 알려진 에셋 TypeID는 아래 표에 나와 있습니다. 표시될 수 있는 다른 TypeID는 YAML 클래스 ID 레퍼런스를 참조하십시오.

TypeID 유형 이름
28 Texture2D
117 Texture3D
89 큐브맵
43 메시

요약 데이터 가져오기

다음 메서드를 사용하여 AsyncReadManager 지표 요약을 가져올 수 있습니다.

예시:

#if ENABLE_PROFILER && UNITY_2020_2_OR_NEWER
    AsyncReadManagerSummaryMetrics summaryOfMetrics 
        = AsyncReadManagerMetrics.GetCurrentSummaryMetrics(AsyncReadManagerMetrics.Flags.ClearOnRead);
#endif

또는

#if ENABLE_PROFILER && UNITY_2020_2_OR_NEWER
    AsyncReadManagerRequestMetric[] metrics 
        = AsyncReadManagerMetrics.GetMetrics(AsyncReadManagerMetrics.Flags.ClearOnRead);
    AsyncReadManagerSummaryMetrics summaryOfMetrics 
        = AsyncReadManagerMetrics.GetSummaryOfMetrics(metrics);
#endif

지표에 대한 요약 데이터에는 다음의 통계가 포함됩니다.

  • 평균 대역폭
  • 평균 읽기 크기
  • 로드 시간이 가장 긴 에셋 유형
  • 읽기 횟수
  • 요청 횟수
  • 읽은 총 바이트

(전체 목록은 AsyncReadManagerSummaryMetrics 참조)

기본적으로 요약 통계에는 대기열에 추가되거나 진행 중인 작업을 포함한 모든 읽기 작업이 포함됩니다. 필터를 사용하여 요약을 특별히 관심 있는 작업으로 제한할 수 있습니다. 예를 들어 필터를 사용하여 요약 통계를 텍스처 에셋의 완료된 읽기 작업으로 제한할 수 있습니다.

참고: 요약 통계를 계산하려면 처리 리소스가 필요합니다. 이러한 계산으로 인해 기록 중인 측정이 변경되지 않도록 하려면 먼저 지표를 수집하고 분석 중인 작업이 완료된 후 요약을 가져오십시오.

요약 필터

다음 방법 중 하나와 함께 AsyncReadManagerMetricsFilters를 사용하여 요약할 데이터 유형을 지정합니다. 필터와 일치하지 않는 지표는 요약에서 제외됩니다. 다음 카테고리로 필터링할 수 있습니다.

동일한 필터에 여러 카테고리를 설정할 수 있습니다. 해당 작업의 지표가 요약에 포함되려면 읽기 작업이 모든 카테고리와 일치해야 합니다. 예를 들어 필터의 ProcessingStateSubsystem 모두에 대한 값을 지정하여 지정된 하위 시스템에서 시작된 지정된 처리 상태의 작업만 요약할 수 있습니다.

카테고리에 여러 개의 값을 지정할 수도 있습니다. 이 경우 읽기 작업은 요약에 포함할 카테고리의 지표에 지정한 값과 일치할 수 있습니다. 예를 들어 하위 시스템 카테고리에 메시텍스처를 모두 지정하여 메시 및 텍스처 에셋 모두에 대한 작업을 요약할 수 있습니다.

Analyzing asset processes
Asset Loading 프로파일러 모듈