Compare commits

...

10 Commits

Author SHA1 Message Date
openeuler-ci-bot
7e64e1a7dc
!89 etmem: add debug info for etmem
From: @twicy 
Reviewed-by: @liubo254 
Signed-off-by: @liubo254
2024-04-08 07:07:42 +00:00
tangyuchen
6f36c57ebe etmem: add debug info for etmem
Signed-off-by: tangyuchen <tangyuchen5@huawei.com>
2024-04-03 11:05:43 +08:00
openeuler-ci-bot
977a6ebc23 !32 在etmemd的memdcd引擎中添加userswap所需的页面过滤
Merge pull request !32 from yangxin/openEuler-20.03-LTS-SP3
2021-12-16 08:59:37 +00:00
YangXin
d8f7e7a53c Update memdcd engine for userswap page filter.
Filter out vmas without userswap flags in the memdcd engine.

Signed-off-by: YangXin <245051644@qq.com>
2021-12-16 14:20:46 +08:00
openeuler-ci-bot
1995dd5cf9 !30 [sync] PR-29: add missing URL and source to etmem.spec
From: @openeuler-sync-bot
Reviewed-by: @liuzhiqiang26,@louhongxiang
Signed-off-by: @louhongxiang
2021-10-30 08:26:13 +00:00
liubo
dd59bf798c etmem: Add missing URL and source to etmem.spec
Signed-off-by: liubo <liubo254@huawei.com>
(cherry picked from commit 8afdefff3183d27544c9edf392fbc97e08be474b)
2021-10-30 15:54:42 +08:00
openeuler-ci-bot
c03904164a !27 Update etmem and add new features memRouter and userswap to 20.03.
From: @anar
Reviewed-by: @louhongxiang
Signed-off-by:
2021-10-25 08:58:55 +00:00
Kemeng Shi
6a04742f87 etmem: Fix build problems
Add missing Requires
Remove write permssion in %file section after strip
Change Requires numactl to numactl-libs

Signed-off-by: Kemeng Shi <shikemeng@huawei.com>
2021-10-25 15:48:39 +08:00
YangXin
194e6fb0c8 add new features memRouter and userswap.
Signed-off-by: YangXin <245051644@qq.com>
2021-10-18 15:21:51 +08:00
YangXin
b1689d83a7 Add new features memRouter and userswap to etmem.
Signed-off-by: YangXin <245051644@qq.com>
2021-10-18 15:21:33 +08:00
11 changed files with 4351 additions and 15 deletions

View File

