OpenHarmony(鸿蒙南向开发)——标准系统内核(Linux)【Enhanced SWAP特性】

基本概念

ESwap(Enhanced Swap)提供了自定义新增存储分区作为内存交换分区的能力,并创建了一个常驻进程zswapd将 ZRAM 压缩后的匿名页加密换出到ESwap存储分区,从而能完全的空出一块可用内存,以此来达到维持Memavailable水线的目标。同时,配合这个回收机制,在整个内存框架上进行改进,优化匿名页和文件页的回收效率,并且使两者的回收比例更加合理以避免过度回收导致的refault问题造成卡顿现象。

ZRAM与ESwap配置指导

说明: 使能ESwap需要在使能ZRAM之前,不需要使用ESwap时, 也可以仅使能ZRAM。如部分设备不包括用于换出的存储设备,也没有新建相应的存储分区,那么可以仅使能ZRAM来通过zswapd进行内存回收。

使能ESwap

  1. 打开相关配置项及依赖。

启用ESwap,需要通过编译内核时打开相应的配置项及依赖,ESwap相关CONFIG如下:

    CONFIG_HYPERHOLD=y                  // Enable HyperHold
    CONFIG_HYPERHOLD_DEBUG=y            // Enable HyperHold Debug
    CONFIG_HYPERHOLD_ZSWAPD=y           // Enable zswapd thread to reclaim anon pages in background
    CONFIG_HYPERHOLD_FILE_LRU=y         // Enable HyperHold FILE LRU
    CONFIG_HYPERHOLD_MEMCG=y            // Enable Memcg Management in HyperHold
    CONFIG_ZRAM_GROUP=y                 // Enable Manage Zram objs with mem_cgroup
    CONFIG_ZRAM_GROUP_DEBUG=y           // Enable Manage Zram objs with mem_cgroup Debug
    CONFIG_ZLIST_DEBUG=y                // Enable Debug info for zram group list
    CONFIG_ZRAM_GROUP_WRITEBACK=y       // Enable Write back grouped zram objs to Hyperhold driver

同时,开启ESwap需依赖以下CONFIG:

    CONFIG_MEMCG=y       // Enable Memory controller
    CONFIG_SWAP=y        // Enable Support for paging of anonymous memory (swap)
    CONFIG_ZSMALLOC=y    // Enable Memory allocator for compressed pages
    CONFIG_ZRAM=y        // Enable Compressed RAM block device support
  1. 创建ESwap设备。

可以使用任意block设备作为ESwap交换设备,这里创建一个文件hpdisk挂载为loop6设备:

    // 通过dd命令创建一个文件hpdisk用于ESwap换出,具体大小需根据产品及需求调整,此处设置为512MB。
    dd if=/dev/random of=/data/hpdisk bs=4096 count=131072
    // 将上一步创建的hpdisk与ESwap device进行绑定。
    losetup /dev/block
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值