awesome-everything EN
↑ Обратно к восхождению

Производительность

Горячие пути: тест с выбором ответа

Суть Тест с выбором на синтез по всему юниту — пять форм, чтение symptom-vs-cause, цепочки parent/child, IPC и TMA, false sharing и security-гейт.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 13 min

Шесть вопросов поперёк всего юнита. Каждый отражает решение, которое ты принимаешь посреди инцидента с открытым профилем — не определение для заучивания, а диагноз, на котором надо остановиться прежде, чем потратить спринт на неверный фикс.

Цель

Убедись, что связываешь юнит воедино: читаешь широкий лист как симптом, классифицируешь его в одну из форм, находишь место фикса по цепочкам parent/child и учитываешь ограничения, которые добавляет production — счётчики, хвостовую задержку и security-гейт.

Викторина

Flame graph показывает renderTemplate с 28% self-time. Профиль аллокаций затем показывает внутри fmt.Sprintf на 62% байт аллокаций. Два инженера хотят сменить шаблонизатор. Как читать правильно?

Викторина

Два широких листа выглядят одинаково на flame graph. perf stat показывает лист A с IPC 3.0 и cache-miss rate 1%, а лист B с IPC 0.4 и cache-miss rate 18%. Чем различаются фиксы?

Викторина

json.Marshal на 28% CPU. В одном сервисе у него один доминирующий родитель (логгер запросов); в другом — двадцать тонких родителей (хендлеры). Куда относится фикс в каждом случае?

Викторина

Lock-free массив счётчиков использует atomic add с пер-тред индексами, но под нагрузкой IPC падает до 0.42, cache-miss rate достигает 76%, а пропускная способность ухудшается с ростом числа потоков. Диагноз и фикс?

Викторина

Node flame graph показывает доминирующие фреймы InterpreterCallStub в функции, которая должна быть горячей, и всплески задержки, не коррелирующие с трафиком. После переписывания на 'лучший алгоритм' ничего не улучшается. Почему и каков настоящий фикс?

Викторина

Инженер ускоряет горячий путь сравнения токена в 3 раза, добавив early-exit ветку на первом несовпавшем байте. Фрейм сузился, p50 улучшился. Почему это всё равно неправильно?

Итог

Юнит — это одно дерево решений: широкий лист называет симптом, а не причину; классифицируй его в форму (CPU, аллокация, кеш, лок, syscall, JIT-деопт или случаи, видимые только через железо — false sharing, native-bridge); находи место фикса по parent chain (один вызывающий против многих) и child chain (работа здесь против на уровень ниже); тянись к аппаратным счётчикам и TMA, когда CPU-bound и memory-bound выглядят одинаково; и проводи любое изменение constant-time или security-чувствительных путей через ревью. Сначала диагноз, потом фикс одной вещи, докажи его diff’ом профиля — и следи за хвостовой задержкой, а не только за средним.

Продолжить восхождение ↑Горячие пути: тест на свободное припоминание
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.