一、相关概念简介
- system call:系统调用
- time slice:cpu时间片
- O(1):Linux系统进程调度器
- page frame:分页
- RSS:常驻内存集,无法被页面化的数据
- MMU:内存管理单元,维护线性地址空间和物理地址空间的映射表
- TLB:转换后缓冲器
- huge page:大页
- NUMA:非一致内存访问,有多颗CPU,每颗CPU有自己的内存段,每段叫做一个node,建议进程做CPU亲缘性绑定
二、CPU内存调优
# taskset -p mask pid
# taskset mask -- program
# taskset -c 0,,2-7 -- myprogram
# taskset -p -c 1 17947 #将pid为17947的进程绑定至第2颗CPU上,重启失效
# ps axo psr,pid,cmd
# cat /proc/interrupts
- numactl:对MUMA策略管理
- 调整进程优先级:nice, renice
- 隔离CPU,被隔离的CPU不会处理中断
# vim /etc/grub.conf
kernel ...... lsolcpus=1,2,3...
SCHED_FIFO [0-99]
chrt -f [1-99] /path/to/program arguments
SCHED_RR
chrt -f [1-99] /path/to/program arguments
SCHED_NORMAL [100-139]
nice,renice
1-99:实时优先级
100-139:动态优先级
htop
dstat
glances
sysdig
sar -P ALL 1 2
vmstat 1 5
iostat -c 1
vm.nr_hugepages = 10
fs.file-max = 8192
fs.aio-max-nr = 65535
vm.panic_on_oom = 0
/proc/pid/oom_adj [-16-15] #数字越高,被杀死的值越大,如果是-17则这个进程是无懈可击的
三、内存总结
nr_hugepages
swapiness
overcommit_memory