Skip to content
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

Updating Orleans to .NET 4.5.1 #173

Closed
veikkoeeva opened this issue Feb 28, 2015 · 28 comments
Closed

Updating Orleans to .NET 4.5.1 #173

veikkoeeva opened this issue Feb 28, 2015 · 28 comments

Comments

@veikkoeeva
Copy link
Contributor

In reference to discussion that originates from the sources mentioned at #169, can we update the solution to use .NET 4.5.1 instead of .NET 4.5? It looks like .NET 4.5.2 is out of reach as Azure PaaS doesn't support it -- and otherwise too probably due to reasons Azure PaaS doesn't support it.

For context regarding performance

NET 4.5.1 Is Bigger Than It Appears

  • Under the hood, in .NET 4.5.1, you can now compact the Large Object Heap (LOH) to address heap fragmentation. The LOH mode is part of GCSettings, but Heydarian cautions that “with great power comes great responsibility” and that this should never have be used in ordinary development.
  • Improvements have been made to multicore Just-In-Time (JIT) performance, Heydarian stating a 15% performance improvement for cold startups.

In a broader context, I don't know if there's anything stopping the upgrade. Thinking about on-premises enterprise deployments, .NET 4.5.1 maybe "too new", on the other hand, perhaps the serviceability story is otherwise better. Maybe LOH and faster cold startups aren't a a strong enough reason to update if there are reasons otherwise not to update.

@gabikliot
Copy link
Contributor

Internally, within the Orleans runtime we went through a significant effort years ago to completely remove all usages of LOH. We use dynamic buffer pool of fixed sized buffers for all messages and serialization, thus basically never allocating in the LOH. If the application code within the grain allocates huge chunks of memory that go into LOH, I would personally say - better review your app to remove all LOH allocations, instead of doing on demand LOH compaction.

@veikkoeeva
Copy link
Contributor Author

I agree. It looks like coming down to performance benefits, if any. I'll link a note here with regards to redirecting assembly versions as it may bear some relevane to Issue #174

Starting with Visual Studio 2013, new desktop apps that target the .NET Framework 4.5.1 use automatic binding redirection. This means that if two components reference different versions of the same strong-named assembly, the runtime automatically adds a binding redirection to the newer version of the assembly in the output app configuration (app.config) file. This redirection overrides the assembly unification that might otherwise take place.

@sergeybykov
Copy link
Contributor

I see no reason not to move to 4.5.1.

@carlos-sarmiento
Copy link
Contributor

If we already merged a PR for this issue, shouldn't we close this issue?

EDIT: Ups, didn't look closely at the PR status...

@gabikliot
Copy link
Contributor

I don't think we did. #273. We discussed it and decided not to merge yet, I think.

@sergeybykov
Copy link
Contributor

We decided to merge it when Azure moves to 4.5.2 or 4.6.

@jthelin
Copy link
Member

jthelin commented May 6, 2015

FYI, Azure SDK 2.6 is released now, but still requires explicit install of .NET 4.5.2 or 4.6 rather than it being in the base image, so I think we are still need to stay in the holding pattern on this issue for now based on our N-1 version policy.

http://azure.microsoft.com/en-us/documentation/articles/azure-sdk-dotnet-release-notes-2_6/

"With Azure SDK 2.6 you can develop cloud service applications (PaaS) targeting .NET 4.5.2 or .NET 4.6 provided that you manually install the target .NET Framework on the Cloud Service Role."

http://azure.microsoft.com/en-us/documentation/articles/cloud-services-dotnet-install-dotnet/

@jinjingcai2014
Copy link

I installed Orleans 1.0.8, but get the references by NuGet still is 1.0.7 , How can I solve this problem? The VS2013 come up with this probolem: " ClientGenerator could not compile and generate CSharp -- encountered 3 compilation warnings/errors "?

@sergeybykov
Copy link
Contributor

Try upgrading 1.0.7 NuGet packages referenced by your solution to 1.0.8.

@jinjingcai2014
Copy link

OK I try it.

@jinjingcai2014
Copy link

Ask for help, I meet this problem: "Failed to start Orleans silo 'Primary' as a Primary node. Orleans silo 'Primary' shutdown.",How can I solve the problem?

