潇湘夜雨移动版

主页 > 系统 >

内存、IO、网络优化(3)

示例:
[root@hadoop-master ~]# cat /proc/2560/oom_adj #查看2560进程的权重
0
[root@hadoop-master ~]# cat /proc/2560/oom_score
21
 
1) VM里面分配不出更多的page(注意linux kernel是延迟分配page策略,及用到的时候才alloc;所以malloc + memset才有效)。
2) 用户地址空间不足,这种情况在32bit机器上及user space超过了3GB,在64bit机器上不太可能发生。
2     当该机制被触发后,会让什么样的进程退出?
只要存在overcommit,就可能会有OOM killer。 Linux系统的选择策略也一直在不断的演化。我们可以通过设置一些值来影响OOM killer做出决策。
Linux下每个进程都有个OOM权重,在/proc//oom_adj里面,取值是-17到+15,取值越高,越容易被干掉。  最终OOM killer是通过/proc//oom_score
这个值来决定哪个进程被干掉的。这个值是系统综合进程的内存消耗量、CPU时间(utime + stime)、存活时间(uptime - start time)和oom_adj计算出的,
消耗内存越多分越高,存活时间越长分越低。总之,总的策略是:损失最少的工作,释放最大的内存同时不伤及无辜的用了很大内存的进程,并且杀
掉的进程数尽量少。  另外,Linux在计算进程的内存消耗的时候,会将子进程所耗内存的一半同时算到父进程中。
 
 
二、磁盘和io优化
1.优化Ext4:
1>格式大文件系统化时延迟inode的写入;
-E lazy_itable_init=1
# mkfs.ext4 -E lazy_itable_init=1 /dev/sda5
 
 
 
2>关闭Ext4的自动fsync()调用;
-o noauto_da_alloc
 
mount -o noauto_da_alloc
 
3>降低日志IO的优先级至与数据IO相同;
-o journal_ioprio=n 
n的用效取值范围为0-7,默认为3;
 
2.优化xfs:
xfs非常稳定且高度可扩展,是64位日志文件系统,因此支持非常大的单个文件及文件系统。在RHEL6.4上,其默认的格式化选项及挂载选项均已经达到很优的工作状态。
 
3.IO调度
IO Scheduler:
CFQ 完全公平队列
deadline 最后期限调度
anticipatory 期望
NOOP 无任何操作
调整io调度参数:
/sys/block/<device>/queue/scheduler
[root@hadoop-master ~]# cat /sys/block/sda/queue/scheduler 
noop anticipatory deadline [cfq] #默认为cfq
 
 
三网络参数优化
 ip neighbor list #查看arp缓存
 
 
net.ipv4.tcp_window_scaling = 1
 
net.ipv4.tcp_syncookies = 1
 
net.core.rmem_max = 12582912
net.core.rmem_default 
 
net.core.netdev_max_backlog = 5000
 
net.core.wmem_max = 12582912
net.core.wmem_default 
 
net.ipv4.tcp_rmem= 10240 87380 12582912
net.ipv4.tcp_wmem= 10240 87380 12582912
 
net.ipv4.tcp_tw_reuse=1
tcp_max_tw_buckets: 调大
tw:连接个数
established --> tw 
 
 
 
 
 
(责任编辑:liangzh)