mongo启动没有增加关闭numa选项
进行数据库的预热,由于集合dnscoll比较大,加索引100多G,因此预热需要一段时间
db.runCommand({"touch" : "dnscoll", "data" : true, "index" : true})
这个过程中观察CPU,发现 id为20的CPU idle为0,这个属于正常情况,说明预热进程消耗的CPU是在 ID为20的CPU上
02:57:15 PM CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
02:51:29 PM 20 0.00 0.00 6.67 92.38 0.00 0.95 0.00 0.00 0.00
然后查看numa节点的内存消耗情况,发现ID为20的CPU所在节点的内存在逐渐减少
[lsmpusr@wxlab31 bin]$ numactl --show
policy: default
preferred node: current
physcpubind: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
cpubind: 0 1 2 3
nodebind: 0 1 2 3
membind: 0 1 2 3
[lsmpusr@wxlab31 bin]$ numactl --hardware
available: 4 nodes (0-3)
node 0 cpus: 0 1 2 3 4 5 6 7 8 9 40 41 42 43 44 45 46 47 48 49
node 0 size: 32757 MB
node 0 free: 31597 MB
node 1 cpus: 10 11 12 13 14 15 16 17 18 19 50 51 52 53 54 55 56 57 58 59
node 1 size: 32768 MB
node 1 free: 31941 MB
node 2 cpus: 20 21 22 23 24 25 26 27 28 29 60 61 62 63 64 65 66 67 68 69
node 2 size: 32768 MB
node 2 free: 23126 MB
node 3 cpus: 30 31 32 33 34 35 36 37 38 39 70 71 72 73 74 75 76 77 78 79
node 3 size: 32767 MB
node 3 free: 31887 MB
node distances:
node 0 1 2 3
0: 10 20 20 20
1: 20 10 20 20
2: 20 20 10 20
3: 20 20 20 10
由于我numa的策略用的是default也就是在本地节点分配内存。
那么是不是等到CPU 20所在的节点本地内存耗完后,就会淘汰之前的内存,继续把数据放在它的本地内存呢?
但是事实不是这样的,发现CPU 20节点的本地内存使用完成后,又继续使用其他CPU节点的内存。也就是说没有出现swap insanity。原因。。不清楚,写个文章就是记录这个异常,期待哪天遇到高人。。
在预热过程中,始终只有CPU 20是活跃的,其他CPU都处于休息状态。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22034023/viewspace-1073563/
,如需转载,请注明出处,否则将追究法律责任。