@sergeybykov
Copy link
Contributor

What kind of deployment is this? The notion of 'Primary' only exist in an on-premises unreliable deployment - http://dotnet.github.io/orleans/Orleans-Configuration-Guide/Typical-Configurations. If you share the logs, it will be easier to help.

@jinjingcai2014
Copy link

I use Local Development to run HelloWorld project. when I refer to the tutorial to complete after the experiment: Running in a Stand alone Silo Microsoft Orleans Tutorial http://dotnet.github.io/orleans/Step-by-step-Tutorials/Running-in-a-Stand-alone-Silo, then I run the Hello again, I met with this problem: "Failed to start Orleans silo 'Primary' as a Primary node. Orleans silo 'Primary' shutdown."

@sergeybykov
Copy link
Contributor

Can you share the logs?

@jinjingcai2014
Copy link

yes HelloWorld.vshost.exe' (CLR v4.0.30319: HelloWorld.vshost.exe): Loaded 'E:\Microsoft Project Orleans SDK v1.0.8\SDK\LocalSilo\Orleans.dll'. Cannot find or open the PDB file.

@jinjingcai2014
Copy link

'HelloWorld.vshost.exe' (CLR v4.0.30319: HelloWorld.vshost.exe): Loaded 'E:\Microsoft Project Orleans SDK v1.0.8\SDK\LocalSilo\HelloWorld.exe'. Symbols loaded.
'HelloWorld.vshost.exe' (CLR v4.0.30319: HelloWorld.vshost.exe): Loaded 'E:\Microsoft Project Orleans SDK v1.0.8\SDK\LocalSilo\IHelloGrainInterface.dll'. Symbols loaded.
'HelloWorld.vshost.exe' (CLR v4.0.30319: HelloWorld.vshost.exe): Loaded 'E:\Microsoft Project Orleans SDK v1.0.8\SDK\LocalSilo\Orleans.dll'. Cannot find or open the PDB file.

@jinjingcai2014
Copy link

sorry, I don't know how to find logs . Is this above ?

@sergeybykov
Copy link
Contributor

That's it? What happens if you manually run E:\Microsoft Project Orleans SDK v1.0.8\SDK\LocalSilo\OrleansHost.exe?

@jinjingcai2014
Copy link

It failed

@sergeybykov
Copy link
Contributor

Logs should be in E:\Microsoft Project Orleans SDK v1.0.8\SDK\LocalSilo.

@sergeybykov
Copy link
Contributor

Just run OrleansHost.exe from a command prompt and capture the console output.

@sergeybykov
Copy link
Contributor

Also make sure you updated the Orleans NuGet packages in your solution to 1.0.8.

@sergeybykov
Copy link
Contributor

Looking at the log you sent, I suspect there is a version mismatch between binaries. I suggest you do the following:

  • Uninstall Orleans SDK
  • Delete E:\Microsoft Project Orleans SDK v1.0.8 folder
  • Install Orleans SDK
  • Try running OrleansHost.exe, and see that it starts fine
  • Create a new solution and projects
  • Copy code from the sample to them
  • Try running the sample

@jinjingcai2014
Copy link

Ok. Thank you for your advice,I'll try it again now.

@jinjingcai2014
Copy link

How do I deployed Orleans on two machines? which is client and which is Server? The tutorial make me very confused!!! http://dotnet.github.io/orleans/Step-by-step-Tutorials/On-Premise-Deployment. I don't know how to deployed . Can you help me?

@jinjingcai2014
Copy link

And I don't know which is Source Location and which is destination locations. These also make me very confused

@sergeybykov
Copy link
Contributor

Have you found this page - http://dotnet.github.io/orleans/Orleans-Configuration-Guide/? Servers are machines running silos. Client is usually a web frontend machine, such as an IIS server. You can deploy multiple servers and multiple (potentially a different number of) clients.

@sergeybykov
Copy link
Contributor

There is no real need or benefit in building Orleans against 4.5.1 as it can already run under 4.5.1 as is.

@dotnet dotnet locked as resolved and limited conversation to collaborators Sep 30, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

6 participants