84 lines
3.3 KiB
Diff
84 lines
3.3 KiB
Diff
From c74d87538bc27a20c24d27319c5d60970ab3ccab Mon Sep 17 00:00:00 2001
|
||
From: vegbir <yangjiaqi16@huawei.com>
|
||
Date: Wed, 14 Jun 2023 17:14:16 +0800
|
||
Subject: [PATCH 5/7] rubik: move fssr design document to design dir
|
||
|
||
Signed-off-by: vegbir <yangjiaqi16@huawei.com>
|
||
---
|
||
docs/{ => design}/fssr.md | 18 ++++++++++++++----
|
||
.../fssr/flowchart.png} | Bin
|
||
.../fssr/sequence_diagram.png} | Bin
|
||
3 files changed, 14 insertions(+), 4 deletions(-)
|
||
rename docs/{ => design}/fssr.md (90%)
|
||
rename docs/{png/rubik_fssr_2.png => images/fssr/flowchart.png} (100%)
|
||
rename docs/{png/rubik_fssr_1.png => images/fssr/sequence_diagram.png} (100%)
|
||
|
||
diff --git a/docs/fssr.md b/docs/design/fssr.md
|
||
similarity index 90%
|
||
rename from docs/fssr.md
|
||
rename to docs/design/fssr.md
|
||
index 3fb36bd..184b364 100644
|
||
--- a/docs/fssr.md
|
||
+++ b/docs/design/fssr.md
|
||
@@ -1,20 +1,27 @@
|
||
+# 【需求设计】异步内存分级回收 fssr策略
|
||
+
|
||
## 方案目标
|
||
+
|
||
在混部集群中,在线和离线业务被同时部署到同一物理资源(节点)上,同时离线业务是内存资源消耗型,在线业务有波峰波谷,在离线业务之间内存资源竞争导致在线业务受影响。该方案目标在充分利用内存资源的同时保证在线QoS。
|
||
|
||
## 总体设计
|
||
+
|
||
各个模块之间的联系如下:
|
||
-
|
||
+
|
||
|
||
- 用户部署rubik,rubik向k8s注册监听pod事件。
|
||
- 当离线业务被部署时k8s会通知rubik,rubik向该离线pod配置memory.high。
|
||
- 同时rubik实时监控当前节点的内存使用量,使用fssr策略向pod配置memory.high。
|
||
|
||
### 依赖说明
|
||
+
|
||
内核需要支持memcg级内存水位线方案,即提供`memory.high`和`memory.high_async_ratio`。
|
||
|
||
### 详细设计
|
||
+
|
||
内存分级方案中,rubik新增FSSR内存处理模块,该模块主要处理获取主机(节点)的总内存(total memory)、预留内存(reserved memory)、剩余内存(free memory)。并根据FSSR算法设置离线内存的memory.high。具体策略如下:
|
||
-
|
||
+
|
||
+
|
||
- rubik启动时计算预留内存,默认为总内存的10%,如果总内存的10%超过10G,则为10G
|
||
- 配置离线容器的cgroup级别水位线,内核提供`memory.high`和`memory.high_async_ratio`两个接口,分别配置cgroup的软上限和警戒水位线。启动rubik时默认配置`memory.high`为`total_memory`(总内存)`*`80%
|
||
- 获取剩余内存free_memory
|
||
@@ -22,13 +29,16 @@
|
||
- 持续一分钟free_memory>2`*`reserved_memory时提高离线的memory.high,每次提升总内存的1%,total_memory`*`1%
|
||
|
||
说明:
|
||
+
|
||
1. 离线应用memory.high的范围为`[total_memory*30%, total_memory*80%]`
|
||
|
||
### 配置说明
|
||
-```
|
||
+
|
||
+```json
|
||
"dynMemory": {
|
||
"policy": "fssr"
|
||
}
|
||
```
|
||
+
|
||
- dynMemory表示动态内存
|
||
-- policy目前只支持fssr
|
||
\ No newline at end of file
|
||
+- policy目前只支持fssr
|
||
diff --git a/docs/png/rubik_fssr_2.png b/docs/images/fssr/flowchart.png
|
||
similarity index 100%
|
||
rename from docs/png/rubik_fssr_2.png
|
||
rename to docs/images/fssr/flowchart.png
|
||
diff --git a/docs/png/rubik_fssr_1.png b/docs/images/fssr/sequence_diagram.png
|
||
similarity index 100%
|
||
rename from docs/png/rubik_fssr_1.png
|
||
rename to docs/images/fssr/sequence_diagram.png
|
||
--
|
||
2.32.1 (Apple Git-133)
|
||
|