Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >通过Linux设备映射器使用持久内存设备

通过Linux设备映射器使用持久内存设备

作者头像
yzsDBA
发布于 2020-11-23 03:04:45
发布于 2020-11-23 03:04:45
1.2K0
举报

通过Linux设备映射器使用持久内存设备

IO Alignment Considerations

传统的存储设备例如HDD,SSD,nvme,SAN LUNS等以blocks为单位提供存储功能。Block以字节为单位的可寻址存储单元。传统的硬盘的block大小是512字节。Newer设备通常是4K或者8K,但也可以选择逻辑/模拟的512字节的block。

持久内存设备可以通过虚拟内存系统访问,因此IO可以使用系统页大小进行对齐。位于CPU上的内存管理单元(MMU)决定可能的页面大小。Linux支持两种页大小:

Ø 默认页大小,通常4KB。Linux通常将其作为页表条目。

Ø 大页:需要内核支持配置CONFIG_HUBETLB_PAGE和CONFIG_HUGETLBFS。通常称为页面中间目录(PMD),大页大小通常为2MB

页面大小是内存使用和速度之间的折中:

Ø 大页造成空间浪费。

Ø 大内存容量下小页:需要大量的页表条目,从而需要更大内核内存保持页表

Ø 小页可能需要更多时间进行页表遍历。尤其是TLB未命中计数较高情况下。

DDR和持久内存模块之间的容量差异相当大,由于上述原因,内存为TB级的系统上使用较小页面可能会对性能带来负面影响。

使用getconf命令获取系统默认页大小,下面页面大小是4KB:

$ getconf PAGE_SIZE

4096

或:

$ getconf PAGESIZE

4096

通过cat /proc/meminfo|grep -i hugepage验证系统是否支持大页:

.....

HugePages_Total: uuu

HugePages_Free: vvv

HugePages_Rsvd: www

HugePages_Surp: xxx

Hugepagesize: yyy kB

Hugetlb: zzz kB

.....

根据处理器不同,x86_64架构下至少有两种大页大小:2M和1G。如果CPU支持2M,那么会有PSE cpuinfo flag,而1G的有PDPE1GB flag。/proc/cpuinfo显示这两种标签的设置。如果这些命令返回非空字符串,那么支持2M:

$ grep pse /proc/cpuinfo | uniq

flags : [...] pse [...]

如果下面命令返回非空字符串,支持1G:

$ grep pdpe1gb /proc/cpuinfo | uniq

flags : [...] pdpe1gb [...]

Verifying IO Alignment

需满足下面条件,DAX文件系统才能支持2M大页:

Ø mmap()至少映射2M

Ø 文件系统块分配的大小至少2M

Ø 文件系统块分配必须与mmap具有相同的对齐方式

原文

