Distrobox, ядро Linux 6.3 и оптимизация SQL

23 мая 2023
Distrobox, ядро Linux 6.3 и оптимизация SQL

Рассказываем, как завести личный «зоопарк» контейнеров с разными дистрибутивами Linux и что нового в ядре версии 6.3. На закуску практические рекомендации по ускорению работы базы данных c помощью оптимизации запросов через EverSQL.

Коробка с сюрпризами

Споры, какой дистрибутив лучше, не утихают десятилетиями. Одни говорят, что только чистый Debian впитал в себя лучшее из мира Linux. Другие с пеной у рта говорят, что только RPM-based дистрибутивы достойны внимания. А всё остальное — фу, ширпотреб и непригодно. Другие же спокойно ставят себе какой-нибудь OpenSUSE и выходят из чата спорщиков.

Но что делать DevOps-инженеру, которому периодически приходится воевать с множеством разных операционных систем? Можно использовать классическую виртуализацию и заранее подготовить с десяток самых популярных ОС. Это рабочий, но трудозатратный и ресурсоёмкий способ. Гораздо удобнее было бы заготовить много различных контейнеров, но тогда придётся думать над тем, как интегрировать их с хостом. Если вы решили это сделать самостоятельно, советуем посмотреть на проект Distrobox.

Он представляет собой удобную оболочку Podman для создания и запуска Docker-контейнеров, тесно интегрированных с ОС хоста. Все эти контейнеры задействуют образ OCI, который имеет кучу полезных возможностей и помогает организовать доступ:

  • к домашнему каталогу пользователя;
  • сокетам Wayland и X11;
  • сети хоста;
  • съемным устройствам (например, USB-накопителям);
  • журналу systemd и прочим системным утилитам.

Distrobox концептуально схож с проектом Toolbox, но он проще и стремится быть более совместимым. В нём лишь 12 команд, которые позволяют управлять контейнерами и поодиночке, и одновременно. Кроме того, он входит в стандартные репозитории популярных дистрибутивов Linux. В Ubuntu 23.04 устанавливается одной командой:

sudo apt install distrobox

Например, вам захотелось быстро получить контейнер с Fedora:

distrobox create -n Fedora

Параметром -n мы всего лишь задали имя контейнера, но утилита поняла, что нам нужна актуальная версия Fedora. Отвечаем утвердительно на запрос о скачивании образа и спустя минуту всё готово. Проверяем доступные запущенные контейнеры командой:

distrobox-list

В ответ будет выдана таблица со всеми контейнерами в системе. Теперь проваливаемся внутрь контейнера с помощью:

distrobox enter Fedora

Поскольку этот контейнер ещё ни разу не запускался, Podman выполнит запуск и скачивание базовых пакетов. После этого будет выполнен вход в shell:

distrobox enter Fedora

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

Что нового в ядре Linux 6.3

Линус Торвальдс представил обновлённое ядро Linux 6.3. Это не LTS-релиз, но список изменений впечатляет. Акцент был сделан на совместимости, безопасности и скорости. Большое внимание было уделено поддержке оборудования, в том числе ещё не вышедшего. Новое ядро получило улучшенную поддержку жёстких дисков с несколькими головками чтения/записи. Такие диски пока что не встречаются в консьюмерском железе. Их целевая аудитория — операторы облачных инфраструктур и гиперскейлеры.

О существующем оборудовании тоже позаботились, в частности, пофиксили старый баг в работе сетевых адаптеров Intel i219-LM (Intel Gigabit Ethernet, драйвер e1000e). Этот баг возник в 2020 году из-за регрессии ядра версии 5.8 и снизил производительность на 40 процентов. Если копнуть глубже, то по словам специалистов Phoronix проблема была в механизме TSO. Его уже пытались отключать в 5.8, но проблема так и жила 3 года, пока не была исправлена в свежем ядре.

Широкое развитие VPU-ускорителей, встраиваемых в процессоры, не осталось без внимания. В новой версии ядра встроен драйвер, который поддерживает фичи VPU в процессорах Intel 14-го поколения (Meteor Lake). AI-нагрузки станут работать быстрее и это поможет оптимизировать утилизацию доступных ресурсов. Ещё одним событием релиза стала официальная поддержка языка Rust, впервые добавленная в декабре 2022 года. Теперь этот язык становится полноценной альтернативой C в плане разработки ядра.

Процессоры на архитектурах RISC-V стали лучше поддерживать строковые функции. Ну а для ARM-процессоров стали доступны инструкции SME2 (Scalable Matrix Extension), улучшающие производительность умножения матриц. Такие операции типичны в машинном обучении, исследовательском научном моделировании и компьютерном зрении. Китайская архитектура LoongArch получила поддержку рандомизации и перемещения адресного пространства ядра.

