Closed Aaronontheweb closed 8 years ago
Throughput is reasonable, but not great, at 100k messages per second.
But the number that concerns me is memory allocation, sitting at 2,624,928.00 bytes per 1000 messages. That includes both sending and receiving of the message.... But the other part that's a bit scary is that there's no observable garbage collection at all, whcih leads me to believe there might be a memory leak.
It's possible that this is just the result of Helios expanding its receive buffer, but I doubt it.
Either way, about damn time we had NBench coverage for this project.
UDP results are similar
Tests a full request/response sequence for 1000 messages 4/13/2016 1:06:36 AM
NBench=NBench, Version=0.2.1.0, Culture=neutral, PublicKeyToken=null
OS=Microsoft Windows NT 6.2.9200.0
ProcessorCount=4
CLR=4.0.30319.42000,IsMono=False,MaxGcGeneration=2
WorkerThreads=32767, IOThreads=4
RunMode=Iterations, TestMode=Measurement
NumberOfIterations=13, MaximumRunTime=00:00:01
Metric | Units | Max | Average | Min | StdDev |
---|---|---|---|---|---|
TotalBytesAllocated | bytes | 2,683,304.00 | 2,621,415.38 | 2,594,768.00 | 22,950.99 |
TotalCollections [Gen0] | collections | 0.00 | 0.00 | 0.00 | 0.00 |
TotalCollections [Gen1] | collections | 0.00 | 0.00 | 0.00 | 0.00 |
TotalCollections [Gen2] | collections | 0.00 | 0.00 | 0.00 | 0.00 |
[Counter] MessagesReceived | operations | 1,000.00 | 1,000.00 | 1,000.00 | 0.00 |
Metric | Units / s | Max / s | Average / s | Min / s | StdDev / s |
---|---|---|---|---|---|
TotalBytesAllocated | bytes | 296,714,067.72 | 284,466,083.54 | 273,768,026.26 | 6,026,048.40 |
TotalCollections [Gen0] | collections | 0.00 | 0.00 | 0.00 | 0.00 |
TotalCollections [Gen1] | collections | 0.00 | 0.00 | 0.00 | 0.00 |
TotalCollections [Gen2] | collections | 0.00 | 0.00 | 0.00 | 0.00 |
[Counter] MessagesReceived | operations | 111,282.98 | 108,515.75 | 104,880.07 | 2,063.00 |
Run # | bytes | bytes / s | ns / bytes |
---|---|---|---|
1 | 2,619,344.00 | 277,284,891.60 | 3.61 |
2 | 2,647,944.00 | 280,805,955.59 | 3.56 |
3 | 2,611,552.00 | 285,640,285.25 | 3.50 |
4 | 2,602,200.00 | 285,755,073.36 | 3.50 |
5 | 2,610,296.00 | 273,768,026.26 | 3.65 |
6 | 2,632,584.00 | 286,855,100.57 | 3.49 |
7 | 2,608,960.00 | 276,610,227.00 | 3.62 |
8 | 2,683,304.00 | 296,714,067.72 | 3.37 |
9 | 2,622,592.00 | 286,262,293.29 | 3.49 |
10 | 2,594,768.00 | 288,753,519.32 | 3.46 |
11 | 2,610,552.00 | 286,921,140.85 | 3.49 |
12 | 2,621,992.00 | 287,111,899.52 | 3.48 |
13 | 2,612,312.00 | 285,576,605.63 | 3.50 |
Run # | collections | collections / s | ns / collections |
---|---|---|---|
1 | 0.00 | 0.00 | 9,446,400.00 |
2 | 0.00 | 0.00 | 9,429,800.00 |
3 | 0.00 | 0.00 | 9,142,800.00 |
4 | 0.00 | 0.00 | 9,106,400.00 |
5 | 0.00 | 0.00 | 9,534,700.00 |
6 | 0.00 | 0.00 | 9,177,400.00 |
7 | 0.00 | 0.00 | 9,431,900.00 |
8 | 0.00 | 0.00 | 9,043,400.00 |
9 | 0.00 | 0.00 | 9,161,500.00 |
10 | 0.00 | 0.00 | 8,986,100.00 |
11 | 0.00 | 0.00 | 9,098,500.00 |
12 | 0.00 | 0.00 | 9,132,300.00 |
13 | 0.00 | 0.00 | 9,147,500.00 |
Run # | collections | collections / s | ns / collections |
---|---|---|---|
1 | 0.00 | 0.00 | 9,446,400.00 |
2 | 0.00 | 0.00 | 9,429,800.00 |
3 | 0.00 | 0.00 | 9,142,800.00 |
4 | 0.00 | 0.00 | 9,106,400.00 |
5 | 0.00 | 0.00 | 9,534,700.00 |
6 | 0.00 | 0.00 | 9,177,400.00 |
7 | 0.00 | 0.00 | 9,431,900.00 |
8 | 0.00 | 0.00 | 9,043,400.00 |
9 | 0.00 | 0.00 | 9,161,500.00 |
10 | 0.00 | 0.00 | 8,986,100.00 |
11 | 0.00 | 0.00 | 9,098,500.00 |
12 | 0.00 | 0.00 | 9,132,300.00 |
13 | 0.00 | 0.00 | 9,147,500.00 |
Run # | collections | collections / s | ns / collections |
---|---|---|---|
1 | 0.00 | 0.00 | 9,446,400.00 |
2 | 0.00 | 0.00 | 9,429,800.00 |
3 | 0.00 | 0.00 | 9,142,800.00 |
4 | 0.00 | 0.00 | 9,106,400.00 |
5 | 0.00 | 0.00 | 9,534,700.00 |
6 | 0.00 | 0.00 | 9,177,400.00 |
7 | 0.00 | 0.00 | 9,431,900.00 |
8 | 0.00 | 0.00 | 9,043,400.00 |
9 | 0.00 | 0.00 | 9,161,500.00 |
10 | 0.00 | 0.00 | 8,986,100.00 |
11 | 0.00 | 0.00 | 9,098,500.00 |
12 | 0.00 | 0.00 | 9,132,300.00 |
13 | 0.00 | 0.00 | 9,147,500.00 |
Run # | operations | operations / s | ns / operations |
---|---|---|---|
1 | 1,000.00 | 105,860.43 | 9,446.40 |
2 | 1,000.00 | 106,046.79 | 9,429.80 |
3 | 1,000.00 | 109,375.68 | 9,142.80 |
4 | 1,000.00 | 109,812.88 | 9,106.40 |
5 | 1,000.00 | 104,880.07 | 9,534.70 |
6 | 1,000.00 | 108,963.32 | 9,177.40 |
7 | 1,000.00 | 106,023.18 | 9,431.90 |
8 | 1,000.00 | 110,577.88 | 9,043.40 |
9 | 1,000.00 | 109,152.43 | 9,161.50 |
10 | 1,000.00 | 111,282.98 | 8,986.10 |
11 | 1,000.00 | 109,908.23 | 9,098.50 |
12 | 1,000.00 | 109,501.44 | 9,132.30 |
13 | 1,000.00 | 109,319.49 | 9,147.50 |
Done, fixed as part of 2.1
Some specs fresh off the build server for the
dev
branch:Helios.Tests.Performance.Socket.TcpThroughputSpec+OneWayThroughputBenchmark
Tests a full request/response sequence for 1000 messages 4/13/2016 1:06:35 AM
System Info
NBench Settings
Data
Totals
Per-second Totals
Raw Data
TotalBytesAllocated
TotalCollections [Gen0]
TotalCollections [Gen1]
TotalCollections [Gen2]
[Counter] MessagesReceived