Мы заменили MMAP на Io_uring в нашем движке запросов на Rust. Он стал работать медленнее

Инженерная команда Conviva недавно задокументировала неожиданное снижение производительности при оптимизации своего движка запросов на Rust. Стремясь повысить эффективность ввода-вывода, команда заменила традиционный подход с отображением файлов в память (mmap) на современный интерфейс io_uring в Linux. Вопреки ожиданиям, этот переход привел к увеличению времени выполнения запросов. Технический разбор исследует нюансы асинхронного ввода-вывода, накладные расходы, связанные с системными вызовами, и специфические характеристики нагрузки движка, которые сделали mmap более эффективным. Статья служит предостережением для разработчиков, полагающих, что новые интерфейсы ядра автоматически гарантируют прирост производительности. В ней приводится подробный анализ того, почему накладные расходы на управление очередями отправки и завершения io_uring перевесили преимущества в их архитектуре базы данных, подчеркивая важность тестирования на реальных сценариях использования, а не опоры на теоретические улучшения производительности.
This is a summary. Read the full article at the original source:
Hacker News (YC)Похожие
В статье рассматриваются технические аспекты сбора метрик покрытия кода (code coverage) для операционной системы реального времени «Нейтрино». Автор о…
Статья на Habr поднимает фундаментальные вопросы сериализации данных, выходящие за рамки простого равенства значений. Автор отмечает, что стандартная…
В своей недавней статье Армин Ронахер исследует мотивы создания Astra, нового проекта, направленного на улучшение процесса написания кода. Ронахер раз…


