etmem/0070-etmem-update-README.md.patch
liubo fe6d2a0135 etmem: sync source repo submission
Sync the features and bug fixed in the etmem
source repository.

Signed-off-by: liubo <liubo254@huawei.com>
(cherry picked from commit 07dd6a411bce9ed3d9f617a6f01ae076e24a3adf)
2022-10-12 10:10:23 +08:00

109 lines
7.1 KiB
Diff
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

From 1ebeebf02a171d0029e70ee67270a8f7dab3e04e Mon Sep 17 00:00:00 2001
From: liubo <liubo254@huawei.com>
Date: Thu, 24 Feb 2022 01:13:17 +0000
Subject: [PATCH 20/33] etmem: update README.md.
Add the usage constraints of etmem,
and introduce some added configuration file parameters
Signed-off-by: liubo <liubo254@huawei.com>
---
README.md | 45 ++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 40 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 93631a1..49287f9 100644
--- a/README.md
+++ b/README.md
@@ -29,6 +29,30 @@ etmem内存分级扩展技术通过DRAM+内存压缩/高性能存储新介质
$ make
+## 注意事项
+### 运行依赖
+etmem作为内存扩展工具需要依赖于内核态的特性支持为了可以识别内存访问情况和支持主动将内存写入swap分区来达到内存垂直扩展的需求etmem在运行时需要插入etmem_scan和etmem_swap模块
+
+```
+modprobe etmem_scan
+modprobe etmem_swap
+```
+openuler21.03、21.09、20.03 LTS SP2以及20.03 LTS SP3均支持etmem内存扩展相关特性可以直接使用以上内核。
+
+### 权限限制
+运行etmem进程需要root权限root用户具有系统最高权限在使用root用户进行操作时请严格按照操作指导进行操作避免其他操作造成系统管理及安全风险。
+
+### 使用约束
+
+- etmem的客户端和服务端需要在同一个服务器上部署不支持跨服务器通信的场景。
+- etmem仅支持扫描进程名小于或等于15个字符长度的目标进程。
+- 在使用AEP介质进行内存扩展的时候依赖于系统可以正确识别AEP设备并将AEP设备初始化为numa node。并且配置文件中的vm_flags字段只能配置为ht。
+- 引擎私有命令仅针对对应引擎和引擎下的任务有效比如cslide所支持的showhostpages和showtaskpages。
+- 第三方策略实现代码中eng_mgt_func接口中的fd不能写入0xff和0xfe字。
+- 支持在一个工程内添加多个不同的第三方策略动态库以配置文件中的eng_name来区分。
+- 禁止并发扫描同一个进程。未加载etmem_scan和etmem_swap ko时禁止使用/proc/xxx/idle_pages和/proc/xxx/swap_pages文件
+
+
## 使用说明
### 启动etmemd进程
@@ -63,7 +87,14 @@ options
在运行etmem进程之前需要管理员预先规划哪些进程需要做内存扩展将进程信息配置到etmem配置文件中并配置内存扫描的周期、扫描次数、内存冷热阈值等信息。
-配置文件的示例文件在源码包中放置在源码根目录的conf/example_conf.yaml建议在使用时放置在/etc/etmem/目录下,示例内容为:
+配置文件的示例文件在源码包中,放置在/etc/etmem文件路径下按照功能划分为3个示例文件
+
+```
+/etc/etmem/cslide_conf.yaml
+/etc/etmem/slide_conf.yaml
+/etc/etmem/thirdparty_conf.yaml
+```
+示例内容分别为:
```
[project]
@@ -132,6 +163,9 @@ task_private_key=task_private_value
| loop | 内存扫描的循环次数 | 是 | 是 | 1~10 | loop=3 //扫描3次 |
| interval | 每次内存扫描的时间间隔 | 是 | 是 | 1~1200 | interval=5 //每次扫描之间间隔5s |
| sleep | 每个内存扫描+操作的大周期之间时间间隔 | 是 | 是 | 1~1200 | sleep=10 //每次大周期之间间隔10s |
+| sysmem_threshold| slide engine的配置项系统内存换出阈值 | 否 | 是 | 0~100 | sysmem_threshold=50 //系统内存剩余量小于50%时etmem才会触发内存换出|
+| swapcache_high_wmark| slide engine的配置项swacache可以占用系统内存的比例高水线 | 否 | 是 | 1~100 | swapcache_high_wmark=5 //swapcache内存占用量可以为系统内存的5%超过该比例etmem会触发swapcache回收<br> 注: swapcache_high_wmark需要大于swapcache_low_wmark|
+| swapcache_low_wmark| slide engine的配置项swacache可以占用系统内存的比例低水线 | 否 | 是 | [1~swapcache_high_wmark) | swapcache_low_wmark=3 //触发swapcache回收后系统会将swapcache内存占用量回收到低于3%|
| [engine] | engine公用配置段起始标识 | 否 | 否 | NA | engine参数的开头标识表示下面的参数直到另外的[xxx]或文件结尾为止的范围内均为engine section的参数 |
| project | 声明所在的project | 是 | 是 | 64个字以内的字符串 | 已经存在名字为test的project则可以写为project=test |
| engine | 声明所在的engine | 是 | 是 | slide/cslide/thridparty | 声明使用的是slide或cslide或thirdparty策略 |
@@ -155,7 +189,8 @@ task_private_key=task_private_value
| anon_only | engine为cslide的task配置项标识是否只扫描匿名页 | 否 | 是 | yes/no | anon_only=no //配置为yes时只扫描匿名页配置为no时非匿名页也会扫描 |
| ign_host | engine为cslide的task配置项标识是否忽略host上的页表扫描信息 | 否 | 是 | yes/no | ign_host=no //yes为忽略no为不忽略 |
| task_private_key | engine为thirdparty的task配置项预留给第三方策略的task解析私有参数的配置项选配 | 否 | 否 | 根据第三方策略私有参数自行限制 | 根据第三方策略私有task参数自行配置 |
-
+| swap_threshold |slide engine的配置项进程内存换出阈值 | 否 | 是 | 进程可用内存绝对值 | swap_threshold=10g //进程占用内存在低于10g时不会触发换出。<br>当前版本下仅支持g/G作为内存绝对值单位。与sysmem_threshold配合使用仅系统内存低于阈值时进行白名单中进程阈值判断 |
+| swap_flag|slide engine的配置项进程指定内存换出 | 否 | 是 | yes/no | swap_flag=yes//使能进程指定内存换出 |
### etmem project/engine/task对象的创建和删除
@@ -172,11 +207,11 @@ task_private_key=task_private_value
添加对象:
-etmem obj add -f /etc/example_config.yaml -s etmemd_socket
+etmem obj add -f /etc/etmem/slide_conf.yaml -s etmemd_socket
删除对象:
-etmem obj del -f /etc/example_config.yaml -s etmemd_socket
+etmem obj del -f /etc/etmem/slide_conf.yaml -s etmemd_socket
打印帮助:
@@ -491,4 +526,4 @@ etmem engine showhostpages -n proj_name -e cslide -s etmemd_socket
1. Fork本仓库
2. 新建个人分支
3. 提交代码
-4. 新建Pull Request
\ No newline at end of file
+4. 新建Pull Request
--
1.8.3.1