open-telemetry / opentelemetry-dotnet-instrumentation

OpenTelemetry .NET Automatic Instrumentation

Home Page:https://opentelemetry.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Add arm64 architecture to the shared store

pjanotti opened this issue · comments

The list at dotnet/runtime has other values but because of Apple M1 boxes, we may want to provide arm64 by default.

Adding all arch to the shared store doesn't seem scalable, ideally, we would have a way to automatically select the proper |arch|/|tfm| pair upon installing on the box. However, as mentioned, arm64 may be popular enough to justify its addition even without the general mechanism.

Temporary Workaround: rename $DOTNET_SHARED_STORE/x64/ to $DOTNET_SHARED_STORE/arm64/. The assemblies under the folder are IL only so source instrumentations are expected to work without issues. The native component is not supported on arm64 yet and given that the default rule engine will fail startup if it is enabled it needs to be disabled removing or setting the environment variable CORECLR_ENABLE_PROFILING to 0.

[EDIT 01: Update workaround since it is not going to work with the default rule engine checks.]

One possibility is to create symbolic links to a single architecture since we use the same IL-only components.

Today, even I was exploring about symbolic link. If we get this working we could reduce our package size by and solve issues for all architecture.

I am not sure if it will be good idea to support only managed code on arm64.
It should be done together with #1865

I am not sure if it will be good idea to support only managed code on arm64. It should be done together with #1865

I think it is OK. Better than nothing. Especially that we even document that it is possible to work without .NET Profiler here

Removing from 1.0.0-rc milestone. I think that we can add this support after 1.0.0 release, both for sourcecode and bytecode instrumenation. I would like to avoid only partial support.