- last updated 147 day(s) ago
- 3947 daily downloads
- 1521154 total downloads
- Latest version: 2.5.4
Phobos.Cluster.Benchmarks 2.4.3
Package Description
Install-Package Phobos.Cluster.Benchmarks -Version 2.4.3
dotnet add package Phobos.Cluster.Benchmarks --version 2.4.3
<PackageReference Include="Phobos.Cluster.Benchmarks" Version="2.4.3"/>
paket add Phobos.Cluster.Benchmarks --version 2.4.3
Release Notes
Phobos 2.x Revision Release** Upgraded to [Akka.NET v1.5.14](https://github.com/akkadotnet/akka.net/releases/tag/1.5.14) Updated all `IWithTrace` messages that Phobos uses to propagate `TelemetrySpan`s between actors to implement Akka.NET's `IWrappedMessage` interface - this will cause these messages to properly log their contents when sent to `DeadLetter`s and will also ensure that serialization is handled correctly when `akka.actor.serialize-messages=on` (once https://github.com/akkadotnet/akka.net/pull/7010 is merged) Major Performance Improvements** We've made major performance improvements to all areas of Phobos in 2.4.3. Here's what our in-memory PingPong looks like between versions: 2.4.2** ``` BenchmarkDotNet v0.13.9+228a464e8be6c580ad9408e98f18813f6407fb5a, Windows 11 (10.0.22621.2715/22H2/2022Update/SunValley2) AMD Ryzen 7 6800H with Radeon Graphics, 1 CPU, 16 logical and 8 physical cores .NET SDK 8.0.100 [Host] : .NET 7.0.14 (7.0.1423.51910), X64 RyuJIT AVX2 DefaultJob : .NET 7.0.14 (7.0.1423.51910), X64 RyuJIT AVX2 ``` | Method | MonitoringEnabled | TracingEnabled | Mean | Error | StdDev | Median | Req/sec | |-------------------------------------- |------------------ |--------------- |-----------:|---------:|---------:|-----------:|-------------:| | **Actor_ping_pong_single_pair_in_memory** | **False** | **False** | **264.6 ns** | **4.37 ns** | **4.09 ns** | **264.4 ns** | **3,779,726.78** | | **Actor_ping_pong_single_pair_in_memory** | **False** | **True** | **1,027.5 ns** | **8.65 ns** | **8.09 ns** | **1,028.9 ns** | **973,214.83** | | **Actor_ping_pong_single_pair_in_memory** | **True** | **False** | **345.1 ns** | **6.89 ns** | **16.77 ns** | **335.5 ns** | **2,897,787.55** | | **Actor_ping_pong_single_pair_in_memory** | **True** | **True** | **1,066.8 ns** | **17.63 ns** | **16.49 ns** | **1,067.0 ns** | **937,377.97** | versus 2.4.3** ``` BenchmarkDotNet v0.13.10, Windows 11 (10.0.22621.2715/22H2/2022Update/SunValley2) AMD Ryzen 7 6800H with Radeon Graphics, 1 CPU, 16 logical and 8 physical cores .NET SDK 8.0.100 [Host] : .NET 7.0.14 (7.0.1423.51910), X64 RyuJIT AVX2 DefaultJob : .NET 7.0.14 (7.0.1423.51910), X64 RyuJIT AVX2 ``` | Method | MonitoringEnabled | TracingEnabled | Mean | Error | StdDev | Req/sec | Gen0 | Allocated | |-------------------------------------- |------------------ |--------------- |---------:|---------:|---------:|-------------:|-------:|----------:| | **Actor_ping_pong_single_pair_in_memory** | **False** | **False** | **222.1 ns** | **3.81 ns** | **3.56 ns** | **4,502,145.93** | **0.0055** | **48 B** | | **Actor_ping_pong_single_pair_in_memory** | **False** | **True** | **892.4 ns** | **16.83 ns** | **14.92 ns** | **1,120,553.02** | **0.0781** | **652 B** | | **Actor_ping_pong_single_pair_in_memory** | **True** | **False** | **383.2 ns** | **2.46 ns** | **2.30 ns** | **2,609,607.03** | **0.0055** | **48 B** | | **Actor_ping_pong_single_pair_in_memory** | **True** | **True** | **923.8 ns** | **13.16 ns** | **11.66 ns** | **1,082,481.37** | **0.0781** | **652 B** | This is a 15.4% improvement when both tracing and metrics are enabled. We've also made Phobos' serializer at least twice as fast as it was before; the default filtering engine is 4x faster; and we've made `Baggage` handling much more efficient inside Phobos than it was previously. If we compare some of our end-to-end Akka.Cluster.Sharding benchmarks over the network, the results speak for themselves: 2.4.2** | Method | StateMode | Mean | Error | StdDev | Median | Req/sec | |-------------------------|-------------|------------:|----------:|----------:|------------:|-----------:| | StreamingToLocalEntity | Persistence | 2,293.1 ns | 45.71 ns | 112.98 ns | 2,253.6 ns | 436,097.67 | | StreamingToRemoteEntity | Persistence | 25,087.4 ns | 494.66 ns | 929.09 ns | 25,139.2 ns | 39,860.64 | | StreamingToLocalEntity | DData | 2,731.5 ns | 188.06 ns | 554.50 ns | 2,501.9 ns | 366,094.21 | | StreamingToRemoteEntity | DData | 25,517.2 ns | 503.23 ns | 798.17 ns | 25,546.8 ns | 39,189.19 | 2.4.3** | Method | StateMode | Mean | Error | StdDev | Median | Req/sec | |-------------------------|-------------|------------:|----------:|----------:|------------:|-----------:| | StreamingToLocalEntity | Persistence | 2,239.2 ns | 154.65 ns | 455.99 ns | 1,986.8 ns | 446,597.04 | | StreamingToRemoteEntity | Persistence | 24,179.3 ns | 472.33 ns | 735.35 ns | 24,319.6 ns | 41,357.63 | | StreamingToLocalEntity | DData | 2,227.6 ns | 143.00 ns | 421.64 ns | 1,982.1 ns | 448,915.08 | | StreamingToRemoteEntity | DData | 24,615.0 ns | 486.97 ns | 813.62 ns | 24,651.3 ns | 40,625.66 | There's a lot of things that touch this benchmark (Akka.Remote networking layer, serialization, dispatching, Phobos, etc) - but the overall impact of remote end to end tracing is improved by 4% solely through efficiency improvements in Phobos.
Dependencies
.NETCoreApp
- Phobos.Hosting (>=2.4.3)
- Akka.Persistence.Sqlite (>=1.5.13)
- BenchmarkDotNet (>=0.13.10)
Versions
Info
- last updated 357 day(s) ago
- Project Site
- License Info
Statistics
- 4 total downloads
- 4 downloads of current version
Owners and Products
PetabridgeAuthors
Petabridge
Copyright
Copyright © 2017-2023 Petabridge
Petabridge