Geolib3-MT 프로파일 링

Geolib3-MT는 새로운 렌더링 유형을 추가합니다. Preview Render with Profiling장면 순회에서 성능 문제를 추적 할 수 있도록 설계되었습니다. 이것은 정상을 수행합니다 Preview Render또한 Ops가 실행 한 정보, 위치를 요리하는 데 사용 된 CPU 양, 속성 및 Lua 스크립트에 사용 된 메모리 양에 대한 정보도 캡처합니다.

프로파일 링을 사용한 미리보기 렌더는 프로파일 링 데이터를 두 곳에서 출력합니다.

  • 의 요약 보고서 Render Log총 CPU 시간 및 사용 된 메모리와 가장 비싼 10 개의 Ops가 포함되어 있습니다.
  • 원시 프로파일 링 데이터가 포함 된 디스크에 작성된 JSON 파일입니다.

프로파일 링으로 미리보기 렌더 시작

Preview Render with Profiling 다른 렌더와 동일한 메뉴에서 시작할 수 있습니다.

  1. 렌더링하려는 노드를 마우스 오른쪽 버튼으로 클릭하십시오.
  2. 딸깍 하는 소리 Preview Render with Profiling 메뉴에서.

이 옵션은 이미 렌더러를 지원하는 모든 렌더러에서 사용할 수 있습니다 Preview Render렌더러 부분에 대한 추가 작업이 필요하지 않습니다. 렌더러가 finalize() Geolib3-MT 런타임의 메소드 인 경우, 이러한 프로파일 링 보고서는 런타임이 완료 될 때 작성됩니다. 그렇지 않으면 렌더링이 완료 될 때 보고서가 작성됩니다.

프로파일 링 데이터를 캡처하는 오버 헤드 Preview Render with Profiling 최소이며, 정상에 비해 현저히 둔화되어서는 안됩니다 Preview Render.

어떤 정보가 캡처됩니까?

Preview Render with Profiling 장면 순회 중에 실행되는 각 Op에 대해 다음 정보를 캡처합니다.

  • 그만큼 name, typenumerical ID Op.
    각 Op에는 이름, 유형 및 고유 한 숫자 ID가 있습니다. 예를 들어 OpScript Op는 이름을 가질 수 있습니다 op74유형 OpScript.Lua; 그리고 ID 77.

    노트 :  그만큼 nameID 상관시킬 필요가 없습니다.

  • 그만큼 nametypeKatana Op를 스폰 한 노드.
    Op가 직접 Op를 스폰하는 경우 Katana 노드 nametype 해당 노드의Op가 내재적으로 작성된 경우 노드 이름은 동일합니다. _NoName_ 그리고 유형은 같을 것입니다 _NoType_. 예를 들어 MaterialFilenameResolve 파일 이름을 확인해야 할 때 이러한 Ops가 암시 적으로 작성되므로 Ops Katana 노드는 작성자로 식별됩니다.

    노트 :  만약 sceneTraversal.opTreeOptimizations 사용 설정되고 운영 체인이 축소됨, 노드 nametype 체인에서 생성 된 문자열로 대체됩니다. 체인 길이가 t유형의 Ops로 구성 opType , 어디 Op k ~ 라 불려진다 o케이 에 의해 생성됩니다 Katana 노드 이름 n 케이문자열의 일반적인 형식은 다음과 같습니다.그러나이 문자열의 형식은 고정 된 상태로 유지되지 않습니다.

  • 그만큼 total CPU time 그 Op는 요리 장소를 보냈다.
    각 Op는 많은 위치를 요리하며 모든 장면 탐색 스레드에서이 작업을 수행하는 데 소요되는 시간이 누적됩니다. CPU 시간은 장면이 병렬로 이송 될 때 장면 순회 스레드 수에 따라 조정됩니다. 그렇지 않은 경우 해당 Op의 업스트림 스레드 안전하지 않은 Op가있을 수 있습니다.
  • 그만큼 memory footprint 그 Op.
    각 Op는 쿠킹 위치에 메모리를 할당해야하며 Op 당 총 메모리가 집계됩니다.
    현재 다음과 같은 할당이 기록됩니다.
    • 에 의해 만들어진 할당 FnAttribute 라이브러리, 요리 된 위치의 속성을 저장합니다.
    • 에 의해 만들어진 할당 Lua OpScript를 실행하는 동안 통역사.
    • 저장 할당 CookResults 캐시에.

프로파일 링 요약 보고서

요약 보고서는 Render Log 완료시 Preview Render with Profiling. 이 보고서는 프로파일 데이터에 대한 개괄적 인 정보를 제공하기 위해 작성되었으며 다음을 포함합니다.

  • 모든 Op에 걸쳐 총 CPU 시간.
  • 모든 Op에 걸쳐 총 메모리 풋 프린트가 합산되었습니다.
  • CPU 시간별 가장 느린 5 개의 Op.

예제의 관련 섹션 Render Log.

JSON 파일 프로파일 링

요약 보고서 외에도 원시 프로파일 링 데이터가 포함 된 JSON 파일이 디스크에 기록됩니다. 작성된 디렉토리는 다음에 의해 결정됩니다. --profiling-dir 명령 줄 인수; 이것이 설정되어 있지 않으면, 임시 디렉토리에 기록됩니다. Katana 세션. 이 디렉토리가 존재하지 않으면 파일 시스템 권한이 허용하는 한 작성됩니다. 파일 이름은 다음 형식을 따릅니다.

profile_ <렌더러> _previewRender_ <날짜 시간> .json

