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

[monodroid] set MONO_AOT_MODE_NONE when AOT is off #3951

Merged
merged 1 commit into from
Nov 25, 2019

Conversation

jonathanpeppers
Copy link
Member

@jonathanpeppers jonathanpeppers commented Nov 22, 2019

I was profiling an app's startup in Debug mode, and I saw it
printing a lot of stuff:

11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/data/user/0/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/data/user/0/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not found
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/storage/emulated/0/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/storage/emulated/0/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not found
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/storage/emulated/0/../legacy/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/storage/emulated/0/../legacy/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/data/app/com.xamarin.android.helloworld-F-gJdEOFfesdG4KjFIuCsQ==/lib/arm64/libaot-HelloWorld.dll.so'
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/data/app/com.xamarin.android.helloworld-F-gJdEOFfesdG4KjFIuCsQ==/lib/arm64/libaot-HelloWorld.dll.so' not found
11-22 15:01:30.994  5616  5616 D Mono    : AOT: image '/storage/emulated/0/Android/data/com.xamarin.android.helloworld/files/.__override__/HelloWorld.dll.so' not found: (null)
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so'
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so' not found
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so'
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so' not found
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so'
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so' not found
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so'
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so' not found
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/data/user/0/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/data/user/0/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not found
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/storage/emulated/0/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/storage/emulated/0/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not found
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/storage/emulated/0/../legacy/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/storage/emulated/0/../legacy/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not found
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/data/app/com.xamarin.android.helloworld-F-gJdEOFfesdG4KjFIuCsQ==/lib/arm64/libaot-HelloWorld.dll.so'
11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/data/app/com.xamarin.android.helloworld-F-gJdEOFfesdG4KjFIuCsQ==/lib/arm64/libaot-HelloWorld.dll.so' not found
11-22 15:01:30.994  5616  5616 D Mono    : AOT: image '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so' not found: (null)

It seems like we are probing 25 locations for the AOT'd assembly, and
AOT is not even on at all?

I saw some issues on the MSBuild side as well as runtime:

  1. By default $(AndroidAotMode) is blank, and at build time we emit a true value for application_config.uses_mono_aot in this case.
  2. At runtime, we don't ever call mono_jit_set_aot_mode (MonoAotMode::MONO_AOT_MODE_NONE); and Mono seems to default to AOT being enabled.

So a few fixes:

  1. Let's default $(AndroidAotMode) to None if AOT is off to be more explicit.
  2. application_config.uses_mono_aot will no longer be true when AOT is off.
  3. I fixed up the runtime to be sure mono_jit_set_aot_mode is always called.

Now I no longer get any of these AOT-related log messages.

The results are not dramatic, but still something:

Before:
11-22 15:01:14.122  5346  5346 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:181::786164
11-22 15:01:22.907  5406  5406 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:172::393454
11-22 15:01:24.902  5460  5460 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:169::927569
11-22 15:01:27.080  5511  5511 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:171::83402
11-22 15:01:29.061  5568  5568 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:172::116997
11-22 15:01:30.983  5616  5616 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:169::82048
After:
11-22 14:52:54.753  4605  4605 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:178::299914
11-22 14:53:02.152  4707  4707 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:165::750746
11-22 14:53:05.063  4764  4764 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:165::530538
11-22 14:53:07.395  4819  4819 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:165::721214
11-22 14:53:09.678  4878  4878 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:169::361579
11-22 14:53:11.921  4931  4931 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:166::757309

It seems like this might save ~10ms on startup for non-AOT apps.

I also removed a random string androidPackageName = null;
declaration that is unused.

I was profiling an app's startup in `Debug` mode, and I saw it
printing a lot of stuff:

    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/data/user/0/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/data/user/0/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not found
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/storage/emulated/0/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/storage/emulated/0/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not found
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/storage/emulated/0/../legacy/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/storage/emulated/0/../legacy/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/data/app/com.xamarin.android.helloworld-F-gJdEOFfesdG4KjFIuCsQ==/lib/arm64/libaot-HelloWorld.dll.so'
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/data/app/com.xamarin.android.helloworld-F-gJdEOFfesdG4KjFIuCsQ==/lib/arm64/libaot-HelloWorld.dll.so' not found
    11-22 15:01:30.994  5616  5616 D Mono    : AOT: image '/storage/emulated/0/Android/data/com.xamarin.android.helloworld/files/.__override__/HelloWorld.dll.so' not found: (null)
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so'
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so' not found
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so'
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so' not found
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so'
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so' not found
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so'
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so' not found
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/data/user/0/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/data/user/0/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not found
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/storage/emulated/0/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/storage/emulated/0/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not found
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/storage/emulated/0/../legacy/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/storage/emulated/0/../legacy/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not found
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/data/app/com.xamarin.android.helloworld-F-gJdEOFfesdG4KjFIuCsQ==/lib/arm64/libaot-HelloWorld.dll.so'
    11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/data/app/com.xamarin.android.helloworld-F-gJdEOFfesdG4KjFIuCsQ==/lib/arm64/libaot-HelloWorld.dll.so' not found
    11-22 15:01:30.994  5616  5616 D Mono    : AOT: image '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so' not found: (null)

It seems like we are probing 25 locations for the AOT'd assembly, and
AOT is not even on at all?

I saw some issues on the MSBuild side as well as runtime:

1. By default `$(AndroidAotMode)` is blank, and at build time we emit
   a `true` value for `application_config.uses_mono_aot` in this case.
