Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Regarding the performance issues of links between nodes and the underlying implementation principles. #192

Capybara-1 started this conversation in General
Discussion options

Hello, author. I am a game developer. The game I am currently developing is a partitioned architecture project (i.e., a single game group exclusively occupies a process). This presents a problem: I might start hundreds or even thousands of processes across different physical machines. In this case, if I connect all these processes to each other and they send or receive data among themselves, will there be any performance issues? Also, what is the default underlying keep-alive mechanism between nodes like? Are there any optimization solutions?

You must be logged in to vote

Replies: 1 comment · 3 replies

Comment options

You can see the benchmarks for the network messaging here https://github.com/ergo-services/benchmarks

On CPU with 64 cores it demonstrates almost 5M msg/sec over the network (64 processes are sending message to another 64 processes on the second node) https://x.com/halturin/status/1831820525292880033

For the Erlang stack I published my results here https://x.com/halturin/status/1802801540216054040

Anyway, performance is heavily depends on the specific case and nature of the data.

PS before you start to desing your solution it would be better to read the documentation https://docs.ergo.services/networking/network-stack

You must be logged in to vote
3 replies
@Capybara-1
Comment options

You can see the benchmarks for the network messaging here https://github.com/ergo-services/benchmarks

On CPU with 64 cores it demonstrates almost 5M msg/sec over the network (64 processes are sending message to another 64 processes on the second node) https://x.com/halturin/status/1831820525292880033

For the Erlang stack I published my results here https://x.com/halturin/status/1802801540216054040

Anyway, performance is heavily depends on the specific case and nature of the data.

PS before you start to desing your solution it would be better to read the documentation https://docs.ergo.services/networking/network-stack

I have reviewed the documentation, but I am not currently using a service discovery program like EPMD. Instead, I have implemented ETCD as an additional service discovery mechanism. When a new service registers, I use Node.Network().GetNode to connect to the new node. In this case, if I have many new nodes (for example, hundreds) connecting to the current node simultaneously, could there be issues? Do I have any optimization solutions?

@halturin
Comment options

dont see any problem with it. if you get some, feel free to report.

PS would be great to see your ETCD implementation open-sourced. if it is applicable to the general use case I can add it to the extra library (github.com/ergo-services/registrar).

@Capybara-1
Comment options

dont see any problem with it. if you get some, feel free to report.

PS would be great to see your ETCD implementation open-sourced. if it is applicable to the general use case I can add it to the extra library (github.com/ergo-services/registrar).

I will try to implement it. Thank you very much for your reply!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
2 participants
Morty Proxy This is a proxified and sanitized view of the page, visit original site.