Ad

Manifold: Fast Erlang/Elixir Node Message Passing

Manifold enables efficient batch message passing between Erlang/Elixir nodes, addressing performance bottlenecks in distributed systems like Discord. It improves message sending speed by distributing work across nodes.
Screenshot of discord/manifold homepage

Manifold accelerates message passing between Erlang/Elixir processes across nodes. It addresses the performance limitations of the standard send/2 function, which can become inefficient when sending to many remote nodes. Manifold achieves this by distributing the sending workload and optimizing message packing and sending strategies.

Manifold significantly reduces message sending latency, observed as a half drop in packets/sec. It offers configurable pack_mode for optimization of large messages via binary encoding. The send_mode allows offloading message sending to dedicated worker processes, tuned for large message workloads. It provides flexibility in configuring senders for optimal performance.

  • Distributed Sending: Distributes message sending to remote nodes, minimizing calls to send/2 on the originating process.
  • Binary Packing: Optimizes handling of large messages by ensuring binary encoding is performed only once.
  • Offload Mode: Offloads message sending to a pool of dedicated processes for large messages, improving throughput.
  • Configurable Senders: Allows adjustment of the number of senders for fine-tuning performance based on workload.
  • Custom GenServer: Offers a configuration option to dispatch messages to a custom GenServer module.
  • Extensible: Provides a configuration option for custom GenServer modules to dispatch messages to.
  • Simple API: Extends the existing send/2 function with additional options for performance tuning.

Manifold has been actively developed and used within Discord for optimization of high-volume message passing. It has a healthy community and active maintenance, evidenced by recent commits and issue resolution. The project's documentation includes clear examples and configuration options, supporting its usability.

Manifold benefits developers building distributed Erlang/Elixir systems by accelerating message passing operations. It is particularly valuable for applications dealing with high message throughput and large message sizes, offering performance gains over standard send/2. It reduces latency and improves scalability compared to traditional approaches.

Languages:
Summarize:
Share:
Stars
1,842
Forks
73
Issues
2
Created
9 years ago
Commit
17 days ago
License
MIT
Archived
No
Updated 16 days ago

Similar Repositories