SpanNetty
SpanNetty copied to clipboard
Port of Netty(v4.1.51.Final) for .NET
SpanNetty
This is a fork of DotNetty.
Build Status
Features
- Align with Netty-4.1.51.Final
- ArrayPooledByteBuffer
- Support Span<byte> and Memory<byte> in Buffer/Common APIs
- Add support for IBufferWriter<byte> to the IByteBuffer
- ByteBufferReader and ByteBufferWriter
- HTTP 2 codec
Use
Performance
OS=Windows 10.0.17134.1667
Intel Xeon CPU E3-1230 V2 3.30GHz, 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=3.1.401
Here are some performance numbers from Akka.RemotePingPong(With SpanNetty) benchmark, which uses high volumes of small messages.
These numbers were all produced on a 4 core Intel i5 3.30hz PC over a single Akka.Remote connection running .NET Core 3.1 on Windows 10:
~ With Message Batching (Socket)
Num clients (actors) | Total [msg] | Msgs/sec | Total [ms] |
---|---|---|---|
1 | 200000 | 74075 | 2700.29 |
5 | 1000000 | 167281 | 5978.33 |
10 | 2000000 | 196406 | 10183.36 |
15 | 3000000 | 209805 | 14299.36 |
20 | 4000000 | 210096 | 19039.21 |
25 | 5000000 | 210678 | 23733.14 |
30 | 6000000 | 203985 | 29414.13 |
Average performance: 181,760 msg/s.
~ With Message Batching (Libuv)
Num clients (actors) | Total [msg] | Msgs/sec | Total [ms] |
---|---|---|---|
1 | 200000 | 76570 | 2612.17 |
5 | 1000000 | 159516 | 6269.25 |
10 | 2000000 | 187161 | 10686.69 |
15 | 3000000 | 198073 | 15146.09 |
20 | 4000000 | 190124 | 21039.95 |
25 | 5000000 | 184027 | 27170.75 |
30 | 6000000 | 173752 | 34532.69 |
Average performance: 167,031 msg/s.
~ With I/O Batching (Socket)
Num clients (actors) | Total [msg] | Msgs/sec | Total [ms] |
---|---|---|---|
1 | 200000 | 64893 | 3082.78 |
5 | 1000000 | 145181 | 6888.77 |
10 | 2000000 | 162761 | 12288.34 |
15 | 3000000 | 160231 | 18723.05 |
20 | 4000000 | 148242 | 26983.94 |
25 | 5000000 | 132269 | 37802.50 |
30 | 6000000 | 123597 | 48545.25 |
Average performance: 133,882 msg/s.
~ With I/O Batching (Libuv)
Num clients (actors) | Total [msg] | Msgs/sec | Total [ms] |
---|---|---|---|
1 | 200000 | 63634 | 3143.60 |
5 | 1000000 | 133298 | 7502.06 |
10 | 2000000 | 149288 | 13397.27 |
15 | 3000000 | 146865 | 20427.17 |
20 | 4000000 | 132101 | 30280.71 |
25 | 5000000 | 115415 | 43322.88 |
30 | 6000000 | 111620 | 53754.96 |
Average performance: 121,745 msg/s.
~ No I/O Batching (Socket)
Num clients (actors) | Total [msg] | Msgs/sec | Total [ms] |
---|---|---|---|
1 | 200000 | 31348 | 6380.59 |
5 | 1000000 | 53698 | 18623.22 |
10 | 2000000 | 62066 | 32224.90 |
15 | 3000000 | 60902 | 49260.73 |
20 | 4000000 | 56694 | 70555.15 |
25 | 5000000 | 15152 | 330000.86 |
Average performance: 46,643 msg/s.
~ No I/O Batching (Libuv)
Num clients (actors) | Total [msg] | Msgs/sec | Total [ms] |
---|---|---|---|
1 | 200000 | 71995 | 2778.50 |
5 | 1000000 | 131441 | 7608.04 |
10 | 2000000 | 144041 | 13885.52 |
15 | 3000000 | 134433 | 22316.79 |
20 | 4000000 | 126575 | 31602.55 |
25 | 5000000 | 120759 | 41405.54 |
30 | 6000000 | 119919 | 50034.57 |
Average performance: 121,309 msg/s.
~ ORIGINAL README ~
DotNetty Project
DotNetty is a port of Netty, asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients.
Use
Contribute
We gladly accept community contributions.
- Issues: Please report bugs using the Issues section of GitHub
- Source Code Contributions:
- Please follow the Contribution Guidelines for Microsoft Azure open source that details information on onboarding as a contributor
- See C# Coding Style for reference on coding style.