Phobos
Enterprise Application Monitoring and Management for Akka.NET OSS
Published by Petabridge
  • last updated 25 day(s) ago
  • 4059 daily downloads
  • 1704793 total downloads
  • Latest version: 2.8.2

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
782
25 day(s) ago
261
26 day(s) ago
621
33 day(s) ago
777
40 day(s) ago
1196
59 day(s) ago
141
66 day(s) ago
1139
74 day(s) ago
40417
235 day(s) ago
734
245 day(s) ago
446
251 day(s) ago
15030
334 day(s) ago
8326
370 day(s) ago
2506
404 day(s) ago
591
439 day(s) ago
5113
446 day(s) ago
96
494 day(s) ago
6455
517 day(s) ago
11472
577 day(s) ago
360
580 day(s) ago
8318
635 day(s) ago
8237
661 day(s) ago
758
664 day(s) ago
4168
664 day(s) ago
44
669 day(s) ago
1830
718 day(s) ago
4
719 day(s) ago
1778
763 day(s) ago
257
851 day(s) ago
144
924 day(s) ago
65230
983 day(s) ago
77
987 day(s) ago
42
991 day(s) ago
55
998 day(s) ago
16
1012 day(s) ago
4205
1035 day(s) ago
148
1041 day(s) ago
54
1042 day(s) ago
13587
1042 day(s) ago
7
1042 day(s) ago
439
1068 day(s) ago
4
1068 day(s) ago
12303
1077 day(s) ago
456
1111 day(s) ago
15
1112 day(s) ago
2011
1112 day(s) ago
101
1118 day(s) ago
57
1125 day(s) ago
6956
1141 day(s) ago
444
1154 day(s) ago
499
1166 day(s) ago
7133
1187 day(s) ago
1173
1223 day(s) ago
709
1225 day(s) ago
3259
1258 day(s) ago
2319
1279 day(s) ago
683
1287 day(s) ago
1970
1341 day(s) ago
1456
1357 day(s) ago
248
1363 day(s) ago
3407
1383 day(s) ago
5798
1427 day(s) ago
11056
1484 day(s) ago
108
1488 day(s) ago
88
1488 day(s) ago
88
1488 day(s) ago
88
1488 day(s) ago
561
1518 day(s) ago
212
1533 day(s) ago
1609
1554 day(s) ago
844
1589 day(s) ago
1252
1601 day(s) ago
80
1601 day(s) ago

Info

Statistics

  • 272848 total downloads
  • 8326 downloads of current version

Owners and Products

Petabridge Petabridge

Authors

Petabridge

Copyright

Copyright © 2017-2023 Petabridge

Petabridge