memory调优

overcommit_memory临时设定为1,请运行:
# echo 1 > /proc/sys/vm/overcommit_memory
overcommit_memory
规定决定是否接受超大内存请求的条件。这个参数有三个可能的值:
0:默认设置,执行启发式内存过量使用,并拒绝明显无效的请求。智能但是不够精确
1:不允许过量使用,不使用swap,有最高的内存超载的可能性,可以增强大量内存任务的性能
2:可以使用swap:swap + ram*overcommit_radio 4G(swap) + 2G(ram) * 0.5 = 5G

overcommit_ratio:将overcommit_memory设定为2时指定所考虑的物理RAM 比例。默认为50
64g 4g 2 可用物理内存为 4G + 64*0.5 —–〉overcommit_radio —->0.9 0.95

max_map_count:规定某个进程可能使用的最大内存映射区域。在大多数情况下,默认值65530就很合适。如果您的程序需要映射比这个文件数更多的文件可增大这个值
nr_hugegapes:
允许运行在系统上使用的超大页数,默认为0 不使用,改为正数后启用
# cat /proc/meminfo
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB

进程叫内存交流机制:
消息队列MessageQueue
共享存储SharedMemory
信号量Semaphore
msgmax:单个消息队列中,消息的最大允许大小默认:65536 字节 2的6次方k 64k
msgmnb:单个消息队列中的消息的大小,极端情况一个队列就一个消息 默认65536
msgmni:消息队列的数量64 位架构机器的默认值为1985;32位架构机器的默认值为1736 orange 多进程模型 通常需要调得非常大
shmall:每个片能有多大。64 位架构机器的默认值为4294967296 4G;32 位架构机器的默认值为268435456 2G -每个片最大能有多大
shmmax:共享内存总大小 64位68719476736 32位:4294967295 -所有片一共能有多大
shmmni:最多可以有多少片。在64 位和32 位架构机器中的默认值都是4096 -片数量
threads-max:内核有时候被进程请求创建多个线程,一批可以创建多少个

与容量相关的文件系统可调参数以下参数位于proc 文件系统的/proc/sys/fs/目录中
file-max:当前操作系统允许打开的最大文件数
aio-max-nr:异步io的事件数一个异步io需要一个,使用像nginx对异步io支持非常好的应用65535默认值有可能会被突破

Out-of-Memory Kill 可调参数

调整虚拟内存:
swappiness:0-100 数值越高使用swap内存倾向性越高,默认60偏高
min_free_kbytes:保证系统间可用的最小KB 数。太高太低都不好,大多数情况无需调整,太低很容易开始启动杀进程程序
dirty_ratio:当脏内存达到内存的比率多少时启动pdflush 一块硬盘启动一个 默认20% 单个进程
# cat /proc/sys/vm/dirty_ratio
20

dirty_background_ratio:所有内存当脏内存达到内存的比率多少时启动pdflush 一块硬盘启动一个 默认10% 整个物理内存
都可以调大点

drop_caches:丢弃缓存非脏页数据
1、释放所有页缓冲内存
2、slab缓存较小的内核数据 把页空间分割得肯定,比如inode
slab避免内存碎片:
避免内存外碎片:buddy system 页面外面的小碎片
避免内存内碎片:slab system 页面内部的碎片

3、释放页缓存 和 slab缓存
通常情况都是释放页缓存
# echo 1 > /proc/sys/vm/drop_caches
# free -m
total used free shared buff/cache available
Mem: 31881 2342 29237 17 301 29140
Swap: 5115 0 5115

查看slab:
# cat /proc/slabinfo
slabinfo – version: 2.1

net.ipv4.ip_forward = 1
vm.overcommit_memory = 2
vm.overcommit_ratio = 95
vm.max_map_count = 65535
vm.nr_hugepages = 1000
kernel.msgmax = 65536
kernel.msgmnb = 65536
kernel.msgmni = 1985
kernel.shmall = 4294967296
kernel.shmmax = 68719476736
kernel.shmmni = 4096
kernel.threads-max = 65535
fs.file-max = 3233372
fs.aio-max-nr = 65535
vm.swappiness = 20
vm.min_free_kbytes = 90112
vm.dirty_ratio = 50
vm.dirty_background_ratio = 30

# cat /proc/buddyinfo
Node 0, zone DMA 1 1 1 0 1 1 1 0 1 1 3
Node 0, zone DMA32 70 74 106 242 360 260 220 189 144 91 250
Node 0, zone Normal 289 108 330 344 1847 1570 1174 956 754 618 2419
Node 1, zone Normal 496 952 756 524 364 242 333 239 198 180 3484

 

 

 

 

 

你可能感兴趣的:(memory调优)