Phobos
Enterprise Application Monitoring and Management for Akka.NET OSS
Published by Petabridge
  • last updated 37 day(s) ago
  • 3361 daily downloads
  • 1899327 total downloads
  • Latest version: 2.8.4

Phobos.Actor 2.5.0

Automatic Akka.NET tracing and monitoring integration as part of the Phobos Enterprise Framework.

Install-Package Phobos.Actor -Version 2.5.0
dotnet add package Phobos.Actor --version 2.5.0
<PackageReference Include="Phobos.Actor" Version="2.5.0"/>
paket add Phobos.Actor --version 2.5.0

Release Notes

Phobos 2.5 Minor Release** Phobos 2.5.0 is, once again, a _massive performance upgrade_ over Phobos 2.4.5 and earlier. 62% faster when both tracing and metrics are enabled, in fact. Performance Improvements** We followed more of the same techniques we described in "[How We Made Phobos 2.4's OpenTelemetry Usage 62% Faster](https://petabridge.com/blog/phobos-2.4-opentelemetry-optimizations/)" and were able to move major heavy sources of allocations outside of Phobos' performance critical path. Our throughput in v2.4.5: | Metric | Units / s | Max / s | Average / s | Min / s | StdDev / s | |---------------- |---------------- |---------------- |---------------- |---------------- |---------------- | |TotalCollections [Gen0] | collections | 83.31 | 81.55 | 80.38 | 0.88 | |TotalCollections [Gen1] | collections | 5.80 | 5.08 | 4.27 | 0.49 | |TotalCollections [Gen2] | collections | 2.17 | 1.97 | 1.42 | 0.31 | |[Counter] MessageReceived | operations | 2,173,276.34 | 2,131,567.21 | 2,096,899.11 | 23,842.54 | Here's what our performance looked like in v2.5, in terms of total instrumented throughput: | Metric | Units / s | Max / s | Average / s | Min / s | StdDev / s | |---------------- |---------------- |---------------- |---------------- |---------------- |---------------- | |TotalCollections [Gen0] | collections | 20.43 | 19.65 | 18.86 | 0.48 | |TotalCollections [Gen1] | collections | 7.04 | 5.83 | 4.96 | 0.65 | |TotalCollections [Gen2] | collections | 3.06 | 2.68 | 1.98 | 0.47 | |[Counter] MessageReceived | operations | 3,064,477.84 | 2,994,416.62 | 2,891,043.79 | 53,773.16 | In terms of total throughput, we're looking at an **average improvement of 41% efficiency**. But when it comes to hotpath _memory consumption_, the numbers are even more incredible (you can also tell by looking at the stark difference in GC activity between 2.4.5 and 2.5.0): ``` BenchmarkDotNet v0.13.10, Windows 11 (10.0.22621.3007/22H2/2022Update/SunValley2) 12th Gen Intel Core i7-1260P, 1 CPU, 16 logical and 12 physical cores .NET SDK 8.0.101 [Host] : .NET 7.0.15 (7.0.1523.57226), X64 RyuJIT AVX2 DefaultJob : .NET 7.0.15 (7.0.1523.57226), X64 RyuJIT AVX2 ``` | Method | MessageKind | Mean | Error | StdDev | Req/sec | Gen0 | Allocated | |--------------------------- |------------ |---------:|--------:|--------:|-------------:|-------:|----------:| | **CreateNewRootSpan** | **Primitive** | **139.7 ns** | **2.10 ns** | **1.86 ns** | **7,157,539.53** | **0.0305** | **288 B** | | CreateChildSpan | Primitive | 142.2 ns | 2.35 ns | 2.19 ns | 7,030,112.29 | 0.0305 | 288 B | | CreateChildSpanWithBaggage | Primitive | 147.8 ns | 2.28 ns | 2.13 ns | 6,766,701.91 | 0.0305 | 288 B | | **CreateNewRootSpan** | **Class** | **139.1 ns** | **2.34 ns** | **2.18 ns** | **7,191,051.43** | **0.0305** | **288 B** | | CreateChildSpan | Class | 141.8 ns | 2.03 ns | 1.90 ns | 7,054,363.87 | 0.0305 | 288 B | | CreateChildSpanWithBaggage | Class | 148.6 ns | 1.44 ns | 1.20 ns | 6,731,252.60 | 0.0305 | 288 B | | **CreateNewRootSpan** | **Record** | **141.1 ns** | **2.47 ns** | **2.43 ns** | **7,086,392.57** | **0.0305** | **288 B** | | CreateChildSpan | Record | 141.0 ns | 1.68 ns | 1.57 ns | 7,090,756.01 | 0.0305 | 288 B | | CreateChildSpanWithBaggage | Record | 149.7 ns | 2.62 ns | 2.45 ns | 6,678,880.92 | 0.0305 | 288 B | in 2.4.5 Phobos allocated 288 bytes per span (in this fixed-size test case - real-world values could be much larger.) But in 2.5.0... ``` BenchmarkDotNet v0.13.10, Windows 11 (10.0.22621.3007/22H2/2022Update/SunValley2) 12th Gen Intel Core i7-1260P, 1 CPU, 16 logical and 12 physical cores .NET SDK 8.0.101 [Host] : .NET 7.0.15 (7.0.1523.57226), X64 RyuJIT AVX2 DefaultJob : .NET 7.0.15 (7.0.1523.57226), X64 RyuJIT AVX2 ``` | Method | MessageKind | Mean | Error | StdDev | Req/sec | Gen0 | Allocated | |--------------------------- |------------ |---------:|---------:|---------:|--------------:|-------:|----------:| | **CreateNewRootSpan** | **Primitive** | **59.97 ns** | **0.637 ns** | **0.565 ns** | **16,676,180.98** | **0.0050** | **48 B** | | CreateChildSpan | Primitive | 67.24 ns | 0.943 ns | 0.836 ns | 14,871,155.56 | 0.0050 | 48 B | | CreateChildSpanWithBaggage | Primitive | 77.87 ns | 0.871 ns | 0.814 ns | 12,842,151.57 | 0.0050 | 48 B | | **CreateNewRootSpan** | **Class** | **59.70 ns** | **0.695 ns** | **0.616 ns** | **16,749,521.86** | **0.0050** | **48 B** | | CreateChildSpan | Class | 63.69 ns | 0.715 ns | 0.669 ns | 15,701,818.74 | 0.0050 | 48 B | | CreateChildSpanWithBaggage | Class | 71.53 ns | 0.650 ns | 0.576 ns | 13,979,808.57 | 0.0050 | 48 B | | **CreateNewRootSpan** | **Record** | **56.55 ns** | **0.258 ns** | **0.229 ns** | **17,684,262.41** | **0.0051** | **48 B** | | CreateChildSpan | Record | 64.35 ns | 0.369 ns | 0.288 ns | 15,538,845.63 | 0.0050 | 48 B | | CreateChildSpanWithBaggage | Record | 72.41 ns | 0.655 ns | 0.613 ns | 13,809,634.69 | 0.0050 | 48 B | That same test case now only allocates 48 bytes per span - 83% less memory than we used before. Reduced Noise from `IStash`** We've also made a significant noise control improvement: `IStash` no longer produces separate operations that appear in traces any longer. The `akka.msg.stash` and `akka.msg.unstash` no longer appear as their own distinct `Activity` / `TelemetrySpan` operations during tracing; rather, when stashing and unstashing occur in 2.5 they will be appended as `akka.msg.stash` and `akka.msg.unstash` events on the original `akka.msg.recv <messageType>` operation - and that operation will now remain open until the stashed message is finally unstashed and processed.