https://pmem.io/2018/05/15/using_persistent_memory_devices_with_the_linux_device_mapper.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-11-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yanzongshuaiDBA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
如何使用 BPF 监控 Linux 内存情况:Linux 内存调优之 BPF 内存监控分析
动态跟踪点: kprobes 和 uprobes,类似于内核态和用户态的方法埋点,比较灵活,可以任意监控
山河已无恙
2025/07/08
910
如何使用 BPF 监控 Linux 内存情况:Linux 内存调优之 BPF 内存监控分析
百度DPDK性能压测工具dperf系列-3 使用dperf的编译和部署
前面章节我们简单的介绍了dperf的相关基础概念,本章节我们将要讲述如何编译和使用dperf这款DPDK的性能压测工具。
通信行业搬砖工
2023/03/30
2.9K0
百度DPDK性能压测工具dperf系列-3 使用dperf的编译和部署
DPDK巨页地址管理/Linux内核内存管理/内存映射/pagemap/rdma内存/注册
PBLE: Physical Buffer List Entry 物理缓冲区列表条目
晓兵
2024/03/12
1.2K0
DPDK巨页地址管理/Linux内核内存管理/内存映射/pagemap/rdma内存/注册
从内核世界透视 mmap 内存映射的本质(原理篇)
之前有不少读者给笔者留言,希望笔者写一篇文章介绍下 mmap 内存映射相关的知识体系,之所以迟迟没有动笔,是因为 mmap 这个系统调用看上去简单,实际上并不简单,可以说是非常复杂的一个系统调用。
bin的技术小屋
2023/10/30
5.7K4
从内核世界透视 mmap 内存映射的本质(原理篇)
认识 Linux 内存构成:Linux 内存调优之页表、TLB、缺页异常、大页认知
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
山河已无恙
2025/04/26
4800
认识 Linux 内存构成:Linux 内存调优之页表、TLB、缺页异常、大页认知
bihash默认使用main-heap内存
前段时间在vpp交流群讨论bihash在默认条件下初始化的时候使用的是系统内存,还是大页内存。讨论也修正我的知识库,对bihash的理解也还停留在20.09版本之前。
dpdk-vpp源码解读
2023/03/07
9981
bihash默认使用main-heap内存
运维人员常用的Linux命令总结
cpu相关信息存放在/proc/cpuinfo目录中,所以要查看cpu信息就可以用以下命令:
职场亮哥
2020/10/10
1.8K0
运维人员常用的Linux命令总结
Linux|大内存页(HugePage)的三三两两
最近有同事问了几个关于大内存页(HugePage)的问题,就顺便复习并拓展的看了下相关的内容,根据自己的理解做个简单总结,如有纰漏欢迎指正。
琉璃康康
2022/04/19
3.9K0
Linux|大内存页(HugePage)的三三两两
Linux 内存调优之 BPF 分析用户态 mmap 大内存分配
brk 部分是用于存储用户态程序数据的小内存分配,主要依赖brk调用实现。brk 系统调用通过移动堆顶指针来扩展或收缩堆空间,从而实现小块内存的分配与释放 。它适用于分配内存量较小、频繁申请和释放的场景,
山河已无恙
2025/06/25
820
Linux 内存调优之 BPF 分析用户态 mmap 大内存分配
Linux申请大页内存(mmap)
---- 1.为什么要使用大页内存   了解操作系统内存管理的人一般都知道操作系统对内存采用多级页表和分页进行管理,操作系统每个页默认大小为4KB。如果进程使用的内存过大,比如1GB,这样会在页表中占用 1GB / 4KB = 262144个页表项,而系统TLB可以容纳的页表项远小于这个数量。当多个内存密集型应用访问内存时,会造成过多的TLB未命中,因此在特定情况下会需要减少未命中次数,一个可行的办法就是增大每个页的尺寸。操作系统默认支持的大页是2MB,当使用1GB内存时,在页表中将占用 1GB / 2MB
昊楠Hacking
2018/03/08
12.3K0
Linux 透明大页 THP 和标准大页 HP
在 Linux 中大页分为两种: Huge pages (标准大页) 和 Transparent Huge pages(透明大页)。
JiekeXu之路
2022/05/17
3.5K0
Linux 透明大页 THP 和标准大页 HP
内存虚拟化
除了 CPU 虚拟化,另一个关键是内存虚拟化,通过内存虚拟化共享物理系统内存,动态分配给虚拟机。虚拟机的内存虚拟化很象现在的操作系统支持的虚拟内存方式,应用程序看到邻近的内存地址空间,这个地址空间无需和下面的物理机器内存直接对应,操作系统保持着虚拟页到物理页的映射。
后端云
2018/10/24
2K0
内存虚拟化
性能优化:Linux环境下合理配置大内存页
熊军(老熊) 云和恩墨西区总经理 Oracle ACED,ACOUG核心会员 PC Server发展到今天,在性能方面有着长足的进步。64位的CPU在数年前都已经进入到寻常的家用PC之中,更别说是更高端的PC Server;在Intel和AMD两大处理器巨头的努力下,x86 CPU在处理能力上不断提升;同时随着制造工艺的发展,在PC Server上能够安装的内存容量也越来越大,现在随处可见数十G内存的PC Server。正是硬件的发展,使得PC Server的处理能力越来越强大,性能越来越高。而在稳定性
数据和云
2018/03/06
5.3K0
性能优化:Linux环境下合理配置大内存页
Linux内存占用常用的几个分析方法,你确定都知道?
系统内存是硬件系统中必不可少的部分,定时查看系统内存资源运行情况,可以帮助我们及时发现内存资源是否存在异常占用,确保业务的稳定运行。
lyb-geek
2022/11/18
4.1K0
Linux内存占用常用的几个分析方法,你确定都知道?
VPP HugePages
以前经常遇到2C3G的vmware续集上环境上安装上vpp后,能直接运行,而每次当系统重启后总是报内存不足的问题。当把系统内存调整到4G后,就能正常运行了。一直也不清楚原因。最近工作中遇到一个问题在2c2g的环境上跑vpp,一段时间后,总是报内存不足。后来查询发现hugepage内存大小是1G,但是只使用了不到三分之一的大页内存。
dpdk-vpp源码解读
2023/03/07
1.7K4
VPP HugePages
Hacker基础之Linux篇:基础Linux命令十六
今天我们来学习几个小知识,不一定是Linux的命令,都是用于查看Linux的系统信息的
用户1631416
2018/07/25
1.1K0
centOS7下实践查询版本/CPU/内存/硬盘容量等硬件信息
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
全栈程序员站长
2022/09/13
3.9K0
MySQL innodb_page_size
墨墨导读:Page是MySQL Innodb存储的最基本结构,也是Innodb磁盘管理的最小单位,了解page的一些特性,可以更容易理解MySQL。
数据和云
2020/12/08
2.4K0
MySQL innodb_page_size
Linux 目录结构学习与简析 Part2
processor : 0 #每个逻辑cpu 唯一编号0-N,编号到N则说明有N个逻辑CPU
授客
2019/09/11
5790
系统硬件信息查看命令一览表
描述: 本章主要针对于Linux操作系统中利用以下命令对各个硬件资源信息查看与管理;
全栈工程师修炼指南
2022/09/28
6600
推荐阅读
相关推荐
如何使用 BPF 监控 Linux 内存情况:Linux 内存调优之 BPF 内存监控分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档