zoukankan      html  css  js  c++  java
  • linux 内存管理——内核的shmall 和shmmax 参数

    1. 内核的 shmall 和 shmmax 参数
    2. 配置信号灯( semphore )的参数:

    1.内核的 shmall 和 shmmax 参数

    SHMMAX= 配置了最大的内存segment的大小 ------>这个设置的比SGA_MAX_SIZE大比较好。
    SHMMIN= 最小的内存segment的大小 
    SHMMNI= 整个系统的内存segment的总个数 
    SHMSEG= 每个进程可以使用的内存segment的最大个数
    shmmax 是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值。设置应该足够大,能在一个共享内存段下容纳下整个的 SGA , 设置的过低可能会导致需要创建多个共享内存段,这样可能导致系统性能的下降。
    至于导致系统下降的主要原因为在实例启动以及 ServerProcess 创建的时候,多个小的共享内存段可能会导致当时轻微的系统性能的降低 ( 在启动的时候需要去创建多个虚拟地址段,在进程创建的时候要让进程对多个段进行“识别”,会有一些影响 ) ,但是其他时候都不会有影响。 官方建议值: 32 位 linux 系统:可取最大值为 4GB ( 4294967296bytes ) -1byte ,即 4294967295 。建议值为多于内存的一半,所以如果是 32 为系统,一般可取值为 4294967295 。 32 位系统对 SGA 大小有限制,所以 SGA 肯定可以包含在单个共享内存段中。 64 位 linux 系统:可取的最大值为物理内存值 -1byte ,建议值为多于物理内存的一半,一般取值大于 SGA_MAX_SIZE 即可,可以取物理内存 -1byte 。 内存为 12G 时,该值为 12*1024*1024*1024-1 = 12884901887 内存为 16G 时,该值为 16*1024*1024*1024-1 = 17179869183 内存为 32G 时,该值为 32*1024*1024*1024-1 = 34359738367 内存为 64G 时,该值为 64*1024*1024*1024-1 = 68719476735 内存为 128G 时,该值为 128*1024*1024*1024-1 = 137438953471

    kernel.shmall :
    该参数控制可以使用的共享内存的总页数。 Linux 共享内存页大小为 4KB, 共享内存段的大小都是共享内存页大小的整数倍。
    一个共享内存段的最大大小是 16G ,那么需要共享内存页数是 16GB/4KB==4194304 (页),
    当内存为 12G 时, kernel.shmall = 3145728
    当内存为 16G 时, kernel.shmall = 4194304
    当内次为 32G 时, kernel.shmall = 8388608
    当内存为 64G 时, kernel.shmall = 16777216
    当内存为 128G 时, kernel.shmall = 33554432

    2.配置信号灯( semphore )的参数:

    SEMMSL= 每个semphore set里面的semphore数量 -----> 这个设置大于你的process的个数吧,否则你不得不分多个semphore set,好像有process+n之说,我忘了n是几了。
    SEMMNI= 整个系统的semphore set总数
    SEMMNS=整个系统的semphore总数
     
    shmall 是全部允许使用的共享内存大小,shmmax 是单个段允许使用的大小。这两个可以设置为内存的 90%。例如 16G 内存,16*1024*1024*1024*90% = 15461882265,shmall 的大小为 15461882265/4k(getconf PAGESIZE可得到) = 3774873。
    修改 /etc/sysctl.conf
    kernel.shmmax=15461882265
    kernel.shmall=3774873
    kernel.msgmax=65535
    kernel.msgmnb=65535
    执行 sudo sysctl -p
    可以使用 ipcs -l 看结果。ipcs -u 可以看到实际使用的情况

    Linux 共享内存限制设置

    cat /proc/sys/kernel/shmmax
    sysctl -w kernel.shmmax =1073741824 
    cat /proc/sys/kernel/shmmni
    sysctl -w kernel.shmmni=4096
    cat /proc/sys/kernel/shmall
    sysctl -w kernel.shmall=2097152
    每天进步一点点,多思考,多总结 版权声明:本文为CNblog博主「zaituzhong」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
  • 相关阅读:
    Linux中增加组和用户
    Storm重启topology,失败
    ES读写数据的工作原理
    Hive优化
    Flink提交流程和架构
    Flink中的Time与Window
    linux 中文件夹的文件按照时间倒序或者升序排列
    ElasticSearch之配置文件详解
    redis中的设置bind绑定ip不是设置白名单
    YARN调度架构中的AppMaster
  • 原文地址:https://www.cnblogs.com/tingxin/p/12606166.html
Copyright © 2011-2022 走看看