Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve peer service concurrency (leverage channel parallelism) #242

Open
aramallo opened this issue Mar 27, 2023 · 0 comments
Open

Improve peer service concurrency (leverage channel parallelism) #242

aramallo opened this issue Mar 27, 2023 · 0 comments

Comments

@aramallo
Copy link
Collaborator

aramallo commented Mar 27, 2023

We need to improve Partisan concurrency so that we can capture the benefits of channels and parallelism per channel.

At the moment there is

  • a single peer service manager server per node - this serializes all peer service view management messages and depending on the implementation it might serialise the forwarding of user messages. For example, partisan_pluggable_peer_service_manager serializes them when disable_fast_forward is true (default is false) or when the message forwarding options require Causal Delivery or Acknowledgements. The problem then is that we have a single gen_server instance serializing all connections (channel shards).
  • a single plumtree_broadcast server per node
  • a single rpc_backend server per node - regardless of the number of channel shards

Ideally we should have a single peer_service_manager to maintain the view and a pool of additional servers for handling Causal Delivery, Acks, etc aligned with channel shards, so that we can trully leverage the parallelism offered by them.

In addition, we want to send data directly to the connection sockets rather than sending them to the socket controlling process.

This woudl result in:

  • a peer service manager server instance per node in charge of view management
  • 1 peer service forwarder (manager helper server) per channel connection for message forwarding
  • 1 plumtree broadcast server per channel and/or per channel connection (dependeing on forward_opts() chosen)
  • 1 RPC backend per connection
@aramallo aramallo changed the title Improve concurrency Improve peer service concurrency (leverage channel parallelism) Oct 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant