NUMA的概念:

================================================================================================

现在的机器上都是有多个CPU和多个内存块的。以前我们都是将内存块看成是一大块内存,所有CPU到这个共享内存的访问消息是一样的。这就是之前普遍使用的SMP模型。但是随着处理器的增加,共享内存可能会导致内存访问冲突越来越厉害,且如果内存访问达到瓶颈的时候,性能就不能随之增加。NUMA(Non-Uniform

Memory

Access)就是这样的环境下引入的一个模型。比如一台机器是有2个处理器,有4个内存块。我们将1个处理器和两个内存块合起来,称为一个NUMA

node,这样这个机器就会有两个NUMA node。在物理分布上,NUMA

node的处理器和内存块的物理距离更小,因此访问也更快。比如这台机器会分左右两个处理器(cpu1,

cpu2),在每个处理器两边放两个内存块(memory1.1, memory1.2,

memory2.1,memory2.2),这样NUMA

node1的cpu1访问memory1.1和memory1.2就比访问memory2.1和memory2.2更快。所以使用NUMA的模式如果能尽量保证本node内的CPU只访问本node内的内存块,那这样的效率就是最高的。

在运行程序的时候使用numactl

-m和-physcpubind就能制定将这个程序运行在哪个cpu和哪个memory中。玩转cpu-topology

给了一个表格,当程序只使用一个node资源和使用多个node资源的比较表(差不多是38s与28s的差距)。所以限定程序在numa

node中运行是有实际意义的。

但是呢,话又说回来了,制定numa就一定好吗?--numa的陷阱。SWAP的罪与罚文章就说到了一个numa的陷阱的问题。现象是当你的服务器还有内存的时候,发现它已经在开始使用swap了,甚至已经导致机器出现停滞的现象。这个就有可能是由于numa的限制,如果一个进程限制它只能使用自己的numa节点的内存,那么当自身numa

node内存使用光之后,就不会去使用其他numa

node的内存了,会开始使用swap,甚至更糟的情况,机器没有设置swap的时候,可能会直接死机!所以你可以使用numactl

--interleave=all来取消numa node的限制。

综上所述得出的结论就是,根据具体业务决定NUMA的使用。

如果你的程序是会占用大规模内存的,你大多应该选择关闭numa

node的限制。因为这个时候你的程序很有几率会碰到numa陷阱。

另外,如果你的程序并不占用大内存,而是要求更快的程序运行时间。你大多应该选择限制只访问本numa

node的方法来进行处理。

以上摘自 http://www.cnblogs.com/yjf512/archive/2012/12/10/2811823.html

启用numa后的配置目录是

/sys/device/nodes/

[root@Pnode]# cat

node0/cpulist

0-9,30-39  #

cpu0-9,30-39 组成node0

[root@node]# cat node1/cpulist

10-19

[root@node]# cat node2/cpulist

20-29

[root@node]# pwd

/sys/devices/system/node

应用在mysql上:

================================================================================================

如果是单机跑一个Mysql实例,可以把numa关掉:

修改/boot/grub/menu.lst,在kernel行的后面加 numa=off

如果是单机跑多实例mysql,可以按numa

node划分不同的node给具体的mysql实例,以控制内存总量的使用。

方法是

首先把上面的numa=off去掉

其次查看numa node情况:

可以看到有3个node,0,1,2,于是比如把node 0,1分给mysql instance 1;2 分给另外的mysql

instance

具体的分配办法是:在mysqld_safe的

“cmd="`mysqld_ld_preload_text`$NOHUP_NICENESS"”后加上

cmd="/usr/bin/numactl --interleave=0,1 $cmd"

另外的mysql实例的mysqld_safe添加

cmd="/usr/bin/numactl

--interleave=2 $cmd"

注意,--interleave=all可以另mysql在所有node间轮转。到底是使用具体id,还是用all,这就要是系统内存量来决定.如果内存量与DB相比够大,干脆指定node给数据库,否则还是all保险。

一个perl分析numa_maps的脚本

================================================================================================

numa-analyze.pl摘自 http://sohulinux.blog.sohu.com/181968823.html

他把/proc/processid/numa_maps的内容整理输出:

监控numa状态的脚本:

#!/bin/sh

umask 027

logfile=$(cd $(dirname $0);pwd)/log/numastat_out.log

NS=`which numastat`

NC=`which numactl`

echo "############ `date` ############" >>

$logfile

$NS >> $logfile

$NC --hardware >> $logfile

echo "######################################################"

>> $logfile

可以放到crontab里定期执行

