Zero-Copy Communication



  • Hallo zusammen, ich habe eine Frage zu zero-copy communication unter Linux.

    Wir haben mehrere binaries (Golang) in mehreren, voneinander isolierten Docker Containern, diese kommunizieren asynchron untereinander, können Nachrichten generieren, senden, lesen und gegebenenfalls weiterleiten oder auslesen und zerstören.

    Die erste Lösung basiert auf ZMQ IPC sockets, welche intern höchstwahrscheinlich die UNIX domain sockets nutzen. Wir erreichen zwar mehrere Gbit/s throughput mit akzeptablen Latenzen aber nach einem idealen Ansatz riecht es nicht. Ideal wäre unserer Vorstellung nach eine zero-copy Lösung, welche chunks von Daten (meist mehrere KiB bis maximal 100 MiB) über shared memory von Peer zu Peer übergibt, ohne diese im Kernel von Buffer zu Buffer hin und her zu kopieren, wird eine Nachricht weitergeleitet so muss diese wiederrum nicht kopiert werden.

    Wie würden wir einen zero-copy Ansatz am besten Umsetzen?




Anmelden zum Antworten