Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 28a5a1d5 authored by Jagadeesh Pakaravoor's avatar Jagadeesh Pakaravoor
Browse files

Add madvising of .odex, .vdex and .art files

1. When mmaping {.art, .odex, .vdex} files madvise them to
MADV_WILLNEED
2. Add system properties to limit the madvise size/range

Test: presubmit
Bug: 178853586
Change-Id: I7bd882e3e1021d48f00f297c4dd1d5a8098c087d
parent 36f5f53a
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -630,6 +630,12 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote, bool p
    char saveResolvedClassesDelayMsOptsBuf[
            sizeof("-Xps-save-resolved-classes-delay-ms:")-1 + PROPERTY_VALUE_MAX];
    char madviseRandomOptsBuf[sizeof("-XX:MadviseRandomAccess:")-1 + PROPERTY_VALUE_MAX];
    char madviseWillNeedFileSizeVdex[
            sizeof("-XMadviseWillNeedVdexFileSize:")-1 + PROPERTY_VALUE_MAX];
    char madviseWillNeedFileSizeOdex[
            sizeof("-XMadviseWillNeedOdexFileSize:")-1 + PROPERTY_VALUE_MAX];
    char madviseWillNeedFileSizeArt[
            sizeof("-XMadviseWillNeedArtFileSize:")-1 + PROPERTY_VALUE_MAX];
    char gctypeOptsBuf[sizeof("-Xgc:")-1 + PROPERTY_VALUE_MAX];
    char backgroundgcOptsBuf[sizeof("-XX:BackgroundGC=")-1 + PROPERTY_VALUE_MAX];
    char heaptargetutilizationOptsBuf[sizeof("-XX:HeapTargetUtilization=")-1 + PROPERTY_VALUE_MAX];
@@ -837,6 +843,22 @@ int AndroidRuntime::startVm(JavaVM** pJavaVM, JNIEnv** pEnv, bool zygote, bool p
     */
    parseRuntimeOption("dalvik.vm.madvise-random", madviseRandomOptsBuf, "-XX:MadviseRandomAccess:");

    /*
     * Use default platform configuration as limits for madvising,
     * when no properties are specified.
     */
    parseRuntimeOption("dalvik.vm.madvise.vdexfile.size",
                       madviseWillNeedFileSizeVdex,
                       "-XMadviseWillNeedVdexFileSize:");

    parseRuntimeOption("dalvik.vm.madvise.odexfile.size",
                       madviseWillNeedFileSizeOdex,
                       "-XMadviseWillNeedOdexFileSize:");

    parseRuntimeOption("dalvik.vm.madvise.artfile.size",
                       madviseWillNeedFileSizeArt,
                       "-XMadviseWillNeedArtFileSize:");

    /*
     * Profile related options.
     */