Summary
Improve the communication of consensus nodes and oracle nodes.
Do you have any solution you want to propose?
As we discussed at NCA, we want to create separate channels for oracle nodes and high priority p2p message like consensus message through multi-channel technology.
Where in software does this update applies to?
Hi guys, let's discuss here @shargon @belane @igormcoelho @vncoelho @eryeer @doubiliu
Sounds a good idea, I think that @lightszero commented about TCP performance of Akka https://github.com/neo-project/neo/issues/611.
Maybe we could also open an issue on Akka repo to see what they suggest.
Agree, it could be beneficial in high stress scenarios. Taking into account that some tx must be 'high priority', if a cn is requesting it.
@Tommo-L I think that you can start working on this, and we can test the benefits with no-resilience
yeah锛寃e have already start working on it. @eryeer will send the report here after National Day.
We have finished the Akka framework performance test, below is the test report:
Performance of Actor in local machine
Performace of single connection in TCP protocol
Performance of multi-connection with single server port in TCP protocol
Performance of multi-port in TCP protocol
Machine for the performance test
Conclusion
The above performance test is only for the performance of the Akka framework, the test code does not contain the business code of NEO. In next step we will specifically examine the Akka performance in NEO, check each of the various TCP actors' performance under high pressure, such as the message amount transfered per second per connection, the total amount of message traffic, etc., to confirm whether Akka TCP is a bottleneck.
Now we finished the performance test of Akka TCP in Neo
Maximum amount of TCP message sent per second
Conclusion
@shargon @vncoelho What do you think? Any idea or opinion from all of you?
I think this nice empirical and experimental analyses deserves a paper or, at least, a medium post for now.
Let's keep Akka and all the good things it brought to us. In the future we may investigate more.
Congratulations to all NGD guys efforts!
Great work guys, you are able to add some profiler that it could help to find where this time was spent?
@Qiao-Jin is working on the time spenting profiler, he can provide the analysis result and some optimization advice later.
Most helpful comment
We have finished the Akka framework performance test, below is the test report:
Performance of Actor in local machine
Performace of single connection in TCP protocol
Performance of multi-connection with single server port in TCP protocol
> Note: The purpose of this test is to investigate whether TPS can be increased by increasing the number of TCP connections to a single server port. The test method is that the TCP server only opens one port, and the TCP client creates multiple Actors for TCP communication. Each Actor simultaneously sends messages to the binding port of the server, and checks the efficiency of the server receiving messages.
Performance of multi-port in TCP protocol
> Note: The purpose of this test is to investigate whether the TPS can be improved by increasing the opening of the server port. The method of investigation is that the TCP server opens multiple ports, and the TCP client creates a tcp actor for each server port (that is, creates a connection to each server port). Each TCP Actor simultaneously sends messages to the server port to which it is bound, and checks the efficiency of the server receiving the message.
Machine for the performance test
Conclusion