l3asnumanode 设置_numa设置与mysql相关推荐

  1. linux 下 设置 MySQL8 表名大小写不敏感方法,解决设置后无法启动 MySQL 服务的问题

    linux 下 设置 MySQL8 表名大小写不敏感方法,解决设置后无法启动 MySQL 服务的问题 参考文章: (1)linux 下 设置 MySQL8 表名大小写不敏感方法,解决设置后无法启动 M ...

  2. 设置允许远程连接MySQL (Ubuntu为例)

    设置允许远程连接MySQL (Ubuntu为例) MySQL默认配置是不允许远程连接,为了安全! 然而我需要这么做; 开始改配置; #1 设置用户权限 Type 'help;' or '\h' for ...

  3. mysql zerofill设置方法_在MySQL中使用ZEROFILL设置自定义自动增量

    让我们首先创建一个表.这里.我们使用ZEROFILL和AUTO_INCREMENT设置了UserId列mysql> create table DemoTable1831 ( UserId int ...

  4. mysql怎样设置默认,怎么修改mysql设置默认值

    环境描述: MySQL 5.7.13 问题描述: 建表的时候,users_info表的role_id字段没有默认值,后期发现注册的时候,需要提供给用户一个默认角色,也就是给role_id字段一个默认值 ...

  5. mysql怎么查看字符集设置_mysql 设置查看字符集

    一.查看字符集 1.查看MYSQL数据库服务器和数据库字符集 方法一:show variables like '%character%'; 方法二:show variables like 'colla ...

  6. gm把mysql连接设置密码_完整的GM教程------------各种设置 (包括设置经验等等)

    1.修改游戏初始设置 进入D:\mirserver\Mir200 打开!setup.txt 找到: TestLevel=35(这里是设置初始等级的地方.也就是刚进入游戏的等级) TestGold=20 ...

  7. svn外网虚拟服务器设置,svn虚拟服务器设置路由器设置

    svn虚拟服务器设置路由器设置 内容精选 换一换 上期我们讲到LoaRunner性能测试场景设计实践之集合点,这期我们讲的是LoaRunner性能测试场景设计实践之IP欺骗技术. IP欺骗技术 在场景 ...

  8. 税控盘查看服务器设置的网站,税控盘系统参数设置服务器设置

    税控盘系统参数设置服务器设置 内容精选 换一换 如果您已经创建了一台Linux云服务器,并根据业务需要进行了自定义配置(如安装软件.部署应用环境等),您可以为更新后的云服务器创建系统盘镜像.使用该镜像 ...

  9. 设置NotePad++设置不打开上次关闭的文件

    notepad++是一个很好的记事本工具,但是默认会记录上次打开时未关闭的文件,但是实际上用起来并不方便, 可以按照下面的方式去除,notepad++版本:v6.6.2,os:win7 64位 按照以 ...

  10. Internet设置-连接选项卡-局域网(LAN)设置 某些设置由系统管理员进行管理

    今天突然发现ss不能使用了.经过一系列排查发现 Internet设置->连接选项卡->局域网(LAN)设置 某些设置由系统管理员进行管理,如上图. 修改注册表值HKEY_LOCAL_MAC ...

最新文章

  1. 2019年7月份,阿里最新Java高频面试真题汇总,仅供参考
  2. Java设计模式:工厂模式
  3. navicat premium 链接postgresql 无法加载表_PostgreSQL 每周新闻 2020311
  4. 将Amazon Cognito与单页面应用程序(Vue.js)集成
  5. centos8安装文件服务器,centos8 服务器环境部署
  6. VC2013 ArcGIS Engine 10.0开发环境搭建
  7. 2021 王道考研 操作系统+习题讲解
  8. MATLAB热障涂层成像,考虑孔隙细观特征的热障涂层脱粘缺陷超声检测数值模拟
  9. MATLAB中imcrop函数
  10. 计算机原始时代到现在著名的黑客
  11. python的拼音_python 中文分词和拼音首字母
  12. 数理方程——达朗贝尔公式
  13. VB 对数据库access的模糊查询代码
  14. 不用网的cmd小游戏来啦
  15. 关于登录PL/SQL时出现的错误:error while tring to retrieve text for error ORA-12541
  16. 女孩子付钱用计算机,“让女生付钱太没面子了,你转账给我吧。”
  17. 用好【shareinstall】 App推广转化率提升80% so easy!
  18. 从奥运门票系统瘫痪到家乐福踩踏事件看软件设计中业务模型的处理
  19. 诸葛亮写给后代的一封信,只有86个字
  20. 单代号网络图计算例题_钣金展开计算210例节省放样场地,不理解公式也能完成展开计算!...

热门文章

  1. MapControl与PageLayoutControl联动
  2. JVM初识之虚拟机内存结构
  3. 常用的一些集合工具类
  4. JavaScript核心语法——变量与常量
  5. windows——JDK下载与安装及环境变量配置
  6. 重零开始学前端-基础(1) 什么是变量
  7. 使用web.xml控制Web应用的行为
  8. Android学习笔记25-画廊控件Gallery的使用
  9. c#对PL/SQL查询结果列复制的结果生成指定格式
  10. 公共代码之密码加解密