1、相關概念簡介
- system call:系統調用
- time slice:cpu時間片
- O(1):Linux系統進程調度器
- page frame:分頁
- RSS:常駐內存集,沒法被頁面化的數據
- MMU:內存管理單元,維護線性地址空間和物理地址空間的映射表
- TLB:轉換後緩衝器
- huge page:大頁
- NUMA:非一致內存訪問,有多顆CPU,每顆CPU有本身的內存段,每段叫作一個node,建議進程作CPU親緣性綁定
2、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則這個進程是無懈可擊的
3、內存總結
nr_hugepages
swapiness
overcommit_memory