Как агрессивные cpu.cfs_quota_us вызывают задержки в многопоточных приложениях даже при среднем потреблении 30% CPU.
#linux
Инженерные статьи и post-mortem разборы по технологии linux.
Материалов: 29Применение критических заплаток безопасности к работающему ядру без прерывания пользовательских TCP-сессий.
Борьба с отказами аллокации страниц высокого порядка (high-order page allocation failures) через min_free_kbytes.
Бенчмарк задержек при передаче сообщений размером 4 КБ и 1 МБ между локальными сервисами.
Практический опыт написания драйвера символьного устройства на Rust: безопасность без сборщика мусора на уровне ring 0.
Расчет Bandwidth-Delay Product (BDP) для сетей 10G/100G с высоким RTT и параметры net.ipv4.tcp_moderate_rcvbuf.
Запуск интеграционных тестов без рутовых привилегий и без зависимости от общего Docker-демона.
Замеры задержек прохождения сетевого стека ядра через veth, macvlan и ipvlan в контейнерных средах.
Настройка evictionHard: memory.available, nodefs.available и резервирование ресурсов system-reserved.
Поиск спинлоков и узких мест в сетевом стеке ядра под нагрузкой 500k сокетов.
Как настроить мягкое троттливание памяти через MemoryHigh вместо мгновенного расстрела процесса через OOM killer.
Анализ блокировок khugepaged при фрагментации памяти и скрипт для гарантированного отключения THP в systemd.
Как миграция с 32-битного i386 на 64-битный x86_64 привела к смещению байтов в бинарном файле состояния.
Сравнение libaio и io_uring: SQPOLL режим ядра, фиксированные буферы и zero-copy запись в WAL-журнал.
Преимущества OnCalendar, автоматической отправки логов в journald и лимитов MemoryMax=1G для фоновых заданий.
Написание минимального XDP-фильтра на C, проброс SYN-cookies через eBPF map и сравнение с iptables RAW table.
Практический чеклист: fs.file-max, net.core.somaxconn, net.ipv4.tcp_rmem, wmem и структура epoll.
Почему локальный стаб 127.0.0.53 в systemd-resolved иногда залипает на NXDOMAIN и как настроить fallback DNS.
Почему списки iptables тормозят при 50 000 правилах, и как nftables sets ускоряют фильтрацию пакетов за счет O(1) поиска.
Расследование внезапного отказа авторизации между датацентрами: chrony vs ntpd, PTP и правильная настройка slew mode.
Разбор поведения аллокатора ptmalloc в многопоточных демонах: MALLOC_ARENA_MAX и переход на jemalloc/mimalloc.
Почему loop-lvm в production это гарантированная катастрофа, и как без простоя смигрировать образы на overlay2.
Как упавшие воркеры не освобождали IPC семафоры в sysvipc, что приводило к ошибке No space left on device в shmget.
Диагностика потерь пакетов на сетевом интерфейсе Intel 10G/40G: ethtool -S, ring buffer rx/tx и бюджет NAPI poll.
Анализ задержек Redis fork() на инстансах с 48 ГБ RAM: Transparent Huge Pages, vm.overcommit_memory и rdbcompression.
Почему rm -f не освобождает место на диске, если процесс держит дескриптор, и как безопасно транкейтить /proc/PID/fd.
Разбор инцидента, когда ядро Linux при нехватке памяти выбрало жертвой не раздувшийся Java-процесс, а легковесный агент мониторинга.
Как постоянное открытие коротких HTTP-соединений между микросервисами привело к исчерпанию портов и лавине 500 ошибок.
История о том, как свободные 400 ГБ на диске не спасли продакшен от ошибки «No space left on device» из-за 100% утилизации таблицы inode.