@ -0,0 +1,335 @@
From b89f142798ebb23ad58ad3a0d1fe34f74e7801a6 Mon Sep 17 00:00:00 2001
From: louhongxiang <louhongxiang@huawei.com>
Date: Thu, 30 Sep 2021 14:15:50 +0800
Subject: [PATCH 47/50] move all the files to sub directory of etmem.
---
CMakeLists.txt => etmem/CMakeLists.txt | 0
{conf => etmem/conf}/example_conf.yaml | 0
{inc => etmem/inc}/etmem_inc/etmem.h | 0
{inc => etmem/inc}/etmem_inc/etmem_common.h | 0
{inc => etmem/inc}/etmem_inc/etmem_engine.h | 0
{inc => etmem/inc}/etmem_inc/etmem_obj.h | 0
{inc => etmem/inc}/etmem_inc/etmem_project.h | 0
{inc => etmem/inc}/etmem_inc/etmem_rpc.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_common.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_cslide.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_engine.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_engine_exp.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_exp.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_file.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_log.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_migrate.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_pool_adapter.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_project.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_project_exp.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_rpc.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_scan.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_scan_exp.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_scan_export.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_slide.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_task.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_task_exp.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_thirdparty.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_thirdparty_export.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_threadpool.h | 0
{inc => etmem/inc}/etmemd_inc/etmemd_threadtimer.h | 0
{src => etmem/src}/etmem_src/etmem.c | 0
{src => etmem/src}/etmem_src/etmem_common.c | 0
{src => etmem/src}/etmem_src/etmem_engine.c | 0
{src => etmem/src}/etmem_src/etmem_obj.c | 0
{src => etmem/src}/etmem_src/etmem_project.c | 0
{src => etmem/src}/etmem_src/etmem_rpc.c | 0
{src => etmem/src}/etmemd_src/etmemd.c | 0
{src => etmem/src}/etmemd_src/etmemd_common.c | 0
{src => etmem/src}/etmemd_src/etmemd_cslide.c | 0
{src => etmem/src}/etmemd_src/etmemd_engine.c | 0
{src => etmem/src}/etmemd_src/etmemd_file.c | 0
{src => etmem/src}/etmemd_src/etmemd_log.c | 0
{src => etmem/src}/etmemd_src/etmemd_migrate.c | 0
{src => etmem/src}/etmemd_src/etmemd_pool_adapter.c | 0
{src => etmem/src}/etmemd_src/etmemd_project.c | 0
{src => etmem/src}/etmemd_src/etmemd_rpc.c | 0
{src => etmem/src}/etmemd_src/etmemd_scan.c | 0
{src => etmem/src}/etmemd_src/etmemd_scan.version | 0
{src => etmem/src}/etmemd_src/etmemd_slide.c | 0
{src => etmem/src}/etmemd_src/etmemd_task.c | 0
{src => etmem/src}/etmemd_src/etmemd_thirdparty.c | 0
{src => etmem/src}/etmemd_src/etmemd_threadpool.c | 0
{src => etmem/src}/etmemd_src/etmemd_threadtimer.c | 0
56 files changed, 0 insertions(+), 0 deletions(-)
rename CMakeLists.txt => etmem/CMakeLists.txt (100%)
rename {conf => etmem/conf}/example_conf.yaml (100%)
rename {inc => etmem/inc}/etmem_inc/etmem.h (100%)
rename {inc => etmem/inc}/etmem_inc/etmem_common.h (100%)
rename {inc => etmem/inc}/etmem_inc/etmem_engine.h (100%)
rename {inc => etmem/inc}/etmem_inc/etmem_obj.h (100%)
rename {inc => etmem/inc}/etmem_inc/etmem_project.h (100%)
rename {inc => etmem/inc}/etmem_inc/etmem_rpc.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_common.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_cslide.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_engine.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_engine_exp.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_exp.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_file.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_log.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_migrate.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_pool_adapter.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_project.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_project_exp.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_rpc.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_scan.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_scan_exp.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_scan_export.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_slide.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_task.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_task_exp.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_thirdparty.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_thirdparty_export.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_threadpool.h (100%)
rename {inc => etmem/inc}/etmemd_inc/etmemd_threadtimer.h (100%)
rename {src => etmem/src}/etmem_src/etmem.c (100%)
rename {src => etmem/src}/etmem_src/etmem_common.c (100%)
rename {src => etmem/src}/etmem_src/etmem_engine.c (100%)
rename {src => etmem/src}/etmem_src/etmem_obj.c (100%)
rename {src => etmem/src}/etmem_src/etmem_project.c (100%)
rename {src => etmem/src}/etmem_src/etmem_rpc.c (100%)
rename {src => etmem/src}/etmemd_src/etmemd.c (100%)
rename {src => etmem/src}/etmemd_src/etmemd_common.c (100%)
rename {src => etmem/src}/etmemd_src/etmemd_cslide.c (100%)
rename {src => etmem/src}/etmemd_src/etmemd_engine.c (100%)
rename {src => etmem/src}/etmemd_src/etmemd_file.c (100%)
rename {src => etmem/src}/etmemd_src/etmemd_log.c (100%)
rename {src => etmem/src}/etmemd_src/etmemd_migrate.c (100%)
rename {src => etmem/src}/etmemd_src/etmemd_pool_adapter.c (100%)
rename {src => etmem/src}/etmemd_src/etmemd_project.c (100%)
rename {src => etmem/src}/etmemd_src/etmemd_rpc.c (100%)
rename {src => etmem/src}/etmemd_src/etmemd_scan.c (100%)
rename {src => etmem/src}/etmemd_src/etmemd_scan.version (100%)
rename {src => etmem/src}/etmemd_src/etmemd_slide.c (100%)
rename {src => etmem/src}/etmemd_src/etmemd_task.c (100%)
rename {src => etmem/src}/etmemd_src/etmemd_thirdparty.c (100%)
rename {src => etmem/src}/etmemd_src/etmemd_threadpool.c (100%)
rename {src => etmem/src}/etmemd_src/etmemd_threadtimer.c (100%)
diff --git a/CMakeLists.txt b/etmem/CMakeLists.txt
similarity index 100%
rename from CMakeLists.txt
rename to etmem/CMakeLists.txt
diff --git a/conf/example_conf.yaml b/etmem/conf/example_conf.yaml
similarity index 100%
rename from conf/example_conf.yaml
rename to etmem/conf/example_conf.yaml
diff --git a/inc/etmem_inc/etmem.h b/etmem/inc/etmem_inc/etmem.h
similarity index 100%
rename from inc/etmem_inc/etmem.h
rename to etmem/inc/etmem_inc/etmem.h
diff --git a/inc/etmem_inc/etmem_common.h b/etmem/inc/etmem_inc/etmem_common.h
similarity index 100%
rename from inc/etmem_inc/etmem_common.h
rename to etmem/inc/etmem_inc/etmem_common.h
diff --git a/inc/etmem_inc/etmem_engine.h b/etmem/inc/etmem_inc/etmem_engine.h
similarity index 100%
rename from inc/etmem_inc/etmem_engine.h
rename to etmem/inc/etmem_inc/etmem_engine.h
diff --git a/inc/etmem_inc/etmem_obj.h b/etmem/inc/etmem_inc/etmem_obj.h
similarity index 100%
rename from inc/etmem_inc/etmem_obj.h
rename to etmem/inc/etmem_inc/etmem_obj.h
diff --git a/inc/etmem_inc/etmem_project.h b/etmem/inc/etmem_inc/etmem_project.h
similarity index 100%
rename from inc/etmem_inc/etmem_project.h
rename to etmem/inc/etmem_inc/etmem_project.h
diff --git a/inc/etmem_inc/etmem_rpc.h b/etmem/inc/etmem_inc/etmem_rpc.h
similarity index 100%
rename from inc/etmem_inc/etmem_rpc.h
rename to etmem/inc/etmem_inc/etmem_rpc.h
diff --git a/inc/etmemd_inc/etmemd.h b/etmem/inc/etmemd_inc/etmemd.h
similarity index 100%
rename from inc/etmemd_inc/etmemd.h
rename to etmem/inc/etmemd_inc/etmemd.h
diff --git a/inc/etmemd_inc/etmemd_common.h b/etmem/inc/etmemd_inc/etmemd_common.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_common.h
rename to etmem/inc/etmemd_inc/etmemd_common.h
diff --git a/inc/etmemd_inc/etmemd_cslide.h b/etmem/inc/etmemd_inc/etmemd_cslide.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_cslide.h
rename to etmem/inc/etmemd_inc/etmemd_cslide.h
diff --git a/inc/etmemd_inc/etmemd_engine.h b/etmem/inc/etmemd_inc/etmemd_engine.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_engine.h
rename to etmem/inc/etmemd_inc/etmemd_engine.h
diff --git a/inc/etmemd_inc/etmemd_engine_exp.h b/etmem/inc/etmemd_inc/etmemd_engine_exp.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_engine_exp.h
rename to etmem/inc/etmemd_inc/etmemd_engine_exp.h
diff --git a/inc/etmemd_inc/etmemd_exp.h b/etmem/inc/etmemd_inc/etmemd_exp.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_exp.h
rename to etmem/inc/etmemd_inc/etmemd_exp.h
diff --git a/inc/etmemd_inc/etmemd_file.h b/etmem/inc/etmemd_inc/etmemd_file.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_file.h
rename to etmem/inc/etmemd_inc/etmemd_file.h
diff --git a/inc/etmemd_inc/etmemd_log.h b/etmem/inc/etmemd_inc/etmemd_log.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_log.h
rename to etmem/inc/etmemd_inc/etmemd_log.h
diff --git a/inc/etmemd_inc/etmemd_migrate.h b/etmem/inc/etmemd_inc/etmemd_migrate.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_migrate.h
rename to etmem/inc/etmemd_inc/etmemd_migrate.h
diff --git a/inc/etmemd_inc/etmemd_pool_adapter.h b/etmem/inc/etmemd_inc/etmemd_pool_adapter.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_pool_adapter.h
rename to etmem/inc/etmemd_inc/etmemd_pool_adapter.h
diff --git a/inc/etmemd_inc/etmemd_project.h b/etmem/inc/etmemd_inc/etmemd_project.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_project.h
rename to etmem/inc/etmemd_inc/etmemd_project.h
diff --git a/inc/etmemd_inc/etmemd_project_exp.h b/etmem/inc/etmemd_inc/etmemd_project_exp.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_project_exp.h
rename to etmem/inc/etmemd_inc/etmemd_project_exp.h
diff --git a/inc/etmemd_inc/etmemd_rpc.h b/etmem/inc/etmemd_inc/etmemd_rpc.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_rpc.h
rename to etmem/inc/etmemd_inc/etmemd_rpc.h
diff --git a/inc/etmemd_inc/etmemd_scan.h b/etmem/inc/etmemd_inc/etmemd_scan.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_scan.h
rename to etmem/inc/etmemd_inc/etmemd_scan.h
diff --git a/inc/etmemd_inc/etmemd_scan_exp.h b/etmem/inc/etmemd_inc/etmemd_scan_exp.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_scan_exp.h
rename to etmem/inc/etmemd_inc/etmemd_scan_exp.h
diff --git a/inc/etmemd_inc/etmemd_scan_export.h b/etmem/inc/etmemd_inc/etmemd_scan_export.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_scan_export.h
rename to etmem/inc/etmemd_inc/etmemd_scan_export.h
diff --git a/inc/etmemd_inc/etmemd_slide.h b/etmem/inc/etmemd_inc/etmemd_slide.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_slide.h
rename to etmem/inc/etmemd_inc/etmemd_slide.h
diff --git a/inc/etmemd_inc/etmemd_task.h b/etmem/inc/etmemd_inc/etmemd_task.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_task.h
rename to etmem/inc/etmemd_inc/etmemd_task.h
diff --git a/inc/etmemd_inc/etmemd_task_exp.h b/etmem/inc/etmemd_inc/etmemd_task_exp.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_task_exp.h
rename to etmem/inc/etmemd_inc/etmemd_task_exp.h
diff --git a/inc/etmemd_inc/etmemd_thirdparty.h b/etmem/inc/etmemd_inc/etmemd_thirdparty.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_thirdparty.h
rename to etmem/inc/etmemd_inc/etmemd_thirdparty.h
diff --git a/inc/etmemd_inc/etmemd_thirdparty_export.h b/etmem/inc/etmemd_inc/etmemd_thirdparty_export.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_thirdparty_export.h
rename to etmem/inc/etmemd_inc/etmemd_thirdparty_export.h
diff --git a/inc/etmemd_inc/etmemd_threadpool.h b/etmem/inc/etmemd_inc/etmemd_threadpool.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_threadpool.h
rename to etmem/inc/etmemd_inc/etmemd_threadpool.h
diff --git a/inc/etmemd_inc/etmemd_threadtimer.h b/etmem/inc/etmemd_inc/etmemd_threadtimer.h
similarity index 100%
rename from inc/etmemd_inc/etmemd_threadtimer.h
rename to etmem/inc/etmemd_inc/etmemd_threadtimer.h
diff --git a/src/etmem_src/etmem.c b/etmem/src/etmem_src/etmem.c
similarity index 100%
rename from src/etmem_src/etmem.c
rename to etmem/src/etmem_src/etmem.c
diff --git a/src/etmem_src/etmem_common.c b/etmem/src/etmem_src/etmem_common.c
similarity index 100%
rename from src/etmem_src/etmem_common.c
rename to etmem/src/etmem_src/etmem_common.c
diff --git a/src/etmem_src/etmem_engine.c b/etmem/src/etmem_src/etmem_engine.c
similarity index 100%
rename from src/etmem_src/etmem_engine.c
rename to etmem/src/etmem_src/etmem_engine.c
diff --git a/src/etmem_src/etmem_obj.c b/etmem/src/etmem_src/etmem_obj.c
similarity index 100%
rename from src/etmem_src/etmem_obj.c
rename to etmem/src/etmem_src/etmem_obj.c
diff --git a/src/etmem_src/etmem_project.c b/etmem/src/etmem_src/etmem_project.c
similarity index 100%
rename from src/etmem_src/etmem_project.c
rename to etmem/src/etmem_src/etmem_project.c
diff --git a/src/etmem_src/etmem_rpc.c b/etmem/src/etmem_src/etmem_rpc.c
similarity index 100%
rename from src/etmem_src/etmem_rpc.c
rename to etmem/src/etmem_src/etmem_rpc.c
diff --git a/src/etmemd_src/etmemd.c b/etmem/src/etmemd_src/etmemd.c
similarity index 100%
rename from src/etmemd_src/etmemd.c
rename to etmem/src/etmemd_src/etmemd.c
diff --git a/src/etmemd_src/etmemd_common.c b/etmem/src/etmemd_src/etmemd_common.c
similarity index 100%
rename from src/etmemd_src/etmemd_common.c
rename to etmem/src/etmemd_src/etmemd_common.c
diff --git a/src/etmemd_src/etmemd_cslide.c b/etmem/src/etmemd_src/etmemd_cslide.c
similarity index 100%
rename from src/etmemd_src/etmemd_cslide.c
rename to etmem/src/etmemd_src/etmemd_cslide.c
diff --git a/src/etmemd_src/etmemd_engine.c b/etmem/src/etmemd_src/etmemd_engine.c
similarity index 100%
rename from src/etmemd_src/etmemd_engine.c
rename to etmem/src/etmemd_src/etmemd_engine.c
diff --git a/src/etmemd_src/etmemd_file.c b/etmem/src/etmemd_src/etmemd_file.c
similarity index 100%
rename from src/etmemd_src/etmemd_file.c
rename to etmem/src/etmemd_src/etmemd_file.c
diff --git a/src/etmemd_src/etmemd_log.c b/etmem/src/etmemd_src/etmemd_log.c
similarity index 100%
rename from src/etmemd_src/etmemd_log.c
rename to etmem/src/etmemd_src/etmemd_log.c
diff --git a/src/etmemd_src/etmemd_migrate.c b/etmem/src/etmemd_src/etmemd_migrate.c
similarity index 100%
rename from src/etmemd_src/etmemd_migrate.c
rename to etmem/src/etmemd_src/etmemd_migrate.c
diff --git a/src/etmemd_src/etmemd_pool_adapter.c b/etmem/src/etmemd_src/etmemd_pool_adapter.c
similarity index 100%
rename from src/etmemd_src/etmemd_pool_adapter.c
rename to etmem/src/etmemd_src/etmemd_pool_adapter.c
diff --git a/src/etmemd_src/etmemd_project.c b/etmem/src/etmemd_src/etmemd_project.c
similarity index 100%
rename from src/etmemd_src/etmemd_project.c
rename to etmem/src/etmemd_src/etmemd_project.c
diff --git a/src/etmemd_src/etmemd_rpc.c b/etmem/src/etmemd_src/etmemd_rpc.c
similarity index 100%
rename from src/etmemd_src/etmemd_rpc.c
rename to etmem/src/etmemd_src/etmemd_rpc.c
diff --git a/src/etmemd_src/etmemd_scan.c b/etmem/src/etmemd_src/etmemd_scan.c
similarity index 100%
rename from src/etmemd_src/etmemd_scan.c
rename to etmem/src/etmemd_src/etmemd_scan.c
diff --git a/src/etmemd_src/etmemd_scan.version b/etmem/src/etmemd_src/etmemd_scan.version
similarity index 100%
rename from src/etmemd_src/etmemd_scan.version
rename to etmem/src/etmemd_src/etmemd_scan.version
diff --git a/src/etmemd_src/etmemd_slide.c b/etmem/src/etmemd_src/etmemd_slide.c
similarity index 100%
rename from src/etmemd_src/etmemd_slide.c
rename to etmem/src/etmemd_src/etmemd_slide.c
diff --git a/src/etmemd_src/etmemd_task.c b/etmem/src/etmemd_src/etmemd_task.c
similarity index 100%
rename from src/etmemd_src/etmemd_task.c
rename to etmem/src/etmemd_src/etmemd_task.c
diff --git a/src/etmemd_src/etmemd_thirdparty.c b/etmem/src/etmemd_src/etmemd_thirdparty.c
similarity index 100%
rename from src/etmemd_src/etmemd_thirdparty.c
rename to etmem/src/etmemd_src/etmemd_thirdparty.c
diff --git a/src/etmemd_src/etmemd_threadpool.c b/etmem/src/etmemd_src/etmemd_threadpool.c
similarity index 100%
rename from src/etmemd_src/etmemd_threadpool.c
rename to etmem/src/etmemd_src/etmemd_threadpool.c
diff --git a/src/etmemd_src/etmemd_threadtimer.c b/etmem/src/etmemd_src/etmemd_threadtimer.c
similarity index 100%
rename from src/etmemd_src/etmemd_threadtimer.c
rename to etmem/src/etmemd_src/etmemd_threadtimer.c
--
2.27.0

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,481 @@
From 498679879e2a81820126971839a23d307cdce9f5 Mon Sep 17 00:00:00 2001
From: Yangxin <245051644@qq.com>
Date: Thu, 30 Sep 2021 18:09:41 +0800
Subject: [PATCH 49/50] Add engine memdcd to etmemd.
Signed-off-by: Yangxin <245051644@qq.com>
---
etmem/CMakeLists.txt | 1 +
etmem/inc/etmemd_inc/etmemd_engine.h | 1 +
etmem/inc/etmemd_inc/etmemd_memdcd.h | 31 +++
etmem/src/etmemd_src/etmemd_engine.c | 2 +
etmem/src/etmemd_src/etmemd_memdcd.c | 374 +++++++++++++++++++++++++++
5 files changed, 409 insertions(+)
create mode 100644 etmem/inc/etmemd_inc/etmemd_memdcd.h
create mode 100644 etmem/src/etmemd_src/etmemd_memdcd.c
diff --git a/etmem/CMakeLists.txt b/etmem/CMakeLists.txt
index 6d11da9..b5eb83e 100644
--- a/etmem/CMakeLists.txt
+++ b/etmem/CMakeLists.txt
@@ -31,6 +31,7 @@ set(ETMEMD_SRC
${ETMEMD_SRC_DIR}/etmemd_log.c
${ETMEMD_SRC_DIR}/etmemd_project.c
${ETMEMD_SRC_DIR}/etmemd_engine.c
+ ${ETMEMD_SRC_DIR}/etmemd_memdcd.c
${ETMEMD_SRC_DIR}/etmemd_slide.c
${ETMEMD_SRC_DIR}/etmemd_cslide.c
${ETMEMD_SRC_DIR}/etmemd_thirdparty.c
diff --git a/etmem/inc/etmemd_inc/etmemd_engine.h b/etmem/inc/etmemd_inc/etmemd_engine.h
index 0134d21..9a50e10 100644
--- a/etmem/inc/etmemd_inc/etmemd_engine.h
+++ b/etmem/inc/etmemd_inc/etmemd_engine.h
@@ -24,6 +24,7 @@
enum eng_type {
SLIDE_ENGINE = 0,
CSLIDE_ENGINE,
+ MEMDCD_ENGINE,
DYNAMIC_FB_ENGINE,
HISTORICAL_FB_ENGINE,
THIRDPARTY_ENGINE,
diff --git a/etmem/inc/etmemd_inc/etmemd_memdcd.h b/etmem/inc/etmemd_inc/etmemd_memdcd.h
new file mode 100644
index 0000000..96f9307
--- /dev/null
+++ b/etmem/inc/etmemd_inc/etmemd_memdcd.h
@@ -0,0 +1,31 @@
+/******************************************************************************
+ * Copyright (c) Huawei Technologies Co., Ltd. 2020-2021. All rights reserved.
+ * etmem is licensed under the Mulan PSL v2.
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
+ * You may obtain a copy of Mulan PSL v2 at:
+ * http://license.coscl.org.cn/MulanPSL2
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
+ * PURPOSE.
+ * See the Mulan PSL v2 for more details.
+ * Author: YangXin
+ * Create: 2021-4-20
+ * Description: This is a header file of the function declaration for memdcd engine..
+ ******************************************************************************/
+
+
+#ifndef ETMEMD_MEMDCD_H
+#define ETMEMD_MEMDCD_H
+
+#include "etmemd_engine.h"
+
+#define MAX_SOCK_PATH_LENGTH 108
+
+struct memdcd_params {
+ struct task_executor *executor;
+ char memdcd_socket[MAX_SOCK_PATH_LENGTH];
+};
+
+int fill_engine_type_memdcd(struct engine *eng, GKeyFile *config);
+
+#endif
diff --git a/etmem/src/etmemd_src/etmemd_engine.c b/etmem/src/etmemd_src/etmemd_engine.c
index f57d52b..6a14ecb 100644
--- a/etmem/src/etmemd_src/etmemd_engine.c
+++ b/etmem/src/etmemd_src/etmemd_engine.c
@@ -18,6 +18,7 @@
#include "etmemd_engine.h"
#include "etmemd_slide.h"
#include "etmemd_cslide.h"
+#include "etmemd_memdcd.h"
#include "etmemd_thirdparty.h"
#include "etmemd_log.h"
#include "etmemd_common.h"
@@ -36,6 +37,7 @@ struct engine_remove_item {
static struct engine_add_item g_engine_add_items[] = {
{"slide", fill_engine_type_slide},
{"cslide", fill_engine_type_cslide},
+ {"memdcd", fill_engine_type_memdcd},
{"thirdparty", fill_engine_type_thirdparty},
};
diff --git a/etmem/src/etmemd_src/etmemd_memdcd.c b/etmem/src/etmemd_src/etmemd_memdcd.c
new file mode 100644
index 0000000..635e5a2
--- /dev/null
+++ b/etmem/src/etmemd_src/etmemd_memdcd.c
@@ -0,0 +1,374 @@
+/******************************************************************************
+ * Copyright (c) Huawei Technologies Co., Ltd. 2019-2021. All rights reserved.
+ * etmem is licensed under the Mulan PSL v2.
+ * You can use this software according to the terms and conditions of the Mulan PSL v2.
+ * You may obtain a copy of Mulan PSL v2 at:
+ * http://license.coscl.org.cn/MulanPSL2
+ * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
+ * PURPOSE.
+ * See the Mulan PSL v2 for more details.
+ * Author: Yangxin
+ * Create: 2021-04-05
+ * Description: API of memdcd engine.
+ ******************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/un.h>
+#include <unistd.h>
+#include <errno.h>
+
+#include "securec.h"
+#include "etmemd_log.h"
+#include "etmemd_common.h"
+#include "etmemd_engine.h"
+#include "etmemd_scan.h"
+#include "etmemd_migrate.h"
+#include "etmemd_pool_adapter.h"
+#include "etmemd_file.h"
+#include "etmemd_memdcd.h"
+
+#define MAX_VMA_NUM 512
+#define RESP_MSG_MAX_LEN 10
+#define CLIENT_RECV_DEFAULT_TIME 10
+
+enum MEMDCD_CMD_TYPE {
+ MEMDCD_CMD_MEM = 0
+};
+
+enum SwapType {
+ SWAP_TYPE_VMA_ADDR = 0xFFFFFF01,
+ SWAP_TYPE_MAX
+};
+
+struct vma_addr {
+ uint64_t start_addr;
+ uint64_t vma_len;
+};
+
+struct vma_addr_with_count {
+ struct vma_addr vma;
+ int count;
+};
+
+enum MEMDCD_MESSAGE_STATUS {
+ MEMDCD_SEND_START,
+ MEMDCD_SEND_PROCESS,
+ MEMDCD_SEND_END,
+};
+
+struct swap_vma_with_count {
+ enum SwapType type;
+ uint64_t length;
+ uint64_t total_length;
+ enum MEMDCD_MESSAGE_STATUS status;
+ struct vma_addr_with_count vma_addrs[MAX_VMA_NUM];
+};
+
+struct memory_message {
+ int pid;
+ uint32_t enable_uswap;
+ struct swap_vma_with_count vma;
+};
+
+struct memdcd_message {
+ enum MEMDCD_CMD_TYPE cmd_type;
+ union {
+ struct memory_message memory_msg;
+ };
+};
+
+static int memdcd_connection_init(time_t tm_out, const char sock_path[])
+{
+ struct sockaddr_un addr;
+ int len;
+
+ int sockfd = socket(AF_UNIX, SOCK_STREAM, 0);
+ if (sockfd < 0){
+ etmemd_log(ETMEMD_LOG_ERR, "new socket for memdcd error.");
+ return -1;
+ }
+
+ len = offsetof(struct sockaddr_un, sun_path) + strlen(addr.sun_path);
+
+ if (memset_s(&addr, sizeof(struct sockaddr_un),
+ 0, sizeof(struct sockaddr_un)) != EOK) {
+ etmemd_log(ETMEMD_LOG_ERR, "clear addr failed\n");
+ goto err_out;
+ }
+
+ addr.sun_family = AF_UNIX;
+ if (memcpy_s(addr.sun_path, sizeof(addr.sun_path),
+ sock_path, strlen(sock_path)) != EOK) {
+ etmemd_log(ETMEMD_LOG_ERR, "copy for memdcd server path to addr fail, error(%s)\n",
+ strerror(errno));
+ goto err_out;
+ }
+
+ /* note, the below two line **MUST** maintain the order */
+ len = offsetof(struct sockaddr_un, sun_path) + strlen(addr.sun_path);
+ addr.sun_path[0] = '\0';
+ if (connect(sockfd, (struct sockaddr *)&addr, len) < 0){
+ etmemd_log(ETMEMD_LOG_ERR, "connect memdcd failed\n");
+ goto err_out;
+ }
+
+ return sockfd;
+
+err_out:
+ close(sockfd);
+ return -1;
+}
+
+static int send_data_to_memdcd(unsigned int pid, struct memdcd_message *msg, const char sock_path[])
+{
+ int client_fd;
+ int ret = 0;
+ int read_bytes;
+ int write_bytes;
+ char buff[RESP_MSG_MAX_LEN] = {0};
+ time_t recv_timeout = CLIENT_RECV_DEFAULT_TIME;
+
+ client_fd = memdcd_connection_init(recv_timeout, sock_path);
+ if (client_fd < 0) {
+ etmemd_log(ETMEMD_LOG_ERR, "%s: connect error %d.\n", __func__, client_fd);
+ return -1;
+ }
+ write_bytes = write(client_fd, msg, sizeof(struct memdcd_message));
+ if (write_bytes <= 0) {
+ etmemd_log(ETMEMD_LOG_DEBUG, "etmemd_socket: send to memdcd for pid %u, bytes: %d\n",
+ pid, write_bytes);
+ ret = -1;
+ goto CLOSE_SOCK;
+ }
+
+ read_bytes = read(client_fd, buff, RESP_MSG_MAX_LEN);
+ if (read_bytes > 0) {
+ if (strcmp(buff, "success") == 0) {
+ etmemd_log(ETMEMD_LOG_INFO, "etmemd_socket: recv respond success.\n");
+ } else {
+ etmemd_log(ETMEMD_LOG_ERR, "etmemd_socket: recv respond failed.\n");
+ ret = -1;
+ }
+ }
+
+CLOSE_SOCK:
+ close(client_fd);
+
+ return ret;
+}
+
+static int memdcd_do_migrate(unsigned int pid, struct page_refs *page_refs_list, const char sock_path[])
+{
+ int count = 0, total_count = 0;
+ int ret = 0;
+ struct swap_vma_with_count *swap_vma = NULL;
+ struct page_refs *page_refs = page_refs_list;
+ struct memdcd_message *msg;
+
+ if (page_refs_list == NULL) {
+ /* do nothing */
+ return 0;
+ }
+
+ while (page_refs != NULL) {
+ page_refs = page_refs->next;
+ total_count++;
+ }
+ page_refs = page_refs_list;
+
+ msg = (struct memdcd_message *)calloc(1, sizeof(struct memdcd_message));
+ if (msg == NULL) {
+ etmemd_log(ETMEMD_LOG_WARN, "memigd_socket: malloc for swap vma failed. \n");
+ return -1;
+ }
+
+ msg->cmd_type = MEMDCD_CMD_MEM;
+ msg->memory_msg.pid = pid;
+ msg->memory_msg.enable_uswap = true;
+ msg->memory_msg.vma.status = MEMDCD_SEND_START;
+
+ swap_vma = &(msg->memory_msg.vma);
+ swap_vma->type = SWAP_TYPE_VMA_ADDR;
+ swap_vma->total_length = total_count;
+
+ while (page_refs != NULL) {
+ swap_vma->vma_addrs[count].vma.start_addr = page_refs->addr;
+ swap_vma->vma_addrs[count].vma.vma_len = page_type_to_size(page_refs->type);
+ swap_vma->vma_addrs[count].count = page_refs->count;
+ count++;
+ page_refs = page_refs->next;
+
+ if (count < MAX_VMA_NUM) {
+ continue;
+ }
+ if (page_refs == NULL) {
+ break;
+ }
+ swap_vma->length = count * sizeof(struct vma_addr_with_count);
+ if (send_data_to_memdcd(pid, msg, sock_path) != 0) {
+ ret = -1;
+ goto FREE_SWAP;
+ }
+ count = 0;
+ msg->memory_msg.vma.status = MEMDCD_SEND_PROCESS;
+ if (memset_s(swap_vma->vma_addrs, sizeof(swap_vma->vma_addrs),
+ 0, sizeof(swap_vma->vma_addrs)) != EOK) {
+ etmemd_log(ETMEMD_LOG_ERR, "clear swap_vma failed\n");
+ ret = -1;
+ goto FREE_SWAP;
+ }
+ }
+
+ if (msg->memory_msg.vma.status != MEMDCD_SEND_START)
+ msg->memory_msg.vma.status = MEMDCD_SEND_END;
+ swap_vma->length = count * sizeof(struct vma_addr_with_count);
+ if (send_data_to_memdcd(pid, msg, sock_path) != 0) {
+ ret = -1;
+ }
+
+FREE_SWAP:
+ free(msg);
+ return ret;
+}
+
+static void *memdcd_executor(void *arg)
+{
+ struct task_pid *tk_pid = (struct task_pid *)arg;
+ struct memdcd_params *memdcd_params = (struct memdcd_params *)(tk_pid->tk->params);
+ struct page_refs *page_refs = NULL;
+
+ /* register cleanup function in case of unexpected cancellation detected,
+ * and register for memory_grade first, because it needs to clean after page_refs is cleaned */
+ pthread_cleanup_push(clean_page_refs_unexpected, &page_refs);
+ page_refs = etmemd_do_scan(tk_pid, tk_pid->tk);
+ if (page_refs != NULL) {
+ if (memdcd_do_migrate(tk_pid->pid, page_refs, memdcd_params->memdcd_socket) != 0) {
+ etmemd_log(ETMEMD_LOG_WARN, "memdcd migrate for pid %u fail\n", tk_pid->pid);
+ }
+ }
+
+ /* no need to use page_refs any longer.
+ * pop the cleanup function with parameter 1, because the items in page_refs list will be moved
+ * into the at least on list of memory_grade after polidy function called if no problems happened,
+ * but mig_policy_func() may fails to move page_refs in rare cases.
+ * It will do nothing if page_refs is NULL */
+ pthread_cleanup_pop(1);
+
+ return NULL;
+}
+
+static int fill_task_sock_path(void *obj, void *val)
+{
+ const char *default_path = "@_memdcd.server";
+
+ struct memdcd_params *params = (struct memdcd_params *)obj;
+ char *sock_path = (char *)val;
+
+ if(strcmp(sock_path, "-") == 0) {
+ if (strncpy_s(params->memdcd_socket, MAX_SOCK_PATH_LENGTH, default_path, strlen(default_path)) != 0) {
+ etmemd_log(ETMEMD_LOG_ERR, "strncpy for memdcd_socket fail");
+ return -1;
+ }
+ } else {
+ if (strncpy_s(params->memdcd_socket, MAX_SOCK_PATH_LENGTH, sock_path, strlen(sock_path)) != 0) {
+ etmemd_log(ETMEMD_LOG_ERR, "strncpy for memdcd_socket fail");
+ return -1;
+ }
+ }
+
+ return 0;
+}
+
+static struct config_item g_memdcd_task_config_items[] = {
+ {"Sock", STR_VAL, fill_task_sock_path, false},
+};
+
+static int memdcd_fill_task(GKeyFile *config, struct task *tk)
+{
+ struct memdcd_params *params = calloc(1, sizeof(struct memdcd_params));
+ memset_s(params->memdcd_socket, MAX_SOCK_PATH_LENGTH, 0, MAX_SOCK_PATH_LENGTH);
+
+ if (params == NULL) {
+ etmemd_log(ETMEMD_LOG_ERR, "alloc memdcd param fail\n");
+ return -1;
+ }
+
+ if (parse_file_config(config, TASK_GROUP, g_memdcd_task_config_items, ARRAY_SIZE(g_memdcd_task_config_items),
+ (void *)params) != 0) {
+ etmemd_log(ETMEMD_LOG_ERR, "memdcd fill task fail\n");
+ goto free_params;
+ }
+
+ if (strlen(params->memdcd_socket) >= MAX_SOCK_PATH_LENGTH) {
+ etmemd_log(ETMEMD_LOG_ERR, "length of engine param Sock must less than 108.\n");
+ goto free_params;
+ }
+
+ tk->params = params;
+ return 0;
+
+free_params:
+ free(params);
+ return -1;
+}
+
+static void memdcd_clear_task(struct task *tk)
+{
+ free(tk->params);
+ tk->params = NULL;
+}
+
+static int memdcd_start_task(struct engine *eng, struct task *tk)
+{
+ struct memdcd_params *params = tk->params;
+
+ params->executor = malloc(sizeof(struct task_executor));
+ if (params->executor == NULL) {
+ etmemd_log(ETMEMD_LOG_ERR, "memdcd alloc memory for task_executor fail\n");
+ return -1;
+ }
+
+ params->executor->tk = tk;
+ params->executor->func = memdcd_executor;
+ if (start_threadpool_work(params->executor) != 0) {
+ free(params->executor);
+ params->executor = NULL;
+ etmemd_log(ETMEMD_LOG_ERR, "memdcd start task executor fail\n");
+ return -1;
+ }
+
+ return 0;
+}
+
+static void memdcd_stop_task(struct engine *eng, struct task *tk)
+{
+ struct memdcd_params *params = tk->params;
+
+ stop_and_delete_threadpool_work(tk);
+ free(params->executor);
+ params->executor = NULL;
+}
+
+struct engine_ops g_memdcd_eng_ops = {
+ .fill_eng_params = NULL,
+ .clear_eng_params = NULL,
+ .fill_task_params = memdcd_fill_task,
+ .clear_task_params = memdcd_clear_task,
+ .start_task = memdcd_start_task,
+ .stop_task = memdcd_stop_task,
+ .alloc_pid_params = NULL,
+ .free_pid_params = NULL,
+ .eng_mgt_func = NULL,
+};
+
+int fill_engine_type_memdcd(struct engine *eng, GKeyFile *config)
+{
+ eng->ops = &g_memdcd_eng_ops;
+ eng->engine_type = MEMDCD_ENGINE;
+ eng->name = "memdcd";
+ return 0;
+}
\ No newline at end of file
--
2.27.0

View File

@ -0,0 +1,39 @@
From 1aef995d51254409b7aa1e2e84b9b750007e2413 Mon Sep 17 00:00:00 2001
From: YangXin <245051644@qq.com>
Date: Thu, 30 Sep 2021 18:58:33 +0800
Subject: [PATCH 50/50] Add CMakeLists.txt for three features of etmem.
Signed-off-by: YangXin <245051644@qq.com>
---
CMakeLists.txt | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
create mode 100644 CMakeLists.txt
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..a5d6761
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,18 @@
+# /******************************************************************************
+# * Copyright (c) Huawei Technologies Co., Ltd. 2020-2021. All rights reserved.
+# * etmem is licensed under the Mulan PSL v2.
+# * You can use this software according to the terms and conditions of the Mulan PSL v2.
+# * You may obtain a copy of Mulan PSL v2 at:
+# * http://license.coscl.org.cn/MulanPSL2
+# * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
+# * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
+# * PURPOSE.
+# * See the Mulan PSL v2 for more details.
+# * Author:YangXin
+# * Create: 2021-09-31
+# * Description:CMakeLists for three features of etmem to compile
+# ******************************************************************************/
+
+add_subdirectory(etmem)
+add_subdirectory(memRouter)
+add_subdirectory(userswap)
\ No newline at end of file
--
2.27.0

View File

@ -0,0 +1,99 @@
From 6b25858292a295ab928cd8bfb89715ecee2e600b Mon Sep 17 00:00:00 2001
From: yangxin <245051644@qq.com>
Date: Wed, 15 Dec 2021 10:19:43 +0000
Subject: [PATCH] update memdcd engine for userswap
Filter out vmas without userswap flags in the memdcd engine.
Signed-off-by: YangXin <245051644@qq.com>
---
etmem/src/etmemd_src/etmemd_memdcd.c | 54 ++++++++++++++++++++++++++--
1 file changed, 51 insertions(+), 3 deletions(-)
diff --git a/etmem/src/etmemd_src/etmemd_memdcd.c b/etmem/src/etmemd_src/etmemd_memdcd.c
index 635e5a2..28590e2 100644
--- a/etmem/src/etmemd_src/etmemd_memdcd.c
+++ b/etmem/src/etmemd_src/etmemd_memdcd.c
@@ -235,6 +235,54 @@ FREE_SWAP:
return ret;
}
+static struct page_refs *memdcd_do_scan(const struct task_pid *tpid, const struct task *tk)
+{
+ int i = 0;
+ struct vmas *vmas = NULL;
+ struct page_refs *page_refs = NULL;
+ int ret = 0;
+ char pid[PID_STR_MAX_LEN] = {0};
+ char *us = "us";
+
+ if(tpid == NULL) {
+ etmemd_log(ETMEMD_LOG_ERR, "task pid is null\n");
+ return NULL;
+ }
+
+ if (tk == NULL) {
+ etmemd_log(ETMEMD_LOG_ERR, "task struct is null for pid %u\n", tpid->pid);
+ return NULL;
+ }
+
+ if (snprintf_s(pid, PID_STR_MAX_LEN, PID_STR_MAX_LEN - 1, "%u", tpid->pid) <= 0) {
+ etmemd_log(ETMEMD_LOG_ERR, "snprintf pid fail %u", tpid->pid);
+ return NULL;
+ }
+ /* get vmas of target pid first. */
+ vmas = get_vmas_with_flags(pid, &us, 1, true);
+ if (vmas == NULL) {
+ etmemd_log(ETMEMD_LOG_ERR, "get vmas for %s fail\n", pid);
+ return NULL;
+ }
+
+ /* loop for scanning idle_pages to get result of memory access. */
+ for (i = 0; i < tk->eng->proj->loop; i++) {
+ ret = get_page_refs(vmas, pid, &page_refs, NULL, 0);
+ if (ret != 0) {
+ etmemd_log(ETMEMD_LOG_ERR, "scan operation failed\n");
+ /* free page_refs nodes already exist */
+ etmemd_free_page_refs(page_refs);
+ page_refs = NULL;
+ break;
+ }
+ sleep((unsigned)tk->eng->proj->sleep);
+ }
+
+ free_vmas(vmas);
+
+ return page_refs;
+}
+
static void *memdcd_executor(void *arg)
{
struct task_pid *tk_pid = (struct task_pid *)arg;
@@ -244,7 +292,7 @@ static void *memdcd_executor(void *arg)
/* register cleanup function in case of unexpected cancellation detected,
* and register for memory_grade first, because it needs to clean after page_refs is cleaned */
pthread_cleanup_push(clean_page_refs_unexpected, &page_refs);
- page_refs = etmemd_do_scan(tk_pid, tk_pid->tk);
+ page_refs = memdcd_do_scan(tk_pid, tk_pid->tk);
if (page_refs != NULL) {
if (memdcd_do_migrate(tk_pid->pid, page_refs, memdcd_params->memdcd_socket) != 0) {
etmemd_log(ETMEMD_LOG_WARN, "memdcd migrate for pid %u fail\n", tk_pid->pid);
@@ -290,13 +338,13 @@ static struct config_item g_memdcd_task_config_items[] = {
static int memdcd_fill_task(GKeyFile *config, struct task *tk)
{
struct memdcd_params *params = calloc(1, sizeof(struct memdcd_params));
- memset_s(params->memdcd_socket, MAX_SOCK_PATH_LENGTH, 0, MAX_SOCK_PATH_LENGTH);
-
if (params == NULL) {
etmemd_log(ETMEMD_LOG_ERR, "alloc memdcd param fail\n");
return -1;
}
+ memset_s(params->memdcd_socket, MAX_SOCK_PATH_LENGTH, 0, MAX_SOCK_PATH_LENGTH);
+
if (parse_file_config(config, TASK_GROUP, g_memdcd_task_config_items, ARRAY_SIZE(g_memdcd_task_config_items),
(void *)params) != 0) {
etmemd_log(ETMEMD_LOG_ERR, "memdcd fill task fail\n");
--
2.27.0

View File

@ -0,0 +1,59 @@
From ae1a854beda0b9318e080acff64de3375eff75d3 Mon Sep 17 00:00:00 2001
From: Liu Chao <liuchao173@huawei.com>
Date: Tue, 2 Apr 2024 16:01:50 +0800
Subject: [PATCH] etmem: construct etmem debug info package
Currently, there is no debug info package for etmem, and this
can be a problem when trying to analyze a coredump
Signed-off-by: tangyuchen <tangyuchen5@huawei.com>
---
etmem/CMakeLists.txt | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/etmem/CMakeLists.txt b/etmem/CMakeLists.txt
index 0b38f07..6018ce0 100644
--- a/etmem/CMakeLists.txt
+++ b/etmem/CMakeLists.txt
@@ -83,9 +83,11 @@ target_compile_options(etmemd PRIVATE -fsigned-char -fno-omit-frame-pointer -Wal
if(CONFIG_DEBUG STREQUAL "y")
target_compile_options(etmemd PRIVATE -g)
+else()
+ target_link_options(etmemd PRIVATE -s)
endif()
-set_target_properties(etmemd PROPERTIES LINK_FLAGS "-s -fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines")
+target_link_options(etmemd PRIVATE -fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines)
target_link_libraries(etmemd PRIVATE pthread dl rt boundscheck numa ${GLIB2_LIBRARIES})
if( ${ARCHITECTURE} STREQUAL "aarch64" )
@@ -102,9 +104,11 @@ target_compile_options(etmem PRIVATE -fsigned-char -fno-omit-frame-pointer -Wall
if(CONFIG_DEBUG STREQUAL "y")
target_compile_options(etmem PRIVATE -g)
+else()
+ target_link_options(etmem PRIVATE -s)
endif()
-set_target_properties(etmem PROPERTIES LINK_FLAGS "-s -fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines")
+target_link_options(etmem PRIVATE -fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines)
target_link_libraries(etmem PRIVATE pthread dl rt boundscheck)
if( ${ARCHITECTURE} STREQUAL "aarch64" )
@@ -122,9 +126,11 @@ target_compile_options(etmemd_scan PRIVATE -fsigned-char -fno-omit-frame-pointer
if(CONFIG_DEBUG STREQUAL "y")
target_compile_options(etmemd_scan PRIVATE -g)
+else()
+ target_link_options(etmemd_scan PRIVATE -s)
endif()
-set_target_properties(etmemd_scan PROPERTIES LINK_FLAGS "-s -fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--version-script=${ETMEMD_SRC_DIR}/etmemd_scan.version")
+target_link_options(etmemd_scan PRIVATE -fPIE -pie -fPIC -Wl,-z,relro,-z,now,-z,noexecstack -Wtrampolines -Wl,--version-script=${ETMEMD_SRC_DIR}/etmemd_scan.version)
target_link_libraries(etmemd_scan PRIVATE pthread dl rt boundscheck numa ${GLIB2_LIBRARIES})
if( ${ARCHITECTURE} STREQUAL "aarch64" )
--
2.33.0

BIN
1.0.tar.gz Normal file

Binary file not shown.

View File

@ -16,7 +16,7 @@ etmem内存分级扩展技术通过DRAM+内存压缩/高性能存储新介质
a) 下载代码包手动编译
$ tar -xf etmem-1.0.tar.gz
$ tar -xf 1.0.tar.gz
$ cd etmem-1.0

Binary file not shown.

View File

@ -1,11 +1,10 @@
%global debug_package %{nil}
Name: etmem
Version: 1.0
Release: 6
Release: 11
Summary: etmem
License: Mulan PSL v2
Source0: etmem-%{version}.tar.gz
URL: https://gitee.com/openeuler/etmem
Source0: https://gitee.com/openeuler/etmem/repository/archive/%{version}.tar.gz
Patch0: 0001-fix-64K-pagesize-scan-problem.patch
Patch1: 0002-change-aarch64-march-to-armv8-a.patch
@ -53,12 +52,18 @@ Patch42: 0043-update-README.md.patch
Patch43: 0044-etmem-cleancode.patch
Patch44: 0045-add-dram_percent-to-etmem.patch
Patch45: 0046-Fix-memory-leak-in-slide-engine.patch
Patch46: 0047-move-all-the-files-to-sub-directory-of-etmem.patch
Patch47: 0048-Commit-new-features-memRouter-and-userswap-to-etmem.patch
Patch48: 0049-Add-engine-memdcd-to-etmemd.patch
Patch49: 0050-Add-CMakeLists.txt-for-three-features-of-etmem.patch
Patch50: 0051-update-memdcd-engine-for-userswap.patch
Patch51: 0052-etmem-construct-etmem-debug-info-package.patch
#Dependency
BuildRequires: cmake gcc gcc-c++
BuildRequires: libboundscheck
Requires: libboundscheck
BuildRequires: cmake gcc gcc-c++ glib2-devel
BuildRequires: libboundscheck numactl-devel libcap-devel json-c-devel
Requires: libboundscheck json-c libcap numactl-libs
Requires: glib2
%description
etmem module
@ -70,28 +75,56 @@ etmem module
%build
mkdir -p build
cd build
cmake ..
cmake .. -DCONFIG_DEBUG=y
make
%install
mkdir -p $RPM_BUILD_ROOT%{_bindir}
mkdir -p $RPM_BUILD_ROOT%{_libdir}
mkdir -p $RPM_BUILD_ROOT%{_includedir}
install -d $RPM_BUILD_ROOT%{_sysconfdir}/etmem/
install -m 0500 build/bin/etmem $RPM_BUILD_ROOT%{_bindir}
install -m 0500 build/bin/etmemd $RPM_BUILD_ROOT%{_bindir}
install -m 0600 conf/example_conf.yaml $RPM_BUILD_ROOT%{_sysconfdir}/etmem/
install -m 0700 etmem/build/bin/etmem $RPM_BUILD_ROOT%{_bindir}
install -m 0700 etmem/build/bin/etmemd $RPM_BUILD_ROOT%{_bindir}
install -m 0600 etmem/conf/example_conf.yaml $RPM_BUILD_ROOT%{_sysconfdir}/etmem/
install -m 0750 build/memRouter/memdcd $RPM_BUILD_ROOT%{_bindir}
install -m 0750 build/userswap/libuswap.a $RPM_BUILD_ROOT%{_libdir}
install -m 0644 userswap/include/uswap_api.h $RPM_BUILD_ROOT%{_includedir}
%files
%defattr(-,root,root,0750)
%{_bindir}/etmem
%{_bindir}/etmemd
%attr(0500, -, -) %{_bindir}/etmem
%attr(0500, -, -) %{_bindir}/etmemd
%dir %{_sysconfdir}/etmem
%{_sysconfdir}/etmem/example_conf.yaml
%attr(0550, -, -) %{_bindir}/memdcd
%attr(0550, -, -) %{_libdir}/libuswap.a
%{_includedir}/uswap_api.h
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%changelog
* Wed Apr 3 2024 tangyuchen <tangyuchen5@huawei.com> 1.0-11
- Type:bugfix
- CVE:NA
- SUG:NA
- DESC:add debug info support for etmem
* Fri Dec 15 2021 YangXin <245051644@qq.com> 1.0-10
- Update memdcd engine for userswap page filter.
* Fri Oct 29 2021 liubo <liubo254@huawei.com> 1.0-9
- Add missing URL and source to etmem.spec
* Thu Oct 20 2021 shikemeng <shikemeng@huawei.com> 1.0-8
- Add missing Requires
- Remove write permssion in %file after strip
- Change Requires numactl to numactl-libs
* Thu Sep 30 2021 yangxin <245051644@qq.com> 1.0-7
- Update etmem and add new features memRouter and userswap.=
* Mon Aug 1 2021 louhongxiang <louhongxiang@huawei.com> 1.0-6
- cancel write permission of root.

4
etmem.yaml Normal file
View File

@ -0,0 +1,4 @@
version_control: gitee
src_repo: openEuler/etmem
tag_prefix: ""
seperator: .