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 = 4096873806291456
net.ipv4.udp_rmem_min = 4096
sysctl -a | grep tcp_mem
net.ipv4.tcp_mem = 422165629184432
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
转载于:https://blog.51cto.com/silencezone/1870881