어디:

  • <렌더러>는 렌더 플러그인의 이름입니다 (예 : dl for 3Delight).
  • <datetime>은 렌더링이 시작된 시점의 ISO8601 타임 스탬프입니다.

파일에는 다음 속성을 가진 단일 JSON 객체가 포함됩니다.

특성

유형

기술

타임 스탬프

프로파일 파일이 작성된 ISO8601 타임 스탬프

2019-10-11T09 : 37 : 06Z

렌더러

렌더 플러그인의 이름입니다.

dl

renderMethodName

렌더링 방법의 이름. 현재 항상 previewRender.

previewRender

환경

목적

다음을 포함하여 다양한 환경 변수의 값을 포함하는 객체 :

  • KATANA_RELEASE
  • KATANA_ROOT
  • KATANA_RESOURCES.

{

“KATANA_RELEASE”:“3.5v1”,

“KATANA_ROOT”: /opt/foundry/katana3.5v1”,

“KATANA_RESOURCES”:“<unset>”

}

profileMode

프로파일 모드의 이름. 현재 항상 basic.

기본

작전

정렬

각 Op가 소비하는 리소스를 설명하는 객체의 배열입니다.

아래 표를 참조하십시오

numOps

번호

Ops 배열의 길이입니다.

78

wallTime

번호

렌더링 시작과 프로파일 링 파일 사이의 벽시계 시간 (초). 렌더러가 구현하는 경우 finalize()이는 장면 순회 시간과 같습니다.

46.85064

cpuTime

번호

모든 작업의 CPU 시간 합계 (초)입니다.

91.39238

사용 된 메모리

번호

모든 Op에 대한 메모리 풋 프린트의 합계 (바이트).

10728607911

ops 속성에는 장면 순회 중에 실행 된 각 Op에 대해 다음과 같은 형식의 객체 배열이 포함됩니다.

특성

유형

기술

opId

번호

Op에 대한 고유 한 정수 식별자입니다.

23

opName

Op의 고유 이름

op223

opType

Op의 유형

AttributeSet

nodeName

의 이름 Katana 이 Op를 작성해야하는 노드 또는 _NoName_ Op가 내재적으로 작성된 경우

RenderSettings_SetSamples

nodeType

의 유형 Katana 이 Op를 작성해야하는 노드 또는 _NoType_ Op가 내재적으로 작성된 경우

렌더 설정

cpuTime

번호

이 Op가 전체 스레드에서 위치를 요리하는 데 걸린 총 시간 (초)입니다.

0.54512136

사용 된 메모리

번호

위에서 정의한대로이 Op는 위치를 요리하는 동안 사용 된 총 메모리 공간 (바이트)입니다.

185378321

프로필 결과 분석

다양한 방법으로 결과를 정렬하고 그룹화하기 위해 Python 2.7 스크립트가 포함되어 있습니다. 이 스크립트는 여기에서 찾을 수 있습니다 :

$ KATANA_ROOT / extras / Profiling / analyzeProfilingRenderResults.py

다음과 같이 명령 행에서이 Python 스크립트를 호출 할 수 있습니다.

cd $ KATANA_ROOT / extras / 프로파일 링

python analyzeProfilingRenderResults.py /path/to/results/file.json <옵션>

다음과 같은 명령 줄 옵션을 사용할 수 있습니다.

--도움

도움말 텍스트를 표시하고 종료하십시오.

--FIELDNAME 별 정렬

FIELDNAME별로 결과를 정렬하십시오. 여기서 FIELDNAME은 JSON 특성 이름 opId, opName, opType, nodeName, nodeType, cpuTime 또는 memoryUsed 중 하나입니다.

--reverse, -r

결과를 역순으로 정렬하십시오.

--FIELDNAME 별

결과를 FIELDNAME별로 그룹화하십시오. 여기서 FIELDNAME은 JSON 특성 이름 opId, opName, opType, nodeName, nodeType, cpuTime 또는 memoryUsed 중 하나입니다.

-인간이 읽을 수있는, -h

사람이 읽을 수있는 단위로 총 메모리 인쇄바이트가 아닌 KiB, MiB 등).

--limit LIMIT, -l LIMIT

그룹화 및 정렬 후 출력을 첫 번째 LIMIT 행으로 제한하십시오.

-컬럼 열

지정된 열만 출력합니다. 여기서 COLUMNS는 쉼표로 구분 된 JSON 특성 이름 opId, opName, opType, nodeName, nodeType, cpuTime 또는 memoryUsed의 목록입니다.

스크립트는 ASCII 결과 테이블을 stdout요청에 따라 그룹화 및 정렬되었습니다. 만약 --sort-by 설정되지 않은 경우 결과가 정렬됩니다 opId. 만약 --group-by 설정하지 않으면 그룹화가 발생하지 않습니다.

노트 :  그룹화 할 때 nodeName, 이름이 포함 된 모든 결과 _NoName_ 함께 그룹화됩니다. 동일하다 nodeType.

다음 명령 줄 옵션 조합이 시작하는 데 유용 할 수 있습니다.

-그룹 별 opType-정렬 별 cpuTime

CPU를 가장 많이 사용하는 Op 유형을 찾으십시오.

--group-by nodeName-분류 cpuTime

어느 것을 찾으십시오 Katana 노드는 CPU를 많이 사용합니다.

--group-by nodeType-정렬 기준 메모리 사용

어느 것을 찾으십시오 Katana 노드 유형은 가장 큰 메모리 공간을 차지합니다.