linux内存回收 内核参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux内存回收 内核参数相关的知识,希望对你有一定的参考价值。

ss -atu| awk ‘/^tcp/{++S[$2]} END {for(a in S) print a,S[a]}‘

ps up pid   (RSS:实际内存大小,长驻内存)

ps o pid,comm,minflt,majflt pid  (依次是次页中断,主页中断)   页中断:分配内存的过程叫页中断  主页中断来自swap,(主页中断太多会影响性能)   次页中断来自内存    页错误:重新建立物理内存与虚拟内存的对应关系

vm.swappiness rhel-7(30%)  100 倾向与swap    0倾向于buff/cache  (内存)

内存回收参数:

vm.dirty_expire_centisecs = 3000 (脏页的老化时间,默认30秒,多久刷盘一次)

vm.dirty_writeback_centisecs = 500    pdflush 多久工作一次(监控)

vm.dirty_background_ratio = 10   如果脏页到达剩余的10%,kernel 在调节,而不是pdflush

vm.dirty_ratio = 30    低位内存 30秒一次(到达20%) 小数据文件,随即数较多,可以适当把这个值设置大一些,性能更好一些。(刷盘慢)

vm.dirty_bytes = 0 ; vm.dirty_background_bytes = 0   到达字节


oom killer

vm.panic_on_oom = 0       0:开   1:关

/proc/pid/oom_adj        范围:-17到15   (-17越小越不容易被kill掉)


具体请参考kernel-doc

目录:/usr/share/doc/kernel-doc-*/Documentation/vm  内存



网络

sysctl -a | grep rmem

net.core.rmem_default = 212992

net.core.rmem_max = 212992

net.ipv4.tcp_rmem = 4096 87380 6291456

net.ipv4.udp_rmem_min = 4096


sysctl -a | grep tcp_mem

net.ipv4.tcp_mem = 42216 56291 84432


overcommit_memory = 0 默认 (3种模式)

0:内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程

1:总是允许过量使用,适合一些科学应用程序,classic example 是代码使用稀疏阵列

组成几乎依赖于虚拟内存。

2:不允许过量使用,

当系统分配的内存超过swap+50%(默认)物理RAM(N%由vm.overcommit_ratio决定)时,会拒绝commit。

overcommit的策略通过vm.overcommit_memory设置。

overcommit的百分比由vm.overcommit_ratio设置。


vm.overcommit_ratio = 50



vm.min_free_kbytes




本文出自 “silence” 博客,请务必保留此出处http://silencezone.blog.51cto.com/3613477/1870881

以上是关于linux内存回收 内核参数的主要内容,如果未能解决你的问题,请参考以下文章

Linux内核参数--time-wait回收--不建议设置

Linux 内核 内存管理物理分配页 ⑥ ( get_page_from_freelist 快速路径调用函数源码分析 | 检查内存区域水线 | 判定节点回收 | 判定回收距离 | 回收分配页 )

Linux 内核 内存管理物理分配页 ⑥ ( get_page_from_freelist 快速路径调用函数源码分析 | 检查内存区域水线 | 判定节点回收 | 判定回收距离 | 回收分配页 )

OS内核参数和JVM参数的调整

Linux 内核 内存管理物理分配页 ⑧ ( __alloc_pages_slowpath 慢速路径调用函数源码分析 | 获取首选内存区域 | 异步回收内存页 | 最低水线也分配 | 直接分配 )

内核参数调优