[
https://issues.apache.org/jira/browse/IGNITE-21039?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Roman Puchkovskiy reassigned IGNITE-21039:
------------------------------------------
Assignee: Roman Puchkovskiy
> Network performance optimization
> --------------------------------
>
> Key: IGNITE-21039
> URL: https://issues.apache.org/jira/browse/IGNITE-21039
> Project: Ignite
> Issue Type: Improvement
> Components: networking
> Affects Versions: 3.0
> Reporter: Alexander Belyak
> Assignee: Roman Puchkovskiy
> Priority: Major
> Labels: ignite-3
>
> I've run several test to find out the MessagingService performance metrics
> and that is what I've found:
> {noformat}
> TestBoolaMessage 139MB/sec WARD
> TestByteaMessage 132MB/sec WARD
> TestDoubleaMessage 102MB/sec WARD
> TestFloataMessage 132MB/sec WARD
> TestDoubleaMessage 130MB/sec WARD
> TestLongaMessage 131MB/sec WARD
> TestDoubleaMessage 131MB/sec WARD
> TestStringaMessage 280MB/sec WARD
> TestBoolMessage 11MB/sec WARD WARD
> TestByteMessage 12MB/sec WARD
> TestDoubleMessage 12MB/sec WARD
> TestFloatMessage 13MB/sec WARD
> TestIntMessage 12MB/sec WARD
> TestLongMessage 11MB/sec WARD
> TestShortMessage 12MB/sec WARD
> TestStringMessage 18MB/sec WARD
> TestBool20Message 15MB/sec WARD
> TestByte20Message 12MB/sec WARD
> TestDouble20Message 32MB/sec WARD
> TestFloat20Message 22MB/sec WARD
> TestInt20Message 13MB/sec WARD
> TestLong20Message 14MB/sec WARD
> TestShort20Message 14MB/sec WARD
> TestString20Message 65MB/sec WARD
> {noformat}
> All messages were sent in the same setup: 2 server nodes, connected with a
> *10GBit* interface. *Iperf3* (iperf3 --time 30 --zerocopy --client
> 192.168.1.126 --omit 3 --interval 1 --length 16384 --window 131072 --parallel
> 2 --json --version4) shows about *850MB/sec* network throughput. But the
> *best AI3* result was only {*}280MB/sec{*}. Upper results use 3 type of
> messages:
> 1. {*}Test<Type>aMessage{*}: array of 163840 elements (primitive, except
> String) of type <Type>.
> 2. {*}Test<Type>Message{*}: single property (primitive, except String) of
> type <Type>
> 3. {*}Test<Type>20Message{*}: 20 property (primitive, except String) of type
> <Type>
> All the messages were sent in parallel from the single thread with the window
> of 100 messages (right after getting another first ack - the new message were
> sent).
> It was expected, that network utilization low for the very short messages
> (like 1 int or 20 int fields), but in comparison with the iperf3 results, the
> performance of MessagingService for 163KBytes messages was very low. It
> became significantly better only while sending huge array of strings (same
> string "{color:#067d17}Test string to check message service
> performance.{color}").
>
> I've run another butch of tests with 1KB byte[] property in the message in 1
> and 8 threads and without send window at all (each thread sends next message
> after getting the ack for the previous one):
> * *1 thread* and got *37 MBytes/sec*
> * *8 threads* and got *63 MBytes/sec* result.
> So I suppose there is pretty much contention.
> All messages were sent in the followin manner:
> {code:java}
> private void send(ClusterNode target, NetworkMessage msg) {
> messagingService.send(target, msg).handle((v, t) -> {
> if (t != null) {
> LOG.info("Error while sending huge message", t);
> }
> if (time() < timeout) {
> send(target, msg);
> }
> }{code}
>
>
> *
--
This message was sent by Atlassian Jira
(v8.20.10#820010)