Тема: profiling
-
Непрерывное профилирование в продакшене: постоянно включённое сэмплирующее профилирование и на какие вопросы оно отвечает
Непрерывное профилирование систематически снимает профили CPU и памяти во времени и хранит их как размеченные серии, поэтому команда может спросить, какая функция потребила больше всего CPU по всему парку серверов вчера, или что изменилось между двумя версиями; сэмплирующие профилировщики делают это достаточно дёшево, чтобы держать их включёнными постоянно, а сами профили поставляют рантайм-эндпоинты вроде /debug/pprof/ в Go или eBPF-агенты.
-
Чтение flame graph: ширина — это сэмплы, а ось x — не время
Flame graph укладывает выбранные при профилировании стеки вызовов так, что ширина кадра показывает долю сэмплов, а высота — глубину стека; ось x отсортирована по алфавиту, не по времени. Широкие плато сверху — участки высокой загрузки CPU, широкие кадры со множеством узких потомков — вызывающие функции, которые стоит вызывать реже. Помните: CPU flame graph не показывает ожидание.
-
Профилирование кадров CPU и GPU: поиск ограничивающей работы
Как использовать бюджет кадра, временные шкалы CPU и GPU и контролируемые записи, чтобы найти узкое место и отличить ожидание от полезных вычислений.
-
Unity SRP Batcher: оптимизация подготовки на CPU и отличие от инстансинга
Разберитесь с назначением SRP Batcher на CPU, проверьте совместимость материалов и шейдеров и измеряйте его отдельно от GPU instancing.
-
CPU profiling with perf: perf top, perf record -g, perf report, and perf_event_paranoid
perf top gives an immediate live profile; perf record -g saves a call-graph profile to disk for perf report to read later. The kernel's perf_event_paranoid setting controls what an unprivileged user can do, and symbol resolution needs matching debug information for every frame in the stack.
Машиночитаемо: JSON