Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Docs
提交
d964b82d
D
Docs
项目概览
OpenHarmony
/
Docs
大约 1 年 前同步成功
通知
159
Star
292
Fork
28
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Docs
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
d964b82d
编写于
10月 25, 2022
作者:
W
wonghiu45
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix README of eswap
Signed-off-by:
N
wonghiu45
<
huangxiao35@huawei.com
>
上级
fb6ce3e3
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
38 addition
and
42 deletion
+38
-42
zh-cn/device-dev/kernel/kernel-standard-mm-eswap.md
zh-cn/device-dev/kernel/kernel-standard-mm-eswap.md
+38
-42
未找到文件。
zh-cn/device-dev/kernel/kernel-standard-mm-eswap.md
浏览文件 @
d964b82d
...
...
@@ -8,24 +8,27 @@ ESwap(Enhanced Swap)提供了自定义新增存储分区作为内存交换分区
## ZRAM与ESwap配置指导
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 使能ESwap需要在使能ZRAM之前,不需要使用ESwap时, 也可以仅使能ZRAM。如部分设备不包括用于换出的存储设备,也没有新建相应的存储分区,那么可以仅使能ZRAM来通过zswapd进行内存回收。
### 使能ESwap
1.
打开相关配置项及依赖
启用ESwap,需要通过编译内核时打开相应的配置项及依赖,ESwap相关CONFIG如下:
```
CONFIG_HYPERHOLD=y
CONFIG_HYPERHOLD_DEBUG=y
CONFIG_HYPERHOLD_ZSWAPD=y
CONFIG_HYPERHOLD_FILE_LRU=y
CONFIG_HYPERHOLD_MEMCG=y
CONFIG_ZRAM_GROUP=y
CONFIG_ZRAM_GROUP_DEBUG=y
CONFIG_ZLIST_DEBUG=y
CONFIG_ZRAM_GROUP_WRITEBACK=y
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
```
另有部分CONFIG被依赖
:
同时,开启ESwap需依赖以下CONFIG
:
```
CONFIG_MEMCG=y
...
...
@@ -72,9 +75,6 @@ ESwap(Enhanced Swap)提供了自定义新增存储分区作为内存交换分区
```
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> 使能ESwap需要在使能ZRAM之前,不需要使用ESwap时, 也可以仅使能ZRAM。如部分设备不包括用于换出的存储设备,也没有新建相应的存储分区,那么可以仅使能ZRAM来通过zswapd进行内存回收。
### 使能ZRAM
1.
初始化ZRAM
...
...
@@ -91,7 +91,7 @@ ESwap(Enhanced Swap)提供了自定义新增存储分区作为内存交换分区
> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
> /sys/block/zram0/group可接受参数及作用为:
>
> - disable:表示
disable
;
> - disable:表示
禁用
;
> - readonly:表示只记录数据的cgroup信息,并不换出;
> - readwrite:表示打开ZRAM到eswap的换入换出功能。
...
...
@@ -134,34 +134,33 @@ ESwap(Enhanced Swap)提供了自定义新增存储分区作为内存交换分区
ESwap提供了一些接口用于控制换入换出策略以及记录当前状态,这些接口位于memcg所挂载的目录当中,如
`/dev/memcg/`
。
| 功能分类 | 接口名 | 描述 |
| -------- | -------- | -------- |
| 控制接口 |
[
avail_buffers
](
#avail_buffers
)
| 设置buffer区间 |
| |
[
zswapd_single_memcg_param
](
#zswapd_single_memcg_param
)
| 设置当前memcg相关配置 |
| |
[
zram_wm_ratio
](
#zram_wm_ratio
)
| 设置zram换出水线 |
| 状态接口 |
[
zswapd_pressure_show
](
#zswapd_pressure_show
)
| 记录当前buffer以及refault |
| |
[
stat
](
#stat
)
| 检测ESwap实时情况 |
| |
[
zswapd_vmstat_show
](
#zswapd_vmstat_show
)
| 记录zswapd运行过程中各种事件 |
| 功能分类 | 接口名 | 描述 |
参考值 |
| -------- | -------- | -------- |
-------- |
| 控制接口 |
[
avail_buffers
](
#avail_buffers
)
| 设置buffer区间 |
300 250 350 200 |
| |
[
zswapd_single_memcg_param
](
#zswapd_single_memcg_param
)
| 设置当前memcg相关配置 |
300 40 0 0 |
| |
[
zram_wm_ratio
](
#zram_wm_ratio
)
| 设置zram换出水线 |
0 |
| 状态接口 |
[
zswapd_pressure_show
](
#zswapd_pressure_show
)
| 记录当前buffer以及refault |
NA |
| |
[
stat
](
#stat
)
| 检测ESwap实时情况 |
NA |
| |
[
zswapd_vmstat_show
](
#zswapd_vmstat_show
)
| 记录zswapd运行过程中各种事件 |
NA |
> ![icon-caution.gif](public_sys-resources/icon-caution.gif) **注意:**
> 除avail_buffers会因为调整了buffer水线而会主动去唤醒zswapd外,其余控制接口并不会主动唤醒zswapd,只是其配置需在zswapd所被唤醒后方可生效。
各接口的具体描述如下:
### avail_buffers
avail_buffers接口用于设置buffer区间[min_avail_buffers, high_avail_buffers],当检测到当前的buffer低于min_avail_buffers时则会唤醒zswapd进行匿名页回收,期望的回收量为high_avail_buffers与当前系统buffer值的差值,实际可能会因为无法回收等原因而未回收
那么
多内存。avail_buffers为期望的内存正常状态buffer值,free_swap_threshold则是设置交换分区空闲容量的阈值,当zswapd唤醒并进行内存回收之后,会根据当前系统情况以及两者的设置记录当前内存压力事件,如medium press,critical press等。可主动调整来触发zswapd回收,如
`echo 1000 950 1050 0 > /dev/memcg/memory.avail_buffers`
。
avail_buffers接口用于设置buffer区间[min_avail_buffers, high_avail_buffers],当检测到当前的buffer低于min_avail_buffers时则会唤醒zswapd进行匿名页回收,期望的回收量为high_avail_buffers与当前系统buffer值的差值,实际可能会因为无法回收等原因而未回收
足够
多内存。avail_buffers为期望的内存正常状态buffer值,free_swap_threshold则是设置交换分区空闲容量的阈值,当zswapd唤醒并进行内存回收之后,会根据当前系统情况以及两者的设置记录当前内存压力事件,如medium press,critical press等。可主动调整来触发zswapd回收,如
`echo 1000 950 1050 0 > /dev/memcg/memory.avail_buffers`
。
默认值:
**默认值:**
```
avail_buffers: 0
min_avail_buffers: 0
high_avail_buffers: 0
free_swap_threshold: 0
avail_buffers: 0
min_avail_buffers: 0
high_avail_buffers: 0
free_swap_threshold: 0
```
限制:
**限制:**
0<=min_avail_buffers<=avail_buffers<=high_avail_buffers
...
...
@@ -176,10 +175,10 @@ avail_buffers接口用于设置buffer区间[min_avail_buffers, high_avail_buffer
默认值:
```
memcg score: 300
memcg ub_mem2zram_ratio: 60
memcg ub_zram2ufs_ratio: 10
memcg refault_threshold: 50
memcg score: 300
memcg ub_mem2zram_ratio: 60
memcg ub_zram2ufs_ratio: 10
memcg refault_threshold: 50
```
限制:
...
...
@@ -196,13 +195,13 @@ avail_buffers接口用于设置buffer区间[min_avail_buffers, high_avail_buffer
设置ZRAM换出水线,即当当前ZRAM中压缩的匿名页大于ZRAM总大小
*
zram_wm_ratio时,会开始向ESwap进行换出,但是具体换出时间为zswapd因buffer水线而唤醒之后。设置为0时系统默认为37,可进行调整,如
`echo 30 > /dev/memcg/memory.zram_wm_ratio`
。
默认值:
**默认值:**
```
zram_wm_ratio: 0
zram_wm_ratio: 0
```
限制:
**限制:**
0<=zram_wm_ratio<=100
...
...
@@ -225,7 +224,7 @@ avail_buffers接口用于设置buffer区间[min_avail_buffers, high_avail_buffer
## 触发zswapd回收
可先通过
`cat /dev/memcg/memory.zswapd_pressure_show`
查看当前buffer值,比如当前为1200,那么
便可通过主动调整buffer区间
,来主动唤醒zswapd。
可先通过
`cat /dev/memcg/memory.zswapd_pressure_show`
查看当前buffer值,比如当前为1200,那么
可通过主动调整buffer区间大于1200
,来主动唤醒zswapd。
```
Bash
echo 1300 1250 1350 0 > /dev/memcg/memory.avail_buffers
...
...
@@ -235,6 +234,3 @@ echo 1300 1250 1350 0 > /dev/memcg/memory.avail_buffers
## ESwap配置大小示例
ZRAM与ESwap的大小配置需根据实际使用场景以及产品硬件特点进行适配。目前在rk3568板子上使用时,其ram为2G,因此设置的ZRAM与ESwap大小均为512MB。
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录