К содержанию
fohbookбета/ TouchDesigner

Performance Monitor, probe и Perform CHOP

Чем мерить, прежде чем чинить: справка узла, Performance Monitor с ловушкой на медленный кадр, probe из палитры, каналы Perform CHOP и Info CHOP. И в каком порядке.

Ветка вашего пульта:
Быстрый выбор:

Чинить, не померив, значит гадать. У каждого инструмента свой вопрос: что дорого сейчас, что было в одном медленном кадре, как нагрузка меняется со временем.

Инструмент Вопрос
Средний клик по узлу Сколько раз кукнулся и сколько длился последний кук
Performance Monitor Что считалось в кадре, в каком порядке и почём
probe Где в сети уходят время и память, живьём
Perform CHOP Частота, кадр, пропуски, память каналами
Info CHOP на узле То же для одного оператора

Средний клик по узлу (на macOS Alt + правый) показывает время последнего кука и число куков. Число часто важнее: каждый кадр, один раз или когда меняется вход. У TOP там же время на видеокарте.

Performance Monitor

Alt+Y или Dialogs → Performance Monitor. Довели проект до тормозов, нажали Analyze, и монитор снял несколько кадров и выдал журнал: кто кукался, в каком порядке, сколько. Зелёная полоса показывает работу, тёмно-серая ожидание входов, положение по горизонтали момент в кадре. Ищут дорогое и, что важнее, кукающееся зря.

Редкий тяжёлый кадр ловит Frame Trigger (ms): порог 100, Analyze, и отчёт придёт о первом кадре дольше порога, сортировать по Adjusted Length. Filter с *CHOP* оставит одни CHOP, флажки Monitor выбирают, что писать (кук, экспорты, CHOP длиннее 100 сэмплов, отрисовка, драйвер, длина кадра, ошибки), Save... кладёт журнал в .txt для сравнения до и после.

probe

probe из палитры кладут в корень, Ctrl+P (Cmd+P) показывает и прячет. В редакторе это плавающее окно, в Perform — панель внутри перформ-окна, второго окна не появится.

Сеть та же, но вместо узлов стопки из десяти кружков — последние десять куков, цвет и размер по шкале внизу слева. Кружок в кружке — компонент: внутри дети, снаружи сумма. Цвет рамки вокруг сети — общее время компонента. Слева переключают CPU Time, GPU Time, память процессора и видеокарты, число детей. Щелчок по компоненту ведёт внутрь, по фону наверх, средний клик открывает параметры, правый сетевой редактор. У TOP в CPU Time только подготовка, их цена видна в GPU Time.

probe сам стоит времени

Видимый probe отнимает до нескольких миллисекунд на кадр, а спрятанный Ctrl+P не стоит ничего.

Perform CHOP и Info CHOP

Канал Perform CHOP Что
fps, msec Частота и время кадра
cook Время кука кадра
droppedframes Пропущенные кадры
mvreadahead Промахи упреждающего чтения Movie File In
gpumemused, totalgpumem Видеопамять занятая и полная, МБ
cpumemused Память процесса, МБ
activeops, totalops Кукающихся операторов и всего
performmode, performfocus Perform и фокус окна
gputemp Температура видеокарты, медленно

Trail CHOP за ним с временем кадра и кука даёт историю, а на служебной панели те же каналы становятся предупреждениями — Мониторинг. Info CHOP на узле отдаёт cook_time, total_cooks, cooked_this_frame, у TOP — gpu_memory_used и разрешение. Ошибки собирают Dialogs → Errors и Error DAT, медленный Python меряют time.perf_counter() в скрипте.

Порядок

  1. Perform CHOP с Trail — низко всё время или провалами?
  2. 64 × 64 или Hog CHOP — видеокарта или процессор, Из чего состоит кадр.
  3. Performance Monitor, для редких провалов — Frame Trigger.
  4. Лишний кук: вьюеры, Cook Every Frame, ветки без вывода — Кук.
  5. probe на памяти — растёт ли.
  6. Чинить найденное — Что не должно кукаться.

С симптомами — Падают кадры.

Редактор сам стоит денег

Вьюеры, параметры и большой редактор тоже кукают и рисуются. Мерить — в Perform (F1), иначе оптимизируется интерфейс разработчика.

Эталон

Свежий проект меряют один раз: кадр, память, число операторов. Через месяц видно, что испортилось.

Нашли в статье ошибку, устаревшее или непонятное место?

рядом по смыслу