Англійська мова: Grafana Pyroscope Vocabulary
Вивчіть англійську лексику щодо неперервного профілювання і Grafana Pyroscope: графи полум’ я, вибірка процесора, профілювання купи, кардинальність і терміни спостережливості для інженерів DevOps.
Неперервне профілювання є одним з трьох стовпів глибокої спостережливості - поряд з метрикою і слідами. Grafana Pyroscope впроваджує профілювання у ту ж екосистему, що і Loki, Tempo і Prometheus, надаючи вам змогу пов’ язати повільні сліди з гарячими точками процесора або зростанням пам’ яті. Якщо ви працюєте у DevOps, SRE або серверній інженерії, знання цього словника англійською мовою допоможе вам чітко спілкуватися у каналах інциденту, перегляду дизайну і обговореннях з постачальниками. У цьому підручнику пояснюється основні поняття.
Що таке профілірування?
Profiling
** Профілювання ** — це процес вимірювання того, як програма витрачає свій час (профілювання процесора) або як вона використовує пам’ ять (профілювання пам’ яті) під час виконання. ** Profiler ** є інструментом, який збирає ці дані.
«Перед тим, як щось оптимізувати, ми профільували службу — профіль виявив, що 60% часу процесора було витрачено на серіалізацію JSON»
Не плутати профілювання з контролем. Моніторинг повідомляє вам * що* щось повільно; профілювання повідомляє вам * де * у коді сповільнення відбувається.
Неперервне профілювання
** Неперервне профілювання ** означає постійний збір даних профілювання під час виробництва, а не лише під час одноразових сеансів зневадження. Pyroscope отримує профілі з запущених служб через регулярні проміжки часу.
«З увімкнутим постійним профілями, ми можемо повернутися в часі і побачити точно, що робив процесор під час піку затримки минулого вівторка»
Основні значення та лексика мови
Пламенний графіт
** Полум’ яний графік ** є основним візуалізатором для профілювання даних. За допомогою цього пункту можна показати стек викликів у вигляді ряду горизонтальних смуг: ширина кожної зі смуг відповідає кількості часу, який було витрачено на виконання цієї функції. Ієрархія викликів буде перенесено згори вниз (або знизу вгору, залежно від інструменту).
«Подивившись на графік полум’я, ми можемо побачити, що
db.query()займає майже половину загального часу процесора»
Пламенні графіки були винайдені Brendan Gregg і зараз є стандартним способом візуалізації виводу профілю. У англійській мові ви почуєте: * прочитати графік полум’ я *, * подивитися на графік полум’ я *, * інтерпретувати полум’ я * і * широка смуга на графіку полум’ я вказує на гарячу точку *.
Викликати стека / стека трасування
** Стек викликів ** — це послідовність викликів функцій, активних у даний момент. Профільери вибирають стеки викликів тисячі разів на секунду і агрегують їх.
«Стек викликів показав, що кожен гарячий шлях проходив через
serialize_response— чітка ціль оптимізації»
Частота вибірки
** Частота вибірки ** — це частота, з якою програма профілювання робить знімок стека викликів. Вищий рівень частоти вибірки дає більше деталей, але додає додаткових витрат. Типовим значенням для піроскопа є 100 вибірок за секунду.
Ми знизили частоту вибірки у виробництві, щоб зменшити витрати на профілювання
Профіль на сайті ФФУ
Профіль CPU показує, на які функції витрачається час процесора — які функції є « гарячими » (використовують найбільше часу обробки). Він відповідає на питання: «Що робить мій код?»
Профіль CPU показав, що наша перевірка регресії працювала на кожному запиті і була несподівано дорогою
Профіль купу / Профіль пам’яті
Профіль стека ** (або профіль пам’ яті) показує, як розподілено пам’ ять — які об’ єкти займають найбільше місця і які шляхи коду їх розподілили. Корисно для пошуку витоків пам’ яті.
Профіль купи виявив витік: ми накопичували об’єкти з’єднання в карті і ніколи їх не відпускали
Профіль на go-specific (англ.)
Для програм Go, profile_ goroutine показує стан всіх goroutines — блокування goroutines може вказувати на застої або надмірну одночасність.
Профіль goroutine показав 4000 заблокованих goroutines, що чекають на з’єднання з базою даних — цей басейн був вичерпаний
Спостережливість і кардиналність
Observability
** Спостережливість ** — це здатність розуміти внутрішній стан системи за її зовнішніми вихідними даними: журналами, метрикою, слідами і профілями. Термін походить з теорії управління.
«Наш стек спостережливості тепер покриває всі чотири сигнали: журнали в Loki, метричні дані в Prometheus, сліди в Tempo і профілі в Pyroscope»
Метка / Tag
У Pyroscope, метки (також називаються тегами в деяких системах) є парами ключ-значення, приєднаними до даних профілю — наприклад, service=api, region=eu-west-1, env=production. Мітки нададуть вам змогу фільтрувати і групувати профілі.
Додати позначку
versionдо ваших профілів, щоб ви могли порівняти використання процесора між випусками
Cardinality
** Кардинальність ** стосується кількості унікальних значень, які може мати мітка. Мітки високої кардинальності — такі як ідентифікатори користувачів або ідентифікатори запитів — створюють величезні обсяги даних і їх слід уникати у профілях і метриці.
Не використовуйте ідентифікатори запитів як мітку профілю — кардинальність буде необмежена і призведе до аварії сервера зберігання
Горяча точка
** Hot Spot ** це частина коду, яка споживає непропорційну частину часу процесора або пам’ яті. Полум’ яні графіки роблять гарячі точки візуально очевидними за допомогою широких смуг.
«Граф полум’я негайно ідентифікував гарячу точку: всі три служби викликали ту ж саму дорогу функцію на кожному кроці»
Overhead
** Надлишок ** — це додаткове споживання ресурсів, яке було введено інструментом або механізмом — у цьому випадку, самим програмою профілювання. Профіль, який споживає 5% процесора, додає 5% накладних витрат.
Профіль Pyroscope на основі eBPF додає мінімальну накладну — менше 1% CPU в більшості завантажень
Інтеграційний словник
Instrumentation
** Інструментація ** — це процес додавання коду або агентів до системи для збору телеметричних даних (метрики, сліди, профілі). Pyroscope підтримує інструменти, засновані на pull- і push-заснованих.
«Ми інструментували сервіс з Pyroscope Go SDK — це зайняло близько 10 рядків коду.»
СДК/Агент
** SDK ** (Software Development Kit) — це бібліотека, яку ви додаєте до вашого коду для пересилання даних до Pyroscope. Агент є причіпним або окремим процесом, який витягує дані з часу виконання без змін коду (наприклад, за допомогою eBPF).
Для Python-сервісів ми використовуємо Pyroscope SDK; для Go, ми оцінюємо агента eBPF, щоб уникнути модифікації коду програми
Exemplar
** приклад ** — це ідентифікатор трасування або інший посилання, вбудований у точку даних метрики або профілю, який надає вам змогу перейти з профілю безпосередньо до відповідного розподіленого трасування.
«Приклади в Pyroscope дозволяють нам перейти від графіка полум’я прямо до сліду Tempo — ця перехресна кореляція сигналів є справжньою силою»
Ключові слова
- ** collect profiles ** — « Піроскоп збирає профілі безперервно зі всіх запущених підпрограм. »
- ** read a flame graph ** — « Потрібно багато практики, щоб ефективно читати графік полум’ я. »
- identify a hot spot — « Ми визначили гарячу точку за кілька хвилин після вмикання профілювання. »
- CPU overhead — « Підтвердити надлишок процесорного часу перед включенням у виробничій обробці »
- profiling data — « Дані профілю зберігаються протягом 30 днів у нашому налаштуванні. »
- ** correlate profiles with traces ** — « Зв’ язувати профілі зі слідами, щоб отримати повний огляд »
- sampling interval — « Встановити інтервал вибірки на основі прийнятних витрат »
- ** memory leak ** — « Профіль купи підтвердив витік пам’ яті у пулі з’ єднань. »
Фрази для оглядів інцидентів і стоянок
-
- “Відкрийте графік пламені для вікна 14: 00 — я хочу побачити, що було гарячим під час піку затримки.” *
- “Профіль процесора показує, що серіалізація є нашою найбільшою проблемою — саме на цьому ми повинні зосередитися в оптимізаційному спринті.”
- “У нас десь витік пам’яті. Профіль купи повинен дати нам інформацію про те, який сайт розподілу відповідає за це.»
-
- “Давайте порівняємо повільний слід з даними профілю з того ж часу.” *
-
- “Перед тим, як ми надамо цю зміну, давайте порівняємо профіль процесора між старою і новою версіями.” *
Practice
Візьміть проблему швидкодії, яку ви нещодавно досліджували (або вигадайте реалістичну проблему) і напишіть резюме інциденту англійською мовою у 4- 6 реченнях, так само, як ви б опублікували його у каналі Slack або документі після смерті. Включіть принаймні 5 термінів з цього підручника: * графік полум’ я *, * гаряча точка *, * профіль процесора *, * частота дискретизації *, * надлишок *, * неперервне профілювання *, * профіль купи * або * кардиналість *. Сфокусуйтеся на ясності: хороше резюме інциденту англійською мовою говорить про те, що сталося, де це сталося в коді, і що було зроблено з цим.