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

Commit 711a5e24 authored by Akilesh Kailash's avatar Akilesh Kailash Committed by Gerrit Code Review
Browse files

Merge "Set taskprofile to snapshot merge thread" into main

parents 7e2b6cc9 e57ef38b
Loading
Loading
Loading
Loading
+20 −0
Original line number Diff line number Diff line
@@ -86,10 +86,15 @@ cc_library_static {
        "libext4_utils",
        "libsnapshot_cow",
        "liburing",
        "libprocessgroup",
        "libjsoncpp",
        "libcgrouprc",
        "libcgrouprc_format",
    ],
    include_dirs: ["bionic/libc/kernel"],
    export_include_dirs: ["include"],
    header_libs: [
        "libcutils_headers",
        "libstorage_literals_headers",
    ],
    ramdisk_available: true,
@@ -126,6 +131,10 @@ cc_defaults {
        "liblog",
        "libsnapshot_cow",
        "libsnapuserd",
        "libprocessgroup",
        "libjsoncpp",
        "libcgrouprc",
        "libcgrouprc_format",
        "libsnapuserd_client",
        "libz",
        "liblz4",
@@ -135,6 +144,7 @@ cc_defaults {
    ],

    header_libs: [
        "libcutils_headers",
        "libstorage_literals_headers",
    ],

@@ -251,6 +261,10 @@ cc_defaults {
        "libgtest",
        "libsnapshot_cow",
        "libsnapuserd",
        "libprocessgroup",
        "libjsoncpp",
        "libcgrouprc",
        "libcgrouprc_format",
        "liburing",
        "libz",
    ],
@@ -261,6 +275,7 @@ cc_defaults {
    header_libs: [
        "libstorage_literals_headers",
        "libfiemap_headers",
        "libcutils_headers",
    ],
    test_options: {
        min_shipping_api_level: 30,
@@ -320,6 +335,10 @@ cc_binary_host {
        "libgflags",
        "libsnapshot_cow",
        "libsnapuserd",
        "libprocessgroup",
        "libjsoncpp",
        "libcgrouprc",
        "libcgrouprc_format",
        "liburing",
        "libz",
    ],
@@ -330,5 +349,6 @@ cc_binary_host {
    header_libs: [
        "libstorage_literals_headers",
        "libfiemap_headers",
        "libcutils_headers",
    ],
}
+7 −3
Original line number Diff line number Diff line
@@ -80,16 +80,16 @@ int MergeWorker::PrepareMerge(uint64_t* source_offset, int* pending_ops,
}

bool MergeWorker::MergeReplaceZeroOps() {
    // Flush after merging 2MB. Since all ops are independent and there is no
    // Flush after merging 1MB. Since all ops are independent and there is no
    // dependency between COW ops, we will flush the data and the number
    // of ops merged in COW block device. If there is a crash, we will
    // end up replaying some of the COW ops which were already merged. That is
    // ok.
    //
    // Although increasing this greater than 2MB may help in improving merge
    // Although increasing this greater than 1MB may help in improving merge
    // times; however, on devices with low memory, this can be problematic
    // when there are multiple merge threads in parallel.
    int total_ops_merged_per_commit = (PAYLOAD_BUFFER_SZ / BLOCK_SZ) * 2;
    int total_ops_merged_per_commit = (PAYLOAD_BUFFER_SZ / BLOCK_SZ);
    int num_ops_merged = 0;

    SNAP_LOG(INFO) << "MergeReplaceZeroOps started....";
@@ -561,6 +561,10 @@ bool MergeWorker::Run() {
        SNAP_PLOG(ERROR) << "Failed to set thread priority";
    }

    if (!SetProfiles({"CPUSET_SP_BACKGROUND"})) {
        SNAP_PLOG(ERROR) << "Failed to assign task profile to Mergeworker thread";
    }

    SNAP_LOG(INFO) << "Merge starting..";

    bufsink_.Initialize(PAYLOAD_BUFFER_SZ);
+4 −0
Original line number Diff line number Diff line
@@ -782,6 +782,10 @@ bool ReadAhead::RunThread() {
        SNAP_PLOG(ERROR) << "Failed to set thread priority";
    }

    if (!SetProfiles({"CPUSET_SP_BACKGROUND"})) {
        SNAP_PLOG(ERROR) << "Failed to assign task profile to readahead thread";
    }

    SNAP_LOG(INFO) << "ReadAhead processing.";
    while (!RAIterDone()) {
        if (!ReadAheadIOStart()) {
+14 −0
Original line number Diff line number Diff line
@@ -19,6 +19,9 @@
#include <unistd.h>

#include <android-base/file.h>
#include <processgroup/processgroup.h>

#include <private/android_filesystem_config.h>

namespace android {
namespace snapshot {
@@ -33,6 +36,17 @@ bool SetThreadPriority([[maybe_unused]] int priority) {
#endif
}

bool SetProfiles([[maybe_unused]] std::initializer_list<std::string_view> profiles) {
#ifdef __ANDROID__
    if (setgid(AID_SYSTEM)) {
        return false;
    }
    return SetTaskProfiles(gettid(), profiles);
#else
    return true;
#endif
}

bool KernelSupportsIoUring() {
    struct utsname uts {};
    unsigned int major, minor;
+4 −0
Original line number Diff line number Diff line
@@ -14,10 +14,14 @@

#pragma once

#include <initializer_list>
#include <string_view>

namespace android {
namespace snapshot {

bool SetThreadPriority(int priority);
bool SetProfiles(std::initializer_list<std::string_view> profiles);
bool KernelSupportsIoUring();

}  // namespace snapshot