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

Ensure .NET Core respects and plays nicely with Docker limits #10703

Closed
richlander opened this issue Jul 17, 2018 · 6 comments
Closed

Ensure .NET Core respects and plays nicely with Docker limits #10703

richlander opened this issue Jul 17, 2018 · 6 comments
Assignees
Labels
area-VM-coreclr enhancement Product code improvement that does NOT require public API changes/additions
Milestone

Comments

@richlander
Copy link
Member

Docker enables you to limit a container's resources. This control is great for high-density hosting and other low-resource scenarios. Developers have the expectation that the application platform respects these limits and does its best to work within them.

I wrote a crude test framework to determine how .NET Core behaves when various resource limits are set. You can see the test results.

The results I saw made some sense -- workstation performed better than server gc in this environment -- however some other characteristics were surprising. It could be that my tests were flawed.

Our first goal is to provide developers with guidance. For example, if there a minimum memory limit that is required to run an app in production? Is server gc currently safe to run with docker limits?

Our next goal is to update the product, as appropriate, to ensure that it works well with Docker limits, and then to update guidance appropriately.

Once we are done, I'd like to re-run this test suite following the guidance. I/we should be able to pick a lower bound number (this app is very simple) and expect it to run w/o memory exhaustion.

My app is very simple. There will be apps run in containers that require running on multiple cores and take advantage of server GC. Is that appropriate for docker limits, or is there a minimum memory level of 250mb, for example, for that scenario? We should probably find a different test app that better exhibits the behavior of this type of app.

@kouvel
Copy link
Member

kouvel commented Sep 24, 2018

@kouvel

@richlander richlander assigned Maoni0 and unassigned MichaelSimons Mar 4, 2019
@richlander
Copy link
Member Author

richlander commented Mar 4, 2019

Working on a solution:

@sergiy-k sergiy-k assigned luhenry and unassigned Maoni0 Mar 18, 2019
@luhenry
Copy link
Contributor

luhenry commented Apr 12, 2019

@richlander most of the work so far has been focused on making it work nicely in Docker for Linux images. Is the plan also to improve the support of Docker for Windows images, like microsoft/nanoserver image for example?

@RussKeldorph RussKeldorph assigned sergiy-k and unassigned luhenry Jun 20, 2019
@sergiy-k
Copy link
Contributor

@richlander, I assume this can be closed now based on the work that @luhenry and @Maoni0 did, right?

@RussKeldorph
Copy link
Contributor

@richlander Ping

@sergiy-k
Copy link
Contributor

sergiy-k commented Jul 3, 2019

@sergiy-k sergiy-k closed this as completed Jul 3, 2019
@msftgits msftgits transferred this issue from dotnet/coreclr Jan 31, 2020
@msftgits msftgits added this to the 3.0 milestone Jan 31, 2020
@ghost ghost locked as resolved and limited conversation to collaborators Dec 16, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area-VM-coreclr enhancement Product code improvement that does NOT require public API changes/additions
Projects
None yet
Development

No branches or pull requests

8 participants