Обновление ядра Linux 6.3 принесло множество улучшений и новых возможностей, которые помогут увеличить производительность и безопасность серверов на базе Linux. Первыми опробовать его работу смогут пользователи систем с rolling-release апдейтами, например, OpenSUSE Tumbleweed. Остальные могут самостоятельно скомпилировать ядро из исходников, не дожидаясь его официальной поддержки в дистрибутиве.

Ускоряем NextCloud с EverSQL

Jetbrains опубликовали интересную статью про ускорение веб-сервиса с помощью онлайн-оптимизатора запросов EverSQL и IDE DataGrip. В качестве примера автор показал, как увеличить производительность self-hosted объектного хранилища NextCloud. Эту платформу часто рассматривают в качестве альтернативы Dropbox с поддержкой дополнительных приложений. Написана она на PHP, а для хранения базы данных использует MySQL.

Структура базы данных NextCloud представляет собой почти две сотни таблиц, практически не связанных друг с другом. Блокировки файлов, метаданные, файловый кэш, содержимое галереи, корзина для удалённых элементов — всё это хранится в базе данных и сильно влияет на производительность. Даже если вы храните небольшое количество данных, например 150 Гб, то уже можете столкнуться с низкой скоростью работы. Здесь явно нужна оптимизация, вот только делать её вручную долго и сложно.

На помощь приходят сервисы оптимизации, например, EverSQL. Он платный, однако в качестве демо-версии при регистрации даётся 1 бесплатный кредит для приобретения оптимизации. Работа с этим сервисом очень похожа на поход к врачу. У вас спрашивают на что жалуетесь, больной какой запрос нужно ускорить? А далее собирается анамнез полное описание базы данных. Для этого EverSQL даёт вам гигантский SQL-запрос, который надо выполнить. На выходе вы получите JSON со всеми параметрами БД, но без фактических данных. Его и надо будет загрузить в оптимизатор.

Ещё одним средством диагностики EverSQL является сенсор. Это небольшое приложение на Python, которое будет следить за системой. Под чуткий взор сенсора попадают журналы, загрузка CPU и внешние сигналы. Все медленные запросы отправляются на серверы EverSQL для анализа закономерностей. Спустя несколько недель работы будут выданы конкретные советы по оптимизации производительности. В один клик можно получить команды, которые сделают работу с базой данных быстрее. Все они индивидуальны и будут основаны на вашем конкретном случае.

EverSQL представляет не только комплексный сервис, но и помогает оптимизировать отдельные SQL-запросы. Ими был создан плагин SQL Optimizer, работающих во всех IDE от JetBrains. После его установки достаточно выделить нужный вам SQL-запрос и выбрать в контекстном меню пункт Optimize with EverSQL. Далее откроется веб-страница браузера, где надо выбрать вашу версию СУБД и нажать Continue. После этого вы получите оптимизированную версию этого запроса.

Интересно посмотреть

Если вы пропустили наш прошлый DevOps meetup, ничего страшного. Видео с докладами уже выложены на нашем YouTube-канале в отличном качестве 4K.

Александр Кириллов из Evrone, поделился опытом решения проблем при работе с YAML-манифестами в Kubernetes, такими как ошибки форматирования, промахи в написании типов данных и сложности в работе с большим количеством конфигурационных файлов:

Виталий Гуцалюк из Учи.ру рассказал, как они сделали жизнь разработчиков удобнее, позволяя создавать и настраивать свои сервисы в облаке, без необходимости вмешательства DevOps-инженеров:

Максим Руднёв из VIClouds подробно разобрал процесс разработки в крупных компаниях, наглядно демонстрируя, что отсутствие CI/CD-решений ведёт к большим потерям в производительности команды и скорости сгорания спринта:

Митапы

Онлайн

DevOps Meetup

25 октября 2023

Осенью у нас запланирован DevOps Meetup. Программа мероприятия формируется, но регистрация уже открыта. Кстати, вы уже можете подать доклад прямо в режиме онлайн. Заявки на участие спикера принимаются до 5 октября.

Интересуетесь нашими мероприятиями? В Telegram-канале Evrone meetups мы выкладываем анонсы с подробными описаниями докладов, а также студийные записи прошедших митапов. Тем для кого выступать в новинку, мы оказываем всяческую поддержку и помогаем оформить экспертизу в яркое выступление. Подписывайтесь и пишите @andrew_aquariuss, чтобы узнать подробности.

Регистрация

Вакансии

Удаленка / Офис

Evrone 

 

Мы открыты для новых DevOps-инженеров. В Evrone можно работать удалённо с первого дня, мы поддерживаем и оплачиваем участие в Open-source проектах, а расти в грейдах можно с помощью честной системы проверки навыков и менторства.

Подробнее

Подписаться
на Digest →
Важные новости и мероприятия без спама
Технологии которыми вы владеете и которые вам интересны
Ваш адрес электронной почты в безопасности - вот наша политика конфиденциальности.