searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享

CXL论文分享-TPP(Transparent Page Placement)

2023-10-09 08:43:40
296
0

原文: Transparent Page Placement for CXL-Enabled Tiered-Memory 

链接:  (这里贴链接无法通过审核, 所以需要自行搜索)

 

1 Background & Motivation

CXL内存池化技术的介绍可以参考相关专栏文章(这里贴链接无法通过审核, 所以需要自行搜索)

现有完整的存储分级金字塔如图所示. 越靠近塔尖的存储介质具有更高的延迟, 而越靠近塔底的存储介质具有更大的容量.

随着CXL内存的出现, 在主存(本地内存)之外多出来了一种延迟没有增加太多, 但容量巨大的新内存. 如何能够用好这部分内存成为了一个重要问题.

Meta公司在2022年给出了一个方案: TPP(Transparent Page Placement, 透明页放置). 核心是将应用程序的内存页分为冷页和热页, 将冷页沉降到延迟更高的CXL内存, 将热页提升到延迟更低的本地内存, 从而在几乎不影响应用程序内存读取速度的前提下, 大幅提升可用内存总量.

 

为什么这种内存页放置的方法可行? 是基于以下统计结论:

1.页温度: 大部分被应用访问过的页在几分钟内都是冷页, 可以被沉降到更慢的内存层级中;

2.不同类型的页温度: 大部分匿名页是热页, 而文件页在短期内相对要冷一些;

3.不同类型的页随时间使用情况: 根据应用情况不同, 但都有规律

1.Web应用: 刚启动时大量使用文件页, 随后匿名页增多, 文件页下降;

2.Cache应用: 主要使用文件页, 且比例稳定;

3.数据仓库任务: 主要使用匿名页, 且比例稳定.

4.页类型对性能的影响: 根据应用情况不同, 原理见3

5.页被重复访问的间隔: 根据应用情况不同, 但都有规律

1.Web/Cache应用: 10分钟内大部分冷页会被再次访问;

2.数据仓库任务: 大部分匿名页都是新建的, 只有少部分会再次访问.

 

因此, 通过不同层级的内存页放置, 可以提升资源利用效率

 

2 Design

TPP的框架设计本身很简单, 而且都是利用已有的技术. 围绕冷页沉降热页提升主要有四大核心内容:

 

2.1 页温度检测

论文中列举了好多种方法, 最后TPP选择的是:

1.对CXL-Memory使用NUMA Balancing, 在下次访问的时候触发一次缺页异常;

2.对本地memory使用Linux已有的LRU方法.

据说这样可以做到几乎0消耗检测到大部分热页.

 

2.2 轻量级内存回收

在本地内存中通过LRU选择了待沉降的内存页后, 不是通过swap机制, 而是通过异步的迁移任务转移到CXL内存中, 比swap快多了.

 

2.3 分配与回收解耦

不同于目前主存发现存储不足后先回收然后分配的逻辑, TPP为了避免本地内存回收跟不上分配的速度, 导致更多页被分配进CXL内存, 在本地内存中额外维护了一部分空闲页.

简单地说也就是靠LRU多迁移一点内存页到CXL内存, 给本地内存多留点了buffer, 确保未来新的内存页都优先从主存上分配.

 

2.4 从CXL内存中提升内存页

在CXL内存中使用NUMA Balancing方法.

但在设置page fault之前, 先借助LRU检查选择到的是不是不活跃的页, 如果是不活跃的则不设置. 因此避免冷页被提升.

 

3 Evaluation

经过实验, TPP的内存页访问更加集中在本地内存上, 因此访问延时也更低.

本地内存 : CXL内存 = 2 : 1 时的情况如下

本地内存 : CXL内存 = 1 : 4 时的情况如下

0条评论
0 / 1000
Night
2文章数
0粉丝数
Night
2 文章 | 0 粉丝
Night
2文章数
0粉丝数
Night
2 文章 | 0 粉丝

CXL论文分享-TPP(Transparent Page Placement)

2023-10-09 08:43:40
296
0

原文: Transparent Page Placement for CXL-Enabled Tiered-Memory 

链接:  (这里贴链接无法通过审核, 所以需要自行搜索)

 

1 Background & Motivation

CXL内存池化技术的介绍可以参考相关专栏文章(这里贴链接无法通过审核, 所以需要自行搜索)

现有完整的存储分级金字塔如图所示. 越靠近塔尖的存储介质具有更高的延迟, 而越靠近塔底的存储介质具有更大的容量.

随着CXL内存的出现, 在主存(本地内存)之外多出来了一种延迟没有增加太多, 但容量巨大的新内存. 如何能够用好这部分内存成为了一个重要问题.

Meta公司在2022年给出了一个方案: TPP(Transparent Page Placement, 透明页放置). 核心是将应用程序的内存页分为冷页和热页, 将冷页沉降到延迟更高的CXL内存, 将热页提升到延迟更低的本地内存, 从而在几乎不影响应用程序内存读取速度的前提下, 大幅提升可用内存总量.

 

为什么这种内存页放置的方法可行? 是基于以下统计结论:

1.页温度: 大部分被应用访问过的页在几分钟内都是冷页, 可以被沉降到更慢的内存层级中;

2.不同类型的页温度: 大部分匿名页是热页, 而文件页在短期内相对要冷一些;

3.不同类型的页随时间使用情况: 根据应用情况不同, 但都有规律

1.Web应用: 刚启动时大量使用文件页, 随后匿名页增多, 文件页下降;

2.Cache应用: 主要使用文件页, 且比例稳定;

3.数据仓库任务: 主要使用匿名页, 且比例稳定.

4.页类型对性能的影响: 根据应用情况不同, 原理见3

5.页被重复访问的间隔: 根据应用情况不同, 但都有规律

1.Web/Cache应用: 10分钟内大部分冷页会被再次访问;

2.数据仓库任务: 大部分匿名页都是新建的, 只有少部分会再次访问.

 

因此, 通过不同层级的内存页放置, 可以提升资源利用效率

 

2 Design

TPP的框架设计本身很简单, 而且都是利用已有的技术. 围绕冷页沉降热页提升主要有四大核心内容:

 

2.1 页温度检测

论文中列举了好多种方法, 最后TPP选择的是:

1.对CXL-Memory使用NUMA Balancing, 在下次访问的时候触发一次缺页异常;

2.对本地memory使用Linux已有的LRU方法.

据说这样可以做到几乎0消耗检测到大部分热页.

 

2.2 轻量级内存回收

在本地内存中通过LRU选择了待沉降的内存页后, 不是通过swap机制, 而是通过异步的迁移任务转移到CXL内存中, 比swap快多了.

 

2.3 分配与回收解耦

不同于目前主存发现存储不足后先回收然后分配的逻辑, TPP为了避免本地内存回收跟不上分配的速度, 导致更多页被分配进CXL内存, 在本地内存中额外维护了一部分空闲页.

简单地说也就是靠LRU多迁移一点内存页到CXL内存, 给本地内存多留点了buffer, 确保未来新的内存页都优先从主存上分配.

 

2.4 从CXL内存中提升内存页

在CXL内存中使用NUMA Balancing方法.

但在设置page fault之前, 先借助LRU检查选择到的是不是不活跃的页, 如果是不活跃的则不设置. 因此避免冷页被提升.

 

3 Evaluation

经过实验, TPP的内存页访问更加集中在本地内存上, 因此访问延时也更低.

本地内存 : CXL内存 = 2 : 1 时的情况如下

本地内存 : CXL内存 = 1 : 4 时的情况如下

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0