调优之内存调优-容量调节




Memory 容量调节

/etc/sysctl.conf

与容量相关的内存可调参数 /proc/sys/vm/
[root@uplook ~]# sysctl -a |grep vm
[root@uplook ~]# yum -y install kernel-doc
[root@uplook ~]# ls /usr/share/doc/kernel-doc-2.6.32/Documentation/sysctl/
00-INDEX  abi.txt  ctl_unnumbered.txt  fs.txt  kernel.txt  net.txt  README  sunrpc.txt  vm.txt

1. 如何接受大内存分配请求
[root@uplook ~]# sysctl -a |grep vm.overcomm
vm.overcommit_memory = 2
vm.overcommit_ratio = 50     物理内存百分比

vm.overcommit_memory = 0|1|2
-0:  智能识别
-1:  不做任何检查,完全可以分配
-2:  不做超过能力的事

能力:
会将swap + percentage(vm.overcommit_ratio) of the RAM (default 50)作为分给单个进程最大的虚存的最大值
swap + 物理内存的50%(vm.overcommit_ratio值默认是50%,可以超过100%)

swap 8G    +   物理内存4G * 50%  = 10G
swap 8G    +   物理内存4G * 150%  = 14G


2. THP设置
nr_hugepages
vm.nr_hugepages = 100 大页设置   sysctl.conf


3. Buffer Cache and Page Cache
drop_caches  
- 1  block data To free pagecache 文件系统缓存的实际block数据
- 2  meta data To  free dentries  and  inodes 缓存数据的元数据
- 3  block and meta data To free   pagecache,    dentries    and    inodes   所有数据

sysctl -a | grep drop_caches

4. Reclaiming Dirty Pages <Dirty> 脏页回收
脏页:把磁盘上的文件读入到内存中发生修改过的页来还未写回磁盘 

[root@uplook ~]# less /proc/meminfo
Free   未分配
Inactive     Buffer Cache and Page Cache 但没有修改,这一部分也是可以被分配的
Dirty   如果从磁盘上读出来的文件修改过,但没有存盘
Active  进程正在使用

[root@uplook ~]# grep -i dirt /proc/meminfo  
Dirty:               212 kB

方法一:手动回收
[root@uplook ~]# sync   脏页写回磁盘

方法二:由kernel自动回收
vm.dirty_writeback_centisecs              kernel每隔多久唤醒flush-MAJOR:MINOR线程,默认为5秒,之用版本为pdflush daemons 数字x10 厘秒
vm.dirty_expire_centisecs               脏页过期时间,单位是1/100秒,即10毫秒,默认为3000,即30秒
vm.dirty_background_ratio(default 10)     ratio(比),当系统的内存有10%脏页,kernel会在后台刷脏页
vm.dirty_background_bytes = 0
vm.dirty_ratio(default 40)               脏页有40%,挂起所有进程的写操作,flush脏页,至到10%,例如1G内存,有400M都是脏页
vm.dirty_bytes = 0                                 到达多少字节 强制刷新
厘秒 1%秒
数字(ratio)越小,I/O压力越大
数据(ratio)越大,I/O压力越小



Out-of-Memory Kill 可调参数
内存不足(OOM)指的是所有可用内存,包括 swap 空间都已被分配的计算状态。默认情况下,这个状态可造成系统 panic,并停止
如预期般工作。但将 /proc/sys/vm/panic_on_oom 参数设定为 0 会让内核在出现 OOM 时调用 oom _killer 功能。通常
oom _killer 可杀死偷盗进程,并让系统正常工作。
sysctl -a | grep panic
panic_on_oom   内存不足是否挂起  不开启挂起杀死进程

[root@uplook ~]# cat /proc/7649/oom_adj
0

[root@uplook ~]# cat /proc/`pgrep sshd`/oom_adj  免死
-17

-16 ----- 15         数据越大,被oom _killer 杀死的可能性越大
-17                     将 oom_adj 值设定为 -17 则为该进程禁用 oom _killer

杀进程可能导致数据丢失

与容量相关的内存可调参数 /proc/sys/kernel/

==消息对列==
kernel.msgmax
以字节为单位规定信息队列中任意信息的最大允许大小。这个值一定不能超过该队列的大小
(msgmnb)。默认值为 65536。

kernel.msgmnb
以字节为单位规定单一信息队列的最大值。默认为 65536 字节。

msgmni
规定信息队列识别符的最大数量(以及队列的最大数量)。64 位架构机器的默认值为 1985;  32位架构机器的默认值为 1736。

==共享内存==
shmall
以字节为单位规定一次在该系统中可以使用的共享内存总量。64 位架构机器的默认值为
4 294 967296;32 位架构机器的默认值为 2684 354 56。

shmmax
以字节为单位规定内核可允许的最大共享内存片段。64 位架构机器的默认值为 68719476736;
32 位架构机器的默认值为 4294967295。注:但内核支持的值比这个值要多得多。

shmmni
规定系统范围内最小共享内存片段。在 64 位和 32 位架构机器中的默认值都是 4096。

[root@uplook ~]# ipcs

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status     
0x6c6c6536 0          root       600        4096       0                      
0x00000000 1867777    root       600        393216     2          dest        
0x00000000 1900546    root       600        393216     2          dest        
0x00000000 1933315    root       600        393216     2          dest      

------ Semaphore Arrays --------
key        semid      owner      perms      nsems    
0x00000000 0          root       600        1        
0x00000000 32769      root       600        1        
0x00000000 786434     apache     600        1        
0x00000000 819203     apache     600        1        

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages  


甲骨文配置建议值
fs.aio-max-nr = 1048576
fs.file-max = 6815744
kernel.shmall = 2097152
kernel.shmmax = 4294967295
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
net.ipv4.ip_local_port_range = 9000 65500
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值