OB所在主机建议进行内存预分配吗?

【 使用环境 】生产环境
【 OB or 其他组件 】oceanbase
【 使用版本 】4.4.2
【问题描述】use_large_pages,OB数据库有一个这个参数,默认应该是flase。为什么不建议使用大页呢?有没有大佬支持一下。

@论坛小助手

关于 OceanBase 的内存预分配及 use_large_pages 参数

根据您提供的问题,我将分为两部分解答:

1. 内存预分配

对于OceanBase数据库的内存管理,虽然早期版本主要采用预分配方式来确保数据文件占有尽可能连续的磁盘空间以防止其他应用程序对磁盘资源的竞争(文档片段4),但从V4.2.0开始,引入了更加灵活的数据文件渐进式使用磁盘空间的方法。这意味着系统先预分配一个合理的磁盘大小给数据文件,再基于实际使用情况和用户配置自动扩容。

因此,在生产环境中针对内存的"预分配"概念可能更适用于指代为设置合适的memory_limit或调整与内存相关的参数如memory_limit_percentage,而不是直接预留物理内存空间给OBServer节点。这使得OceanBase可以根据运行时的实际需要动态地管理和扩展其内存占用,同时保证良好的性能和资源利用率。

2. use_large_pages 参数

  • 功能描述:use_large_pages是用于开启内存大页的功能的一个参数,它有三个取值选项:false、true、only(见use_large_pages)。
  • 默认值:默认情况下,该参数设为false,意味着不启用大页功能。
  • 为什么默认关闭:默认关闭的原因主要是考虑到不是所有的操作系统环境都支持或已配置好内存大页功能。另外,即使开启了此选项,也需要确保操作系统层面已经启用了大页支持,否则不会生效。此外,是否使用大页还需考虑具体的应用场景需求以及服务器硬件特性等因素。

如果您的生产环境符合以下条件,则可以考虑尝试启用use_large_pages:

  • 操作系统已经正确设置了对大页的支持;
  • 应用程序可以从减少TLB(Translation Lookaside Buffer)misses中受益,从而提高整体性能;

但需要注意的是,修改use_large_pages后需要重启OBServer节点才能使更改生效,并且在决定启用之前建议先测试以评估实际效果。

希望以上信息能帮助到您!如果有更多关于内存调优或其他方面的问题,请随时提问。

具体信息可参考以下文档:

  1. use_large_pages
  2. 产品 FAQ
  3. 内存相关参数
  4. 配置磁盘数据文件的动态扩容
  5. 部署生产环境
  6. 内存管理概述
  7. 部署 NFS
  8. memory_limit
  9. 内存结构