1、大内存页
2、数据刷写频率 忍受多长时间丢失 越长越好,脏数据有可能把内存耗尽的危险
3、尽可能不把内存数据放到swap中
当物理内存使用到了6成有可能就开始使用swap了
跑tomcat 、hadoop、python java 内程序尽量不要很早使用swap
4、numa专业设备才会有 none uniform memory access 每颗cpu 都有自己专用的内存空间,避免加锁解决征用。每个内存段叫一个节点(node)
5、进程完成cpu绑定亲源性,降低频繁的上下文切换,nginx进程树少于核心数2,留2核给系统使用 ### cpu亲源性
6、把所有中断隔离到留的2颗cpu上
7、进程优先级调整 ####
cpu亲源性:
# taskset -p mask pid
mask为: 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
# ps -ef | grep nginx
root 15063 1 0 Jun22 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf
nginx 15064 15063 0 Jun22 ? 00:00:00 nginx: worker process
调整nginx亲源性:
# taskset -p 0000,0001,0010,0011 15064
pid 15064’s current affinity mask: ffff
pid 15064’s new affinity mask: 11
# taskset -p -c 1-4,7,9 15064
pid 15064’s current affinity list: 0,4
pid 15064’s new affinity list: 1-4,7,9
查看程序运行的cpu:
# ps axo psr,comm | grep nginx
5 nginx
10 nginx
配置cpu隔离:
/etc/grub.conf
kernel .. … isolcpus = cpu number,…,cpu number
isolcpus=20,21,22,23
定义中断:
echo cpunumber,… > /proc/irq/#/sm_affinity
查看各cpu中断次数:
# cat /proc/interrupts
例如:
# echo 1 > /proc/irq/62/smp_affinity 隔离中断
这里使用的cpu应该为isolcpus中定义cpu集合以外的cpu
调度类别(调整优先级):
SCHED_FIFO,SCHED_RR: realtime 1-99队列由SCHED_FIFO 同一级别的进程由 SCHED_RR调度
chrt -f /path/to/program/ arguments
chrt -r /path/to/program/ arguments
SCHED_NORMAL:动态优先级 100-139 用户空间进程
renice,nice