2. At runtime, we don't ever call `mono_jit_set_aot_mode
   (MonoAotMode::MONO_AOT_MODE_NONE);` and Mono seems to default to
   AOT being enabled.

So a few fixes:

1. Let's default `$(AndroidAotMode)` to `None` if AOT is off to be
   more explicit.
2. `application_config.uses_mono_aot` will no longer be `true` when
   AOT is off.
3. I fixed up the runtime to be sure `mono_jit_set_aot_mode` is always
   called.

Now I no longer get any of these AOT-related log messages.

The results are not dramatic, but still *something*:

    Before:
    11-22 15:01:14.122  5346  5346 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:181::786164
    11-22 15:01:22.907  5406  5406 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:172::393454
    11-22 15:01:24.902  5460  5460 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:169::927569
    11-22 15:01:27.080  5511  5511 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:171::83402
    11-22 15:01:29.061  5568  5568 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:172::116997
    11-22 15:01:30.983  5616  5616 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:169::82048
    After:
    11-22 14:52:54.753  4605  4605 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:178::299914
    11-22 14:53:02.152  4707  4707 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:165::750746
    11-22 14:53:05.063  4764  4764 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:165::530538
    11-22 14:53:07.395  4819  4819 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:165::721214
    11-22 14:53:09.678  4878  4878 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:169::361579
    11-22 14:53:11.921  4931  4931 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:166::757309

It seems like this might save ~10ms on startup for non-AOT apps.

I also removed a random `string androidPackageName = null;`
declaration that is unused.
@jonpryor jonpryor merged commit bbd034f into dotnet:master Nov 25, 2019
@jonathanpeppers jonathanpeppers deleted the aot-mode-none branch November 25, 2019 17:51
jonpryor pushed a commit that referenced this pull request Nov 27, 2019
I was profiling an app's startup in `Debug` mode, and I saw it
printing a lot of stuff:

        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/data/user/0/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/data/user/0/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not found
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/storage/emulated/0/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/storage/emulated/0/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not found
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/storage/emulated/0/../legacy/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/storage/emulated/0/../legacy/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/data/app/com.xamarin.android.helloworld-F-gJdEOFfesdG4KjFIuCsQ==/lib/arm64/libaot-HelloWorld.dll.so'
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/data/app/com.xamarin.android.helloworld-F-gJdEOFfesdG4KjFIuCsQ==/lib/arm64/libaot-HelloWorld.dll.so' not found
        11-22 15:01:30.994  5616  5616 D Mono    : AOT: image '/storage/emulated/0/Android/data/com.xamarin.android.helloworld/files/.__override__/HelloWorld.dll.so' not found: (null)
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so'
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so' not found
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so'
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so' not found
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so'
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so' not found
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so'
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so' not found
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/data/user/0/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/data/user/0/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not found
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/storage/emulated/0/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/storage/emulated/0/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not found
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/storage/emulated/0/../legacy/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so'
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/storage/emulated/0/../legacy/Android/data/com.xamarin.android.helloworld/files/.__override__/libaot-HelloWorld.dll.so' not found
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Trying to load shared library '/data/app/com.xamarin.android.helloworld-F-gJdEOFfesdG4KjFIuCsQ==/lib/arm64/libaot-HelloWorld.dll.so'
        11-22 15:01:30.994  5616  5616 I monodroid-assembly: Shared library '/data/app/com.xamarin.android.helloworld-F-gJdEOFfesdG4KjFIuCsQ==/lib/arm64/libaot-HelloWorld.dll.so' not found
        11-22 15:01:30.994  5616  5616 D Mono    : AOT: image '/Users/builder/jenkins/workspace/archive-mono/2019-08/android/release/sdks/out/android-arm64-v8a-release/lib/mono/aot-cache/arm64/HelloWorld.dll.so' not found: (null)

It seems like we are probing 25 locations for the AOT'd assembly, and
AOT is not even on at all?

I saw some issues on the MSBuild side as well as runtime:

 1. By default `$(AndroidAotMode)` is blank, and at build time we
    emit a `true` value for `application_config.uses_mono_aot` in
    this case.

 2. At runtime, we don't ever call
    `mono_jit_set_aot_mode(MonoAotMode::MONO_AOT_MODE_NONE)` and
    Mono seems to default to AOT being enabled.

So a few fixes:

 1. Let's default `$(AndroidAotMode)` to `None` if AOT is off to be
    more explicit.
 2. `application_config.uses_mono_aot` will no longer be `true` when
    AOT is off.
 3. I fixed up the runtime to be sure `mono_jit_set_aot_mode()` is
    always called.

Now I no longer get any of these AOT-related log messages.

The results are not dramatic, but still *something*:

  * Before:

        11-22 15:01:14.122  5346  5346 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:181::786164
        11-22 15:01:22.907  5406  5406 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:172::393454
        11-22 15:01:24.902  5460  5460 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:169::927569
        11-22 15:01:27.080  5511  5511 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:171::83402
        11-22 15:01:29.061  5568  5568 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:172::116997
        11-22 15:01:30.983  5616  5616 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:169::82048

  * After:

        11-22 14:52:54.753  4605  4605 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:178::299914
        11-22 14:53:02.152  4707  4707 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:165::750746
        11-22 14:53:05.063  4764  4764 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:165::530538
        11-22 14:53:07.395  4819  4819 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:165::721214
        11-22 14:53:09.678  4878  4878 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:169::361579
        11-22 14:53:11.921  4931  4931 I monodroid-timing: Runtime.init: end, total time; elapsed: 0s:166::757309

It seems like this might save ~10ms on startup for non-AOT apps.

I also removed a random `string androidPackageName = null;`
declaration that is unused.
@github-actions github-actions bot locked and limited conversation to collaborators Jan 28, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants