Ensure .NET Core respects and plays nicely with Docker limits #10703
Labels
area-VM-coreclr
enhancement
Product code improvement that does NOT require public API changes/additions
Milestone
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.
The text was updated successfully, but these errors were encountered: