#TLB

К вопросу использования #epoll вместо хорошо знакомых и «традиционных» select & poll. Т.е. асинхронной работы с чем-либо посредством polling’а и мультиплексирования.

Недавно пришлось заниматься реализацией очереди событий для AMQP-CPP. В одном из продуктов решено сделать связь агентских частей с основным «контроллером» через #AMQP, в качестве брокера #RabbitMQ (всё стандартно, обычный кластер и TLS-соединения).

Вот только агенты продукта активно используют асинхронно-реактивное программирование с хорошей «горизонтальной масштабируемостью». Когда достигнуто полноценное sharing nothing, не просто горизонтальная масштабируемость через lock-free или wait-free и закон Амдала. Исключается много всего и сразу, как старый-добрый cache ping-pong, так и печаль с false sharing.

Отсюда внутри агентов и своё управление потоками с выделениями памяти. Не только в плане heap (динамической памяти, со своими аллокаторами а-ля #jemalloc от #Facebook), но и приколы вокруг узлов #NUMA и даже huge pages (снижающих «давление» на #TLB, меньше промахов).

Первая же проблема выплыла почти сразу — не реально использовать библиотеку AMQP-CPP с уже предоставляющейся поддержкой #libev, #libuv, #libevent. Несовместимы эти очереди сообщений с имеющейся моделью управления потоками и организации задач на агентах.

Почему был взят epoll

Подход используемый в #epoll выглядит более современно, меньше копирований памяти между user space и kernel space. А при появлении данных в отслеживаемом файловом дескрипторе можно напрямую перейти по указателю на объект класса или структуру данных. Тем самым обходиться без поиска дескриптора по индексным массивам/контейнерам. Сразу же работать с экземплярами объектов оборачивающих нужное #tcp -соединение, того самого, в которое и пришли данные.

И тут обозначилась вторая проблема, что используема AMQP-библиотека не вычитывает данные целиком из потока сокета. Например, забирает данные лишь до тех пор, пока не насытится автомат состояний (finite-state machine), выполняющий парсинг сущностей AMQP-протокола.

Используя #epoll приходится выбирать на какой вариант обработки событий ориентироваться:

  • срабатывание оповещений «по уровню» (level-triggered),
  • выбрасывания событий «по фронту» (edge-triggered).

И беда с библиотекой в очередной раз показала, что нельзя использовать работу «по фронту» (edge-triggered) не изучив досконально работу подсистемы отвечающей за вычитывание данных из файловых дескрипторов. И появление флага EPOLLET в коде является маркером, о том, чтобы проводить аудит использовавшихся решений.

Про Edge Triggered Vs Level Triggered interrupts можно почитать в https://venkateshabbarapu.blogspot.com/2013/03/edge-triggered-vs-level-triggered.html)

#programming #linux #трудовыебудни

2024-12-28

[Перевод] Оптимизация кольцевого буфера для повышения пропускной способности

В этой статье мы рассмотрим классический конкурентный кольцевой буфер и обсудим, как его можно оптимизировать для повышения производительности. Я покажу вам, как существенно улучшить этот показатель от 5,5 миллионов элементов в секунду до 112 миллионов элементов в секунду — и эти показатели выше, чем в реализациях Boost и Folly . Если вам требуется готовая реализация со всеми этими оптимизациями, посмотрите мою библиотеку SPSCQueue.h . Кольцевой буфер также называется очередью «один производитель — один потребитель» (SPSC). В ней не бывает ожидания (и, соответственно, не бывает блокировок), это конкурентный примитив. Такая структура данных находит множество вариантов применения, и здесь я рассмотрю передачу сетевых пакетов между сетевым контроллером и драйверами операционной системы. Основная задача, решаемая при этом — выполнение событий ввода/вывода в относительно новом асинхронном API io_uring .

habr.com/ru/companies/timeweb/

#timeweb_статьи_перевод #SPSC #arm #цп #linux #ядро #amd #mesi #tlb #буфер

Some Bits: Nelson's Linkblogsomebitslinks@tech.lgbt
2023-01-22

Huge Pages are a Good Idea: Linux boxes still use 4k memory pages even though 1GB of RAM for a process is now common. Bigger pages perform better but trigger bugs.
evanjones.ca/hugepages-are-a-g
#via:hackernews #optimization #memory #linux #tlb #+

Alain Portay ⏚AlainPortay@piaille.fr
2022-11-19

Donc je suis retourné sur Twitter et j'ai appris une triste nouvelle.
Pour me forcer à acheter son livre ou à garder mon compte ouvert, @SirYesSir29 ne viendra pas sur Mastodon et je trouve cela scandaleux.
#TLB #Scandale

Copie d'écran d"un message du réseau social Twitter.
La personne qui envoie ce message annonce qu'elle restera sur son réseau social actuel.
Elle l'annonce avec humour en référence au Titanic.
Texte du message de @SirYesSir29
Nan j'irai pas sur Mastodon Jvais rester |a avec les grognons de twitter aka @PoliceCircus et @Henrymonnierbis , comme ['orchestre sur le Titanic la Et au dernier moment, je leur déclamerai un thread. Ce sera beau
2022-11-06

Bonjour les canetons de #TLB,

Plusieurs d’entre vous on migré vers mastodon depuis twitter. C’est cool, ça fait une base de replis libre de droits (contrairement à Discord) en cas de dérive de Twitter.

Je propose donc un truc.

Dans notre profil, on peut ajouter 4 métadonnées. Voici les miennes.

Ma proposition c’est ce champ « À #TLB » où chacun indique son rôle à TLB.

Qu’en dites-vous ?

RT @BecEcologie@twitter.com

La liste #BEC vous invite à une soirée !🤩
Ce mercredi 4 mars, à 19h au Tiers-Lieux en Bigorre, #TLB : Conférence participative "Transition, Effondrement et Résiliences". Valérie Garcia est sophrologue, écopsychologue. Marc Plessier, ingénieur génie mécanique, éco-constructeur.

🐦🔗: twitter.com/BecEcologie/status

BEC Bagnères Ecologie Citoyenbec@mamot.fr
2020-03-03

La liste #BEC vous invite à une soirée !🤩
Ce mercredi 4 mars, à 19h au Tiers-Lieux en Bigorre, #TLB : Conférence participative "Transition, Effondrement et Résiliences". Valérie Garcia est sophrologue, écopsychologue. Marc Plessier, ingénieur génie mécanique, éco-constructeur.

BEC Bagnères Ecologie Citoyenbec@mamot.fr
2020-03-03

La liste #BEC vous invite à une soirée ! 🤩
Ce mercredi 4 mars, à 19h au Tiers-Lieux en Bigorre, #TLB. Conférence participative "Transition, Effondrement et Résiliences". @valeriegarcia1@twitter.com est sophrologue, écopsychologue. @MarcPlessier@twitter.com, ingénieur génie mécanique, éco-constructeur.

RT @BecEcologie@twitter.com

Ici le #TLB #tierslieuxenbigorre porté par des #citoyen.ne.s est une des plus belles avancées #culturelle #sociale #economique du bassin associatif de #bagneresdebigorre. Il faut que ce travail soit accompagné par les #elu.e.s locaux et les collectivités et qu'il soit reproduit twitter.com/pallaspascal/statu

🐦🔗: twitter.com/BecEcologie/status

RT @BecEcologie@twitter.com

Ca vous dirait une soirée projection de
youtu.be/BfZVPFETID8 au #TLB ou ailleurs. Pour ouvrir les #imaginaires et réfléchir à ce qu'il nous attend ?

🐦🔗: twitter.com/BecEcologie/status

BEC Bagnères Ecologie Citoyenbec@mamot.fr
2020-02-05

Ca vous dirait une soirée projection de
youtu.be/BfZVPFETID8 au #TLB ou ailleurs. Pour ouvrir les #imaginaires et réfléchir à ce qu'il nous attend ?

BEC Bagnères Ecologie Citoyenbec@mamot.fr
2020-01-30

Samedi au #TLB #TiersLieuxenBigorre une soirée en soutien aux #grevistes . Rendez-vous à 19 h pour voir lesmutins.org/une-histoire-de- Merci aux @MutinsPangee@twitter.com de cette implication et de leur travail de production de #documentaires importants.

heise online (inoffiziell)heiseonline@squeet.me
2018-06-25
Forscher nutzen Hyper-Threading und den Transaction Lookaside Buffer (TLB) von Intel-Prozessoren, um geschützte Informationen per Seitenkanal abzuschöpfen. www.heise.de/security/meldung/… #Intel #Prozessoren #Security #Sicherheit #Sicherheitslücken #TLB

Client Info

Server: https://mastodon.social
Version: 2025.04
Repository: https://github.com/cyevgeniy/lmst