CPU Isolation: исследование в шести частях о применение техник CPU Isolation для задержкочувствительных нагрузок. Недостаточно просто выгнать все процессы, кроме целевого, с ядра с помощью cpuset и привязать его к CPU через taskset. Надо не забыть и о фоновых задачах ядра, т.н. housekeeping work. Housekeeping work – это совокупность фоновых операций, которые ядро Linux выполняет для поддержания своей внутренней инфраструктуры. Эти задачи включают обработку таймеров, обновление системного времени...
Performance matters!
Канал про SRE, Linux и производительность от Александра Лебедева (@alebsys). Разбираю сбои, ускоряю системы, делюсь опытом. 🔹 Обо мне: alebsys.github.io/about 🧑💻 Консультации: alebsys.github.io/mentoring/ 💰 Поддержать: https://boosty.to/troubleperf
Графики
📊 Средний охват постов
📉 ERR % по дням
📋 Публикации по дням
📎 Типы контента
Лучшие публикации
20 из 20Из серии "Смотрите что нашел!" Low latency tuning guide - сборник техник по оптимизации системы для минимизации задержек. Внутри как привычные подходы вроде изоляции ядер и отключения гиперпоточности, так и совсем для меня новые: - сокращение прерываний таймера планировщика через nohz_full, что будет снижать накладные расходы на context swithing. - закрепление страниц в RAM с помощью mlockall(MCL_CURRENT | MCL_FUTURE), чтобы избежать их выгрузки на диск. Особую ценность добавляет обилие ссылок д...
Perf Weekly | №3 (инструменты, системы и производительность) Linux perf-top basics: understand the % perf top базовая утилита, которая в три секунды покажет чем же занят процесс. Полезно делать это эффективно! All Roads Lead to IPC: Rethinking CPU Performance Design IPC как главная метрика CPU. Архитектура процессора, узкие места, latency vs occupation и как это всё применять, чтобы ускорить код. Дорогу осилит идущий 🙂. How can I learn about performance optimization? Большой тред о том, ка...
Об IPC (конспект по книге Performance Analysis and Tuning on Modern CPUs) Я уже писал о показателе Instructions Per Cycle (IPC) (например тут и тут). Сейчас разберём детали глубже. Instruction Per Cycle (IPC) — это среднее количество инструкций, завершённых за один такт процессора: IPC = Retired Instructions / Core Cycles Определим ключевые понятия. Инструкции делятся на executed и retired. - Executed инструкции уже выполнены, но результат ещё не записан в память. Они могут выполняться вне поряд...
Готовлюсь к внутреннему митапу с докладом о потерях сетевого трафика: как их диагностировать и устранять. В основе GIF-анимация, иллюстрирующая путь и остановки входящего сетевого пакета в ядре Linux. Очереди в ядре Linux RX queue. Первая остановка: очередь сетевой карты (см. ethtool -l eth0) QDisc. Приоритизация, модификация и многое другое возможны с помощью дисциплины очередей. Calico, Cilium и подобные ребята перехватывает пакеты именно здесь (eBPF) Input Packet Queue. Очередь перед стеком п...
На днях node-exporter зарелизил версию 1.9.0, где среди изменений мне бросилось в глаза: - [FEATURE] pressure: add IRQ PSI metrics [#3048] В обсуждении к MR был комментарий от @SuperQ: Nice, it's too bad CONFIG_IRQ_TIME_ACCOUNTING is recommend to be off so very few people will benefit from this by default. Что за рекомендации такие и кого они аффектят? ————— Для начала чуть теории 📖 Обработчики прерываний бывает двух типов: аппаратные (Hard IRQ) и программные (SoftIRQ). Hard IRQ ...
Perf Weekly | №1 (инструменты, системы и производительность) Troubleshooting Slow TCP Transfers: A Stack-Level Approach Большинство проблем в production решаются без сложных инструментов. Обычно достаточно стандартных утилит, доступных из любого дистрибутива. Главное понимать, как и где их использовать. Например ss и nstat. Why strong engineers are rarely blocked Заблокированными могут быть не только треды, но и инженеры. По ссылке о важности менеджмента своих активностей, чтобы двигаться быстре...
Профилируя процессы в Linux хорошо бы представлять оверхед от инструментов и выбирать подходящий под задачу. На примере работы утилиты dd сравним накладные расходы strace, perf и bpftrace (eBPF). Для начала запустим dd без оберток: # dd if=/dev/zero of=/dev/null bs=512 count=100k 102400+0 records in 102400+0 records out 52428800 bytes (52 MB, 50 MiB) copied, 0.0229283 s, 2.3 GB/s Скорость в 2.3GB/s будет эталонной, с которой и будем все сравнивать. strace # strace -c dd if=/dev/zero of=/dev/null...
В умных книгах пишут, что к анализу производительности стоит подходить в несколько этапов: 1. определить сколько времени должна занимать работа; 2. измерить сколько работа занимает на самом деле; 3. выдвинуть гипотезу почему есть различия и что фиксить; 4. внести изменения в систему с целью привести (2) к (1); 5. GOTO (2) Если первый этап обычно стабилен и редко меняется, то основное внимание уделяется последующим шагам, при этом пункты с измерениями выглядят наиболее значимыми. И (возможно) сам...
Не знаю как и зачем пишутся статьи на 40 минут чтения, но факт есть: The case of the vanishing CPU: A Linux kernel debugging story Ещё не погружался, но все ключевые слова на месте: CPU throttling, ebpf, perf, kernel bug. Будем разбирать.