-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remoting system upgrade #1596
Remoting system upgrade #1596
Conversation
Much better readability on the ReceiveActors. Hopefully there is no problem but there is unknown memory retention ATM. |
616c8fb
to
aa62dbc
Compare
I wonder if behavior-switching could be a culprit here too? |
Have a new test failure around the |
1aed22c
to
f251d14
Compare
This is finished. Going to comment on it in detail now to make it easier to review. |
@@ -32,9 +32,11 @@ private class BenchmarkActorRef : MinimalActorRef | |||
{ | |||
private readonly Counter _counter; | |||
|
|||
public BenchmarkActorRef(Counter counter) | |||
public BenchmarkActorRef(Counter counter, RemoteActorRefProvider provider) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixing some bugs here that I introduced when I changed the way IInboundMessageDispatcher
works - specifically, I changed the way two IActorRef
s compare equality. Instead of using ==
they now use .Equals
, which is correct. Unfortunately that caused this code to throw a NullReferenceException
during the performance test due to the Path
property of BenchmarkActorRef
being null
. These changes fix that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
(we should really go through all of our code to find ==
on actorrefs, I do think we have a few of those. but that is for another issue/task)
result.Exception.Handle(e => true); | ||
return false; | ||
} | ||
return result.Result.All(x => x); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Otherwise, &&
up all of the individual statuses. All pass or none do.
193a62e
to
9e8f7be
Compare
This PR is good to go - I've reviewed everything extensively and commented on each part that does anything significant, including parts that haven't really been modified as part of this PR. cc @akkadotnet/contributors could someone take a look through my comments and do a sanity check? I think it's ready for merge once the tests pass. |
Ah, I almost forgot - we need to do a benchmark comparison. Will include that in comments once we have latest from build server. |
Performance from this build: Akka.Remote.Tests.Performance.Transports.TestTransportRemoteMessagingThroughputSpec+OneWayMeasures the throughput of Akka.Remote over a particular transport using one-way messaging System InfoNBench=NBench, Version=0.1.5.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 NBench SettingsRunMode=Iterations, TestMode=Measurement
NumberOfIterations=13, MaximumRunTime=00:00:01 DataTotals
Per-second Totals
Raw Data(Removed the GC raw data for readability) [Counter] RemoteMessageReceived
|
From the latest dev branch: Akka.Remote.Tests.Performance.Transports.TestTransportRemoteMessagingThroughputSpec+OneWayMeasures the throughput of Akka.Remote over a particular transport using one-way messaging System InfoNBench=NBench, Version=0.1.5.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 NBench SettingsRunMode=Iterations, TestMode=Measurement
NumberOfIterations=13, MaximumRunTime=00:00:01 DataTotals
Per-second Totals
Raw Data(Removed the GC raw data for readability) [Counter] RemoteMessageReceived
|
Looks like an increase of almost 2000 msg / s. I can try running the benchmark multiple times again to eliminate any noise that a specific VM might have created. |
brings Akka.Remote up to code with latest JVM stable converted all Akka.Remote system actors to ReceiveActor fixed race condition in Akka.Remote.Tests.Performance
9e8f7be
to
b642984
Compare
Opening a streaming pull request for a set of changes I'm working on:
ReceiveActor
to make them easier to reason about, with exception of theProtocolStateActor
FSM.RemotingSettings
andRemote.conf
to support some new values.ReliableDeliverySupervisor
and fixing the backoff and buffering mechanism.EndpointManager
,EndpointWriter
, andEndpointReader
where needed.