1、目的
让程序能更加高效的运行。CPU默认的使用方式可能并不能让CPU使用率最高,从而导致数据计算能力低下
2、从哪些方面入手
a,基础配置方面:CPU是否开启了numa,如果开启了numa,如果开启了是否符合最大化使用
b, 程序使用方面:CPU缓存命中率是否高,如果不高有需要怎么处理,又存在哪些方法去调整
c,中断是否需要配置
3、numa设置
namu概念:系统存在多个CPU,那么将一个CPU与一个或者多个内存绑定,在需要使用数据的时候可以直接到和程序运行的CPU绑定的内存中寻找数据
冲突:如果一个程序需要的内存大于该CPU绑定的内存大小,那么该程序在CPU中需要数据时则需要通过别的CPU去调取内存,这样会严重降低你的CPU利用率
解决:如果通过lscpu和numactl --hardware命令发现每个CPU绑定的内存大小并不能满足你系统中所有程序的需求,要么降低程序的内存使用,要么关掉numa
方法:在/etc/grub2.cfg中找到系统内核启动所在的位置,在末尾添加numa=off,然后重启系统生效
4、CPU缓存命中调整
原因:默认情况下一个程序每运行一次都可能在不同的CPU上,那么该程序的CPU二级缓存可能不在同一个缓存中,比如一个a程序在后台运行,上一次在cpu0上运行,对应的二级缓存为L2A,一段时间后该程序再被运行的时候可能在CPU2上,对应的二级缓存为L2B,那么之前该程序的缓存数据就无法直接使用了,需要去CPU去别的缓存中寻找
解决思路:将程序绑定在相同的二级缓存的CPU上运行
解决方法:1、cgroup 2、systemd 3、drop-in文件