love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL/PostgreSQL数据恢复、性能优化、迁移升级、紧急救援等服务

用普通内存模拟Persistent memory并测试Oracle 21c Persistent memory database

Oracle 21c开始支持Persistent memory;由于没有Persistent memory device,我在想能否模拟一下呢。比如用我们的普通内存来模拟Persistent 内存。首先看下目前的虚拟机情况,我这里特意把虚拟机内存调整为6GB。

这里需要说明一点 的是,Linux 对于Persistent memory device的支持,是对内核版本有要求的,从查询的相关文档来看,应该是Linux 7.6+版本;即内核版本不低于4.1;我这里选择的是Oracle Linux 8.4,比较新。 另外可以通过下面的方式来确认一下,操作系统是否支持Persistent memory:

从输出来看,我这里的虚拟机环境默认就支持了。另外可能还需要安装相关的包:

yum install librpmem librpmem-devel
yum install daxio
yum install ndctl libfabric

接下来开始进行相关配置调整:

从dmesg的信息输出来看,我这里可用的内存范围为4GB-8GB。 接下来修改一下grub引导文件。

在grub文件中加入memmap=4G!8GB即可。 注意,这里要更新grub配置后,才重启操作系统,否则无法识别。

重启之后,我们来看下是否能看到Persistent device。

这里可以发现,已经出现了pmem0/pmem1 disk了。也就是我们模拟的persistent device,将内存模拟成persistent memory device。

接下来将上述2个盘进行格式化并挂载文件系统(注意只能是ext4或xfs才能支持dax)。

 

接下来创建Pmem filestore试试看;

看来对于该功能的使用,Oracle做了相关的限制,通常来讲是通过隐含参数控制,不过这里我调整了如下2个参数,发现均不行:

从Oracle Mos文档来看,确实有关于Pmemsistent memory相关的bug,而且都出现在oracle exadata上,由此可见Oracle Exadata是支持该功能的。

Bug 29648928 – pga heap rather than ipc heap used for coalesced writes to exadata pmemlog (Doc ID 29648928.8)

Bug 31331038 – ORA-600 error in ADG SYNC mode on Exadata with PMEMlog (Doc ID 31331038.8)

Oracle Exadata Database Machine Setup/Configuration Best Practices (Doc ID 1274318.1)

 

抽空再研究研究该问题;感觉还是蛮有意思的;从Oracle官方的测试数据来看,Persistent memory设备的性能比NVME SSD的性能要高10-20倍。

用普通内存模拟Persistent memory并测试Oracle 21c Persistent memory database插图

Leave a Reply

You must be logged in to post a comment.