首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在zRAM写回特性中使用循环开发

在zRAM写回特性中使用循环开发
EN

Unix & Linux用户
提问于 2020-04-20 07:00:16
回答 1查看 881关注 0票数 3

文档声明zRAM写回功能只支持交换分区,因为它是backing_dev。但是,通过将交换文件附加到循环设备上,我也成功地使用了交换文件

代码语言:javascript
复制
losetup /dev/loop0 /swapfile
cd /sys/block/zram0
echo /dev/loop0 > backing_dev
echo 8G > disksize
mkswap /dev/zram0
swapon /dev/zram0

在此之后,swapon -s显示zRAM设备已启用,cat /sys/block/zram0/backing_dev返回/dev/loop0echo huge > /sys/block/zram0/writeback没有问题,cat /sys/block/zram0/bd_stats确认写入确实成功。

这是可以使用的,还是这种方法有一些令人讨厌的缺点?

EN

回答 1

Unix & Linux用户

发布于 2022-03-29 18:38:31

这很好。在Android上,可以使用回送文件启用写回功能:

代码语言:javascript
复制
static bool PrepareZramBackingDevice(off64_t size) {

    constexpr const char* file_path = "/data/per_boot/zram_swap";
    if (size == 0) return true;

    // Prepare target path
    unique_fd target_fd(TEMP_FAILURE_RETRY(open(file_path, O_RDWR | O_CREAT | O_CLOEXEC, 0600)));
    if (target_fd.get() == -1) {
        PERROR << "Cannot open target path: " << file_path;
        return false;
    }
    if (fallocate(target_fd.get(), 0, 0, size) < 0) {
        PERROR << "Cannot truncate target path: " << file_path;
        return false;
    }

    // Allocate loop device and attach it to file_path.
    LoopControl loop_control;
    std::string loop_device;
    if (!loop_control.Attach(target_fd.get(), 5s, &loop_device)) {
        return false;
    }

    ConfigureIoScheduler(loop_device);

    ConfigureQueueDepth(loop_device, "/");

    // set block size & direct IO
    unique_fd loop_fd(TEMP_FAILURE_RETRY(open(loop_device.c_str(), O_RDWR | O_CLOEXEC)));
    if (loop_fd.get() == -1) {
        PERROR << "Cannot open " << loop_device;
        return false;
    }
    if (!LoopControl::EnableDirectIo(loop_fd.get())) {
        return false;
    }

    return InstallZramDevice(loop_device);
}

来源:https://android.googlesource.com/platform/system/core/+/refs/tags/android-12.1.0_r2/fs_经理/飞碟_mgr.cpp#2051

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/581243

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档