GaussDB(DWS)memcheck版本编译及运行配置

举报
c.j 发表于 2021/05/13 22:56:59 2021/05/13
【摘要】 GaussDB(DWS)在特定场景下,运行memcheck版本可以快速发现、定位和解决内存相关问题,十分便捷。但在本地编译运行时,如果环境配置不当,会导致很多问题,本文将介绍GaussDB(DWS)memcheck版本编译及运行相关配置。编译本地编译需要设置ulimit -v unlimited选项,Cmack执行需要增加选项-DENABLE_MEMORY_CHECK=ON,例如: cmak...

GaussDB(DWS)在特定场景下,运行memcheck版本可以快速发现、定位和解决内存相关问题,十分便捷。但在本地编译运行时,如果环境配置不当,会导致很多问题,本文将介绍GaussDB(DWS)memcheck版本编译及运行相关配置。

编译

本地编译需要设置ulimit -v unlimited选项,Cmack执行需要增加选项-DENABLE_MEMORY_CHECK=ON,例如:

 cmake /data1//gaussdb/Build/Cmake/ -DENABLE_MEMORY_CHECK=ON

运行

运行配置需要较大虚拟内存,需配置ulimit -v unlimited

此外,还需要进行Asan配置:

ASAN_OPTIONS="ASAN_OPTIONS=halt_on_error=0:disable_coredump=0:unmap_shadow_on_exit=1:log_path=$HOME/memchk/asan/runlog:alloc_dealloc_mismatch=1:fast_unwind_on_fatal=1:detect_leaks=1"

各参数含义:

  # halt_on_error=0; 检测内存错误后继续运行

  # detect_leaks=1;使能内存泄露检测

  # malloc_context_size=15  : 内存错误发生时,显示的调用栈层数为15

  # log_path=/home/xos/asan.log : 内存检查问题日志存放文件路径

  # suppressions=$SUPP_FILE  : 屏蔽打印某些内存错误

配置完成后,可正常执行:

make fastcheck p=34567 

若未进行正确的选项配置,例如halt_on_error,则可能出现起集群过程中检测到内存泄露直接退出。

可能会出现提示:请配置LD_PRELOAD环境变量,或者直接core dump, 或者提示本该属于leak检查的内存映射段被其他dso占用了,都需要配置正确的LD_PRELOAD环境变量。例如:

export LD_PRELOAD=/root/local/lib64/libasan.so

想了解GuassDB(DWS)更多信息,欢迎微信搜索“GaussDB DWS”关注微信公众号,和您分享最新最全的PB级数仓黑科技,后台还可获取众多学习资料哦~

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。