总则:
如果数据库服务器遇到了2个、4个或8个节点的NUMA。
1、使用numactl -H来查看服务器NUMA的分布情况
假定发现如下:
节点 0 CPU:0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46
节点 0 大小:195269 MB
2、informix尽量使用NUMA中的一个节点,但是对于4个或8个节点的NUMA明显是浪费的。这个时候可以使用两个节点的NUMA,但是不建议超过2个。
3、numactl --cpunodebind=0 --membind=0 $INFORMIXDIR/bin/oninit -v 启动数据库
4、启动完数据库后,CPU VP可以通过AFF参数做CPU 亲和,但是其他的VP无法做亲和。
通过如下方法,从操作系统的层面实现CPU的亲和。
proc="0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46 ”
onstat -g glo | sed -n '/Thread/,/tot/p' | grep -vE 'usercpu|tot'| awk 'NF>7 {print "taskset -p -c",c,$2 }' c="$proc" | sh -x