Improving Performance of ARM32 Docker Images with .NET Core Package Cache #3651
richlander
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Improving Performance of ARM32 Docker Images with .NET Core Package Cache
.NET Core SDK distributions include a compressed copy of NuGet packages for .NET Core, ASP.NET Core and EF Core. These packages are decompressed upon installation of the .NET Core SDK. The packages are not currently included in ARM32 distributions due to the time and space cost to decompress the packages. Instead, they will be added to .NET Core ARM32 Docker images, where these costs can be paid as part of image creation.
These NuGet packages include content for two purposes:
In both cases, the presence of these packages avoid the need to access remote NuGet feeds for .NET Core assemblies as part of package restore.
This change only affects .NET Core 2.1 SDK ARM32 Docker images. This change will be made in August 2018.
.NET Core SDK NugetFallbackFolder
The .NET Core SDK includes a compressed copy of all NuGet package, in LZMA format. It exists at the following version-specific location:
This file is decompressed to the following location:
/usr/share/dotnet/sdk/NuGetFallbackFolder/
A package restore for a .NET Core assembly will restore the assembly from the NuGetFallbackFolder location and copy it to the user NuGet cache. At that point, regular NuGet behavior is used.
Impact of this change
There should be no functional difference in behavior after this change. .NET SDK commands should complete faster and require fewer package restore network requests.
The following examples demonstrates the benefit of this change. The improvement can be observed with package restore. Build times (assuming no restore) are not affected.
.NET Core 2.1 SDK image after this change
.NET Core 2.1 SDK image before this change
Beta Was this translation helpful? Give feedback.
All reactions