fosstodon.org is one of the many independent Mastodon servers you can use to participate in the fediverse.
Fosstodon is an invite only Mastodon instance that is open to those who are interested in technology; particularly free & open source software. If you wish to join, contact us for an invite.

Administered by:

Server stats:

8.6K
active users

#shared_memory

0 posts0 participants0 posts today
Habr<p>Почему multiprocessing.Queue() тормозит и как обойти это с помощью shared_memory</p><p>Привет, Хабр! Вы запускаете многопроцессную задачу, кидаете данные в multiprocessing.Queue() , а потом вдруг замечаете... что всё тормозит. Муторно. Медленно. Местами прям отвратительно. Вы смотрите в монитор, на top, на htop, на код — и не понимаете: ну ведь должно же летать! А не летит.</p><p><a href="https://habr.com/ru/companies/otus/articles/913200/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">habr.com/ru/companies/otus/art</span><span class="invisible">icles/913200/</span></a></p><p><a href="https://zhub.link/tags/python" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>python</span></a> <a href="https://zhub.link/tags/multiprocessing" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>multiprocessing</span></a> <a href="https://zhub.link/tags/%D0%BE%D1%87%D0%B5%D1%80%D0%B5%D0%B4%D1%8C" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>очередь</span></a> <a href="https://zhub.link/tags/%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>производительность</span></a> <a href="https://zhub.link/tags/shared_memory" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shared_memory</span></a> <a href="https://zhub.link/tags/%D0%BC%D0%B5%D0%B6%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81%D0%BD%D0%BE%D0%B5_%D0%B2%D0%B7%D0%B0%D0%B8%D0%BC%D0%BE%D0%B4%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%B8%D0%B5" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>межпроцессное_взаимодействие</span></a> <a href="https://zhub.link/tags/%D0%BA%D0%BE%D0%BB%D1%8C%D1%86%D0%B5%D0%B2%D0%BE%D0%B9_%D0%B1%D1%83%D1%84%D0%B5%D1%80" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>кольцевой_буфер</span></a></p>
Habr<p>Эффективное межпроцессное взаимодействие с использованием IPC и Shared Memory</p><p>В данной статье рассматривается использование механизма разделяемой памяти (shared memory) для эффективной передачи данных между независимыми процессами в рамках одной машины. Цель статьи — продемонстрировать не только базовые принципы работы с разделяемой памятью, но и показать, как размещать в ней высокоуровневые контейнеры, такие как хеш-таблицы (unordered_map), а также рассмотреть практический пример потоковой обработки данных при помощи кольцевого буфера.</p><p><a href="https://habr.com/ru/articles/829334/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">habr.com/ru/articles/829334/</span><span class="invisible"></span></a></p><p><a href="https://zhub.link/tags/c" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>c</span></a> <a href="https://zhub.link/tags/c" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>c</span></a>++ <a href="https://zhub.link/tags/boost" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>boost</span></a> <a href="https://zhub.link/tags/ipc" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ipc</span></a> <a href="https://zhub.link/tags/shared_memory" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shared_memory</span></a> <a href="https://zhub.link/tags/interprocess_communications" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>interprocess_communications</span></a></p>
Habr<p>Как мы используем разделяемую память в Aqueduct</p><p>Привет. Меня зовут Денис Лисовик, я Backend-инженер в команде Data Science SWAT Авито. В этой статье рассказываю, как использовать разделяемую память в Aqueduct. Вместе мы шаг за шагом пройдем от сервиса, который едва держит один RPS, до сервиса, который может держать сотни запросов в секунду. В процессе вы узнаете, как использовать разделяемую память и как сделать так, чтобы она не утекала, а приложение не падало с Segmentation fault.</p><p><a href="https://habr.com/ru/companies/avito/articles/866338/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">habr.com/ru/companies/avito/ar</span><span class="invisible">ticles/866338/</span></a></p><p><a href="https://zhub.link/tags/python" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>python</span></a> <a href="https://zhub.link/tags/shared_memory" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shared_memory</span></a> <a href="https://zhub.link/tags/multiprocessing" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>multiprocessing</span></a></p>
Habr<p>Технология NTB: опыт применения и ее виртуализация QEMU</p><p>В статье мы расскажем о системах хранения данных (СХД), в частности о применении технологии NTB поверх шины PCIe. Наша команда столкнулась с задачей виртуализации технологии NTB в QEMU, решение которой было сведено к созданию частичной виртуализации IDT 89HPES24NT6AG2 PCI Express Switch, модификации модуля ядра Linux для поддержки нашей виртуализации и сборки воедино с помощью Yocto Project.</p><p><a href="https://habr.com/ru/articles/853486/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">habr.com/ru/articles/853486/</span><span class="invisible"></span></a></p><p><a href="https://zhub.link/tags/NTB" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>NTB</span></a> <a href="https://zhub.link/tags/qemu" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>qemu</span></a> <a href="https://zhub.link/tags/dma" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>dma</span></a> <a href="https://zhub.link/tags/RMDA" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>RMDA</span></a> <a href="https://zhub.link/tags/PCIE" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>PCIE</span></a> <a href="https://zhub.link/tags/%D1%81%D1%85%D0%B4" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>схд</span></a> <a href="https://zhub.link/tags/shared_memory" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shared_memory</span></a> <a href="https://zhub.link/tags/%D0%B2%D0%B8%D1%80%D1%82%D1%83%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>виртуализация</span></a> <a href="https://zhub.link/tags/%D0%BF%D1%80%D0%BE%D0%B8%D0%B7%D0%B2%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>производительность</span></a> <a href="https://zhub.link/tags/linux_kernel" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>linux_kernel</span></a></p>
Habr<p>[Перевод] Rust IPC Ping-Pong</p><p>На работе наша команда недавно столкнулась с необходимостью в высокопроизводительном IPC в Rust. Поиск привел нас к содержательной статье от 3tilley « IPC in Rust — a Ping Pong Comparison », что стало превосходной отправной точкой в нашем исследовании. Вдохновляясь этой работой, мы решили копнуть глубже и провести собственные замеры производительности, в особенности нас интересовал новый многообещающий фреймворк iceoryx2. Взяв за основу работу в исходной статье, мы будем использовать UNIX Domain Sockets (как stream, так и datagram), Memory Mapped Files и Shared Memory с использованием iceoryx2 для сравнения производительности IPC между процессами на одной машине для различных размеров пэйлоада.</p><p><a href="https://habr.com/ru/companies/beget/articles/851788/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="ellipsis">habr.com/ru/companies/beget/ar</span><span class="invisible">ticles/851788/</span></a></p><p><a href="https://zhub.link/tags/ipc" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ipc</span></a> <a href="https://zhub.link/tags/UNIX_Domain_Stream_Socket" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>UNIX_Domain_Stream_Socket</span></a> <a href="https://zhub.link/tags/Unix_Datagram_Socket" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Unix_Datagram_Socket</span></a> <a href="https://zhub.link/tags/Memory_Mapped_Files" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>Memory_Mapped_Files</span></a> <a href="https://zhub.link/tags/shared_memory" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shared_memory</span></a></p>
Habr<p>[Перевод] Руководство по межпроцессному взаимодействию (IPC) в Linux — Часть 1</p><p>Представляю вашему вниманию перевод работы A guide to inter-process communication in Linux . Объём данной работы большой, поэтому перевод будет выполнен в виде нескольких отдельных статей:</p><p><a href="https://habr.com/ru/articles/819263/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">habr.com/ru/articles/819263/</span><span class="invisible"></span></a></p><p><a href="https://zhub.link/tags/ipc" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>ipc</span></a> <a href="https://zhub.link/tags/linux" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>linux</span></a> <a href="https://zhub.link/tags/c" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>c</span></a> <a href="https://zhub.link/tags/shared_memory" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shared_memory</span></a> <a href="https://zhub.link/tags/shared_storage" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shared_storage</span></a> <a href="https://zhub.link/tags/semaphore" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>semaphore</span></a> <a href="https://zhub.link/tags/lock" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>lock</span></a> <a href="https://zhub.link/tags/%D0%BF%D0%B5%D1%80%D0%B5%D0%B2%D0%BE%D0%B4" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>перевод</span></a></p>
Habr<p>Python Multiprocessing. Обмен данными между процессами. Передача объектов пользовательских классов</p><p>Параллельное программирование — сложный, но очень полезный навык для программиста. Оно позволяет эффективно использовать мощности современных компьютеров с несколькими ядрами и процессорами. Это особенно важно при решении сложных задач, например, в инженерных расчетах, обработке мультимедийных данных, обучении нейросетей и многом другом. Модуль Multiprocessing позволяет использовать так называемый истинный параллелизм, то есть создавать процессы, которые выполняются полностью независимо друг от друга. В этом случае процессы не имеют общей памяти и не могут просто так читать и изменять одни и те же переменные. Конечно же, в модуле multiprocessing реализован нативный способ передавать данные между процессами, и даже не один. Однако как только мы отходим от встроенных типов данных, то готовые решения уже не работают. О том, как с этим обходиться, я и расскажу в этой статье.</p><p><a href="https://habr.com/ru/articles/789904/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">habr.com/ru/articles/789904/</span><span class="invisible"></span></a></p><p><a href="https://zhub.link/tags/multiprocessing" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>multiprocessing</span></a> <a href="https://zhub.link/tags/DataManager" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>DataManager</span></a> <a href="https://zhub.link/tags/SyncManager" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>SyncManager</span></a> <a href="https://zhub.link/tags/shared_memory" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>shared_memory</span></a> <a href="https://zhub.link/tags/%D0%BF%D0%B0%D1%80%D0%B0%D0%BB%D0%BB%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>параллельное_программирование</span></a> <a href="https://zhub.link/tags/%D0%BF%D0%B0%D1%80%D0%B0%D0%BB%D0%BB%D0%B5%D0%BB%D0%B8%D0%B7%D0%BC" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>параллелизм</span></a> <a href="https://zhub.link/tags/%D0%BF%D1%80%D0%BE%D1%86%D0%B5%D1%81%D1%81" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>процесс</span></a></p>