NUMA是多核心CPU架构中的一种,其全称为Non-Uniform MemoryAccess,简单来说就是在多核心CPU中,机器的物理内存是分配给各个核的。

在NUMA架构的机子上启动mongodb进程需要特别注意。我们先以正常方式启动mongodb,然后登陆

/root/mongodb/bin/mongod --dbpath=/data/db/ --fork --logpath=/data/logs/db.log --directoryperdb

./bin/mongo

你会看到类似下面的警告信息:

MongoDB shell version: 2.4.8
connecting to: test
Server has startup warnings: 
Wed Dec 25 22:10:01.043 [initandlisten] 
Wed Dec 25 22:10:01.043 [initandlisten] ** WARNING: You are running on a NUMA machine.
Wed Dec 25 22:10:01.043 [initandlisten] **          We suggest launching mongod like this to avoid performance problems:
Wed Dec 25 22:10:01.043 [initandlisten] **              numactl --interleave=all mongod [other options]
Wed Dec 25 22:10:01.043 [initandlisten]

按照提示在启动命令前加上 numactl --interleave选项

numactl --interleave=all /root/mongodb/bin/mongod --dbpath=/data/db/ --fork --logpath=/data/logs/db.log --directoryperdb

这样登陆mongodb就不会有警告信息了。

以上只是就问题解决问题,至于在NUMA架构的CPU上非正常启动mongodb会带来什么样的性能影响还没做验证,网上可以搜到一些别人使用的经验。官方的文档(参看MongoDB Documentation, Release 2.4.1 12.8.1 MongoDB on NUMA Hardware)中有如下说明:

简单做下解释,NUMA架构中每个核访问分配给自己的内存会比分配给其他核内存要快,有下面几种访问控制策略:

  • 缺省(default):总是在本地节点分配(分配在当前进程运行的节点上);

  • 绑定(bind):强制分配到指定节点上;

  • 交叉(interleave):在所有节点或者指定的节点上交织分配;

  • 优先(preferred):在指定节点上分配,失败则在其他节点上分配。

但是目前mongodb在这种架构下工作的不是很好,--interleave=all就是禁用NUMA为每个核单独分配内存的机制。

转载于:https://blog.51cto.com/conniewu/1582955

MongoDB的NUMA CPU架构问题相关推荐

  1. 【大话存储】多CPU架构变迁, SMP,NUMA,MPP

    多CPU架构演进 对称多处理器结构:(SMP,Symmetric Multi-Processor) 服务器最开始的时候是单CPU,然后才进化到了双CPU甚至多CPU的SMP架构.所谓SMP架构指的是多 ...

  2. Firefox 的User Agent 将移除 CPU 架构信息

    Mozilla 计划从 Firefox 的 User Agent(用户代理)和几个支持的 API 中移除 CPU 架构信息,以减少 Firefox 用户的"数字指纹".Web 浏览 ...

  3. (转)从CPU架构和技术的演变看GPU未来发展

    泡泡网显卡频道5月28日 自从AMD提出Fusion(融聚)的概念.NVIDIA加大力度推广GPU通用计算.Intel率先将CPU和GPU整合在一起之后,大家就会发现CPU和GPU从没如此亲密无间过, ...

  4. bad cpu type in executable_【简讯】Intel将每5年重新开发一次CPU架构;华为EMUI 11曝光…...

    Intel将每5年重新开发一次CPU架构 日前,Intel TSCG高级副总裁.硅工程总经理.CPU大牛Jim Keller在视频采访中谈到了CPU研发的问题,之前Intel虽然有过Tick-Tock ...

  5. 如何查询当前手机的cpu架构,so库导入工程又出异常了?

    如何查询当前手机的cpu架构,so库导入工程又出异常了? 参考文章: (1)如何查询当前手机的cpu架构,so库导入工程又出异常了? (2)https://www.cnblogs.com/woaixi ...

  6. 【错误记录】Visual Studio 中配置 NDK 头文件路径 ( NDK 的三个头文件路径 | 与 CPU 架构相关 asm 头文件路径选择 )

    文章目录 一.报错信息 二.解决方案 1.NDK 的三个头文件路径 2.与 CPU 架构相关 asm 头文件路径选择 一.报错信息 参考 [Android 逆向]Android 进程注入工具开发 ( ...

  7. 【Android 逆向】ELF 文件格式 ( ELF 文件类型 | ELF 文件对应 CPU 架构 | ELF 目标文件版本 | 可执行程序起始地址 )

    文章目录 一.ELF 文件类型 ( 动态库文件 ) 二.ELF 文件对应 CPU 架构 三.ELF 目标文件版本 四.可执行程序起始地址 一.ELF 文件类型 ( 动态库文件 ) ELF 文件头 第 ...

  8. 【错误记录】Android Studio 导入外部 so 动态库报错 ( java.lang.UnsatisfiedLinkError | 指定 APK 打包动态库的 CPU 架构 )

    文章目录 一.报错信息 二.解决方案 ( 指定 APK 打包动态库的 CPU 架构 ) 一.报错信息 外部引用 so 动态库 , 如果只有一个 armeabi-v7a 的动态库 , 那么如果在 arm ...

  9. 【错误记录】NDK 报错 java.lang.UnsatisfiedLinkError 的一种处理方案 ( 主应用与依赖库 Module 的 CPU 架构配置不匹配导致 )

    文章目录 一.问题描述 二.问题排查 三.解决方案 一.问题描述 NDK 开发 , 在调用 JNI 对应 Java 类时 , 静态代码块中 System.loadLibrary 语句调用时 , 报如下 ...

最新文章

  1. Mysql 安装及实践(学习笔记二)
  2. 【git学习四】git基础之git为项目打标签
  3. 《精通Hadoop》:第 1 章 Hadoop 2.X
  4. java gui编程:swing创建窗体和进度条代码示例
  5. 【转】杀人后一个孩子的做法…不看你会后悔的…
  6. SAP UI5应用访问OData metadata的url和Destination
  7. 《深入理解java虚拟机》第2章 Java内存区域与内存溢出异常
  8. [C++] Value Categories
  9. 设置hive的执行引擎_0506-如何将Hue4.0版本中默认执行引擎设置为Hive而非Impala
  10. cas client 更新ticket_有人知道 cas单点登录系统是怎么样取得proxyticket的?
  11. Node.js IP 库引擎 lib-qqwry v1.3.0 发布,支持命令行下使用
  12. poi解析excel(处理单元格公式)
  13. 那个直播软件有软件测试课程,资讯详情-直播软件有哪些测试方法-柠檬班-自动化测试-软件测试培训-自学官网...
  14. autocad.net通过支持文件搜索路径查找文件
  15. wav音频文件格式解析
  16. 加油吧,707!——立体几何篇
  17. canvas绘制地球围绕太阳转、月球围绕地球转
  18. I2C接口控制器之协议解析
  19. Git报错: Failed to connect to github.com port 443 解决方案
  20. 划艇:dp/组合数/区间离散化

热门文章

  1. ZServer4D开源项目
  2. HTML 常用标签全称
  3. 又一次内存分配失败(关于overcommit_memory)
  4. jsp的session介绍 (转)
  5. input 的read only 和 disable的区别
  6. BCH的压力测试其实已经开始了
  7. php-cgi和php-fpm,Windows环境下解决Nginx+php并发访问阻塞问题。
  8. Artificial Intelligence Yourself
  9. iOS swift2.3 迁移到3.0 遇到的一些问题
  10. 网络安全系列之二十四 XSS跨站脚本攻击2