home.social

#shared_memory — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #shared_memory, aggregated by home.social.

fetched live
  1. Двигаем PostgreSQL в сторону OLAP: оптимизация параллельного вычисления агрегатов

    В данной статье я хочу рассказать о проверке одной гипотезы - возможности использования shared memory для ускорения параллельной агрегации методом хэширования. Статья Xu&Marcus, PVLDB, 2025 утверждает, что общая хэш-таблица — незаслуженно списанный со счетов способ параллельной агрегации, если использовать т.н. тикетинг и разделить операции поиска группы и обновления агрегата. Звучит завлекательно. Собираем в кучу свои знания Internals, подписку на Claude и, поскольку в период летних Heat Wave выходные всё-равно проходят дома под кондиционером - разрабатываем идею так глубоко, насколько это получится.

    habr.com/ru/companies/tantor/a

    #postgresql #shared_memory #aggregation #parallelism #performance #query_execution

  2. Почему JSON на практике — быстрый формат для баз данных (если выкинуть лишние абстракции)

    Мы привыкли считать JSON «медленным» текстовым форматом, удобным исключительно для людей. Мы используем его для REST API, конфигурационных файлов и веб-интерфейсов, но как только речь заходит о высоконагруженных базах данных, мы сразу же смотрим в сторону Protocol Buffers, FlatBuffers или проприетарных бинарных форматов. Но что, если взглянуть на JSON не с человеческой стороны, а со стороны машины? Если убрать тяжелые слои абстракций (такие как рефлексия Go и сетевые оверхеды), стандартный JSON оказывается удивительно плотным, прозрачным и невероятно быстрым в обработке. На его основе можно построить встраиваемый Key-Value движок, который выполняет чтение за 16 наносекунд , а поиск — менее чем за 0.5 миллисекунды на базе в миллион записей. Погрузиться в наносекунды и код

    habr.com/ru/articles/1056718/

    #go #makodb #shared_memory #highload #json #zero_allocation #оптимизация #базы_данных #системное_программирование #асинхронность

  3. Почему multiprocessing.Queue() тормозит и как обойти это с помощью shared_memory

    Привет, Хабр! Вы запускаете многопроцессную задачу, кидаете данные в multiprocessing.Queue() , а потом вдруг замечаете... что всё тормозит. Муторно. Медленно. Местами прям отвратительно. Вы смотрите в монитор, на top, на htop, на код — и не понимаете: ну ведь должно же летать! А не летит.

    habr.com/ru/companies/otus/art

    #python #multiprocessing #очередь #производительность #shared_memory #межпроцессное_взаимодействие #кольцевой_буфер

  4. Эффективное межпроцессное взаимодействие с использованием IPC и Shared Memory

    В данной статье рассматривается использование механизма разделяемой памяти (shared memory) для эффективной передачи данных между независимыми процессами в рамках одной машины. Цель статьи — продемонстрировать не только базовые принципы работы с разделяемой памятью, но и показать, как размещать в ней высокоуровневые контейнеры, такие как хеш-таблицы (unordered_map), а также рассмотреть практический пример потоковой обработки данных при помощи кольцевого буфера.

    habr.com/ru/articles/829334/

    #c #c++ #boost #ipc #shared_memory #interprocess_communications

  5. Как мы используем разделяемую память в Aqueduct

    Привет. Меня зовут Денис Лисовик, я Backend-инженер в команде Data Science SWAT Авито. В этой статье рассказываю, как использовать разделяемую память в Aqueduct. Вместе мы шаг за шагом пройдем от сервиса, который едва держит один RPS, до сервиса, который может держать сотни запросов в секунду. В процессе вы узнаете, как использовать разделяемую память и как сделать так, чтобы она не утекала, а приложение не падало с Segmentation fault.

    habr.com/ru/companies/avito/ar

    #python #shared_memory #multiprocessing

  6. Технология NTB: опыт применения и ее виртуализация QEMU

    В статье мы расскажем о системах хранения данных (СХД), в частности о применении технологии NTB поверх шины PCIe. Наша команда столкнулась с задачей виртуализации технологии NTB в QEMU, решение которой было сведено к созданию частичной виртуализации IDT 89HPES24NT6AG2 PCI Express Switch, модификации модуля ядра Linux для поддержки нашей виртуализации и сборки воедино с помощью Yocto Project.

    habr.com/ru/articles/853486/

    #NTB #qemu #dma #RMDA #PCIE #схд #shared_memory #виртуализация #производительность #linux_kernel

  7. [Перевод] Rust IPC Ping-Pong

    На работе наша команда недавно столкнулась с необходимостью в высокопроизводительном IPC в Rust. Поиск привел нас к содержательной статье от 3tilley « IPC in Rust — a Ping Pong Comparison », что стало превосходной отправной точкой в нашем исследовании. Вдохновляясь этой работой, мы решили копнуть глубже и провести собственные замеры производительности, в особенности нас интересовал новый многообещающий фреймворк iceoryx2. Взяв за основу работу в исходной статье, мы будем использовать UNIX Domain Sockets (как stream, так и datagram), Memory Mapped Files и Shared Memory с использованием iceoryx2 для сравнения производительности IPC между процессами на одной машине для различных размеров пэйлоада.

    habr.com/ru/companies/beget/ar

    #ipc #UNIX_Domain_Stream_Socket #Unix_Datagram_Socket #Memory_Mapped_Files #shared_memory

  8. [Перевод] Руководство по межпроцессному взаимодействию (IPC) в Linux — Часть 1

    Представляю вашему вниманию перевод работы A guide to inter-process communication in Linux . Объём данной работы большой, поэтому перевод будет выполнен в виде нескольких отдельных статей:

    habr.com/ru/articles/819263/

    #ipc #linux #c #shared_memory #shared_storage #semaphore #lock #перевод

  9. Python Multiprocessing. Обмен данными между процессами. Передача объектов пользовательских классов

    Параллельное программирование — сложный, но очень полезный навык для программиста. Оно позволяет эффективно использовать мощности современных компьютеров с несколькими ядрами и процессорами. Это особенно важно при решении сложных задач, например, в инженерных расчетах, обработке мультимедийных данных, обучении нейросетей и многом другом. Модуль Multiprocessing позволяет использовать так называемый истинный параллелизм, то есть создавать процессы, которые выполняются полностью независимо друг от друга. В этом случае процессы не имеют общей памяти и не могут просто так читать и изменять одни и те же переменные. Конечно же, в модуле multiprocessing реализован нативный способ передавать данные между процессами, и даже не один. Однако как только мы отходим от встроенных типов данных, то готовые решения уже не работают. О том, как с этим обходиться, я и расскажу в этой статье.

    habr.com/ru/articles/789904/

    #multiprocessing #DataManager #SyncManager #shared_memory #параллельное_программирование #параллелизм #процесс