关闭NUMA

作者: 飞翔的Tallgeese | 来源:发表于2018-11-20 15:12 被阅读2次

    今天朋友告知他的库因为numa的原因导致OOM了,趁着这个话题就来操作一把测试库的numa。


    关于swap(摘自网络)

    swap是如何产生的

    swap指的是一个交换分区或文件,主要是在内存使用存在压力时,触发内存回收,这时可能会将部分内存的数据交换到swap空间

    内存回收的机制

    ①Linux内核使用cache对部分文件进行缓存,提升文件读写效率。所以 引入了kswapd进程进行周期性检查,保证剩余内存空间

    ②当内存分配没有足够的空间时,直接内存回收

    内存回收如何实现

    这部分实现非常复杂,简单来说,内存回收操作主要针对内存的文件页和匿名页,这些页都通过LRU链表来管理。

    其中anon的匿名页内存主要回收手段是swap,文件页释放方式是写回和清空


    关于swappiness(摘自网络)

    swappiness的值的大小对如何使用swap分区是有着很大的联系的。swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。linux的基本默认设置为60

    简单地说这个参数定义了系统对swap的使用倾向,默认值为60,值越大表示越倾向于使用swap。可以设为0,这样做并不会禁止对swap的使用,只是最大限度地降低了使用swap的可能性


    关于numa(摘自网络)

    numa主要是和swap有关

    numactl --hardware

    当发现numa_miss数值比较高时,说明需要对分配策略进行调整。例如将指定进程关联绑定到指定的CPU上,从而提高内存命中率


    操作部分

    关闭numa

    在操作系统中关闭,可以直接在/etc/grub.conf的kernel行最后添加numa=off,如下所示:

      kernel /vmlinuz-2.6.32-220.el6.x86_64 ro root=/dev/mapper/VolGroup-root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=VolGroup/root rd_NO_MD quiet SYSFONT=latarcyrheb-sun16 rhgb crashkernel=auto rd_LVM_LV=VolGroup/swap rhgb crashkernel=auto quiet KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM  numa=off

    此外在mysql版本5.6.27/5.7.8以后,可以在cnf里配置innodb_numa_interleave参数,将其设置为ON


    查询当前swappiness的设置值

    [root@zjk ~]# cat /proc/sys/vm/swappiness

    60

    查询当前swap使用情况

    清空swap(执行swapoff -a;swapon -a)

    重新设置swappiness值

    vim /etc/sysctl.conf;  设置vm.swappiness=0

    使该设置生效

    sysctl -p

    来看一下更改前后vmstat中swap的变化

    改完swappiness之后

    注意:在CentOS7中最好不要把swappiness设置成0,会有问题,设置成5-10即可

    相关文章

      网友评论

        本文标题:关闭NUMA

        本文链接:https://www.haomeiwen.com/subject/decxqqtx.html