Support for Windows Server, version 2004 #923
mthalman
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Support for Windows Server, version 2004
With the release of Windows Server, version 2004 on May 27, 2020, .NET Framework Docker images have been published for Windows Server Core, version 2004.
Details
.NET Framework tags containing the substring
windowsservercore-2004
are now available. You can find the full set of tags on Docker Hub..NET Framework multi-arch tags, such as
4.8
, have been updated to usewindowsservercore-2004
images if your host is Windows Server, version 2004.Impacted Repos
Known Issues
Performance Issue with Windows Server Core Containers
We recently discovered a performance issue with .NET Framework running in Windows Server, version 2004 container images. This issue is noticeable compared to using Windows Server, version 1909 images. We have improved .NET Framework performance in containers significantly, such that compared to Windows Server, version 1903 images and earlier, the performance issue is not expected to be noticeable.
See Windows Server known issues.
The performance issue has been observed as significant CPU cycles early in the life of a container process, either at startup or a short time later. This can cause startup to be slower or cause the process to be slower for a short period after that. We have observed normal behavior after the short drop in performance.
We are actively researching this performance issue, and collaborating with the Windows Server team.
See the following links that are tracking these issues:
32-bit Application Performance
Significant work was done with the version 2004 release to reduce the image size. This resulted in the base Windows Docker image having only a few key assemblies as being ngen-compiled.
The .NET Framework Docker image then needed to optimize for the most common .NET Framework and PowerShell scenarios by running ngen compilation on additional assemblies. This was done for 64-bit assemblies only.
In order to keep the image size down, 32-bit assemblies are no longer being ngen-compiled starting in version 2004 images. This means that any 32-bit .NET Framework applications will likely execute slower in version 2004 than in earlier versions of Windows Server. If you're experiencing performance issues with your 32-bit application, this can be mitigated by running 32-bit ngen within your own Dockerfile. When a file is ngen-compiled, it affects the entire graph that the file references in a recursive manner. For that reason, you only really need to ngen-compile the root assembly of your application. Here are some examples:
Console Application
Web Application
32-bit PowerShell
Beta Was this translation helpful? Give feedback.
All reactions