Dependencies

.NETCoreApp

.NETStandard

Versions

Version
Downloads
Last Updated
1325
37 day(s) ago
3989
85 day(s) ago
2232
119 day(s) ago
673
120 day(s) ago
1424
126 day(s) ago
834
133 day(s) ago
1241
153 day(s) ago
182
159 day(s) ago
1221
168 day(s) ago
55547
329 day(s) ago
774
339 day(s) ago
653
345 day(s) ago
16527
428 day(s) ago
9295
464 day(s) ago
2547
498 day(s) ago
631
532 day(s) ago
5912
539 day(s) ago
136
588 day(s) ago
6864
611 day(s) ago
11577
671 day(s) ago
400
674 day(s) ago
8358
729 day(s) ago
8647
755 day(s) ago
798
758 day(s) ago
4209
758 day(s) ago
84
763 day(s) ago
1870
811 day(s) ago
4
813 day(s) ago
1818
856 day(s) ago
257
945 day(s) ago
144
1018 day(s) ago
65449
1077 day(s) ago
117
1081 day(s) ago
82
1085 day(s) ago
95
1092 day(s) ago
16
1105 day(s) ago
4246
1129 day(s) ago
188
1135 day(s) ago
94
1136 day(s) ago
13635
1136 day(s) ago
47
1136 day(s) ago
439
1161 day(s) ago
4
1161 day(s) ago
12438
1171 day(s) ago
456
1205 day(s) ago
15
1206 day(s) ago
2051
1206 day(s) ago
101
1212 day(s) ago
97
1219 day(s) ago
6996
1235 day(s) ago
484
1248 day(s) ago
539
1259 day(s) ago
7173
1280 day(s) ago
1213
1317 day(s) ago
749
1319 day(s) ago
3299
1352 day(s) ago
2360
1373 day(s) ago
723
1381 day(s) ago
2010
1435 day(s) ago
1498
1451 day(s) ago
288
1457 day(s) ago
3448
1477 day(s) ago
5839
1520 day(s) ago
11097
1578 day(s) ago
154
1582 day(s) ago
129
1582 day(s) ago
129
1582 day(s) ago
129
1582 day(s) ago
602
1612 day(s) ago
253
1627 day(s) ago
1651
1647 day(s) ago
887
1682 day(s) ago
1296
1695 day(s) ago
124
1695 day(s) ago

Info

Statistics

  • 302813 total downloads
  • 9295 downloads of current version

Owners and Products

Petabridge Petabridge

Authors

Petabridge

Copyright

Copyright © 2017-2023 Petabridge

Petabridge