Facebook опубликовала код шести компонентов ядра Linux, призванных решить некоторые проблемы с управлением большими потоками данных. В их числе — файловая система Btrfs, система измерения состояния устройства памяти и ЦП, а также механизм структуризации рабочей нагрузки и распределения ресурсов.
Подробнее об инструментах
- BPF — гибкий и эффективный механизм исполнения кода в ядре Linux. Он позволяет предусматривать для разного кода разное поведение ядра. Facebook приводит в пример возможность фильтрации сетевых пакетов, а также запуск определённых процессов в песочнице.Btrfs — файловая система, работающая по принципу копирования при записи. Она фокусируется на продвинутой реализации функций, отказоустойчивости, восстановлении и простом администрировании. Система предназначена для управления большими подсистемами хранилищ, поддерживает создание снапшотов и онлайн-дефрагментацию.Netconsd — это «демон» модуля Netconsole для передачи сообщений журнала ядра. Он представляет их в структурированном виде, что облегчает инженерам поиск ошибок и проблем.Cgroup2 — это механизм для группировки и структуризации рабочей нагрузки, а также для контроля объёма системных ресурсов, привязанных к каждой группе. Кроме того, он помогает изолировать рабочую нагрузку, расставлять приоритеты и настраивать распределение ресурсов.PSI (Pressure Stall Information) — система измерения нагрузки на основные ресурсы. Она предоставляет данные об устройствах памяти, ввода-вывода, а также центрального процессора. Эти метрики нагрузки вкупе с другими инструментами, которые работают в ядре или пространстве пользователя, позволяют вовремя зафиксировать нехватку ресурсов.Oomd — это инструмент пространства пользователя для принудительного завершения процесса в случае ошибки «Out of memory». Он учитывает его контекст и приоритет среди других запущенных в системе процессов. Oomd также позволяет настроить автоматическую реакцию системы на ситуации с нехваткой памяти.
Все проекты Facebook с открытым кодом, включая представленные компоненты Linux, можно посмотреть на соответствующем сайте.
В мае 2018 года компания опубликовала библиотеку Katran — это программный балансировщик сетевой нагрузки, в котором одну из ведущих ролей играет описанный выше механизм BPF. Балансировщик работает в сочетании с сетевым стеком Linux и запускается параллельно с другими процессами на сервере без ущерба производительности. Кроме того, библиотека устраняет циклы активного ожидания при отсутствии входящих пакетов.
Источник: