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 отнимает до нескольких миллисекунд на кадр, а спрятанный
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() в скрипте.
Порядок
- Perform CHOP с Trail — низко всё время или провалами?
- 64 × 64 или Hog CHOP — видеокарта или процессор, Из чего состоит кадр.
- Performance Monitor, для редких провалов — Frame Trigger.
- Лишний кук: вьюеры,
Cook Every Frame, ветки без вывода — Кук. probeна памяти — растёт ли.- Чинить найденное — Что не должно кукаться.
С симптомами — Падают кадры.
Вьюеры, параметры и большой редактор тоже кукают и рисуются. Мерить —
в Perform (F1), иначе оптимизируется интерфейс разработчика.
Свежий проект меряют один раз: кадр, память, число операторов. Через месяц видно, что испортилось.
Нашли в статье ошибку, устаревшее или непонятное место?