Mongodb in Docker: numactl --interleave = all explanations

I am trying to create Dockerfilefor MongoDB in memory based on the official repo at https://hub.docker.com/_/mongo/ .

In dockerfile-entrypoint.shI came across:

numa='numactl --interleave=all'
if $numa true &> /dev/null; then
    set -- $numa "$@"
fi

This basically adds numactl --interleave=allto the original docker command when it numactlexists.

But I really do not understand this NUMA policy. Could you explain what NUMA means and what it means --interleave=all?

And why should we use it to instantiate MongoDB?

+4
source share
2 answers

Link:

libnuma NUMA (Non Uniform Memory Access), Linux. NUMA , .

, issue 14 numa numa.

numa "" :

, , numactl, libnuma library, numactl script.


interleave=all , , cassandra ( ):

Linux , NUMA node, . , , , -. , Cassandra , , NUMA node "", .

NUMA , ​​ - , JVM.

. " " " MySQL NUMA

numa

NUMA, , , .
, node, , , , NUMA node: node 50% node.

http://jcole.us/blog/files/numa-imbalanced-allocation.png

Numa:

. numactl, :

# numactl --interleave all command

, numa , . ( ) "".
- node , .

, :

AMD Opteron NUMA HT (HyperTransport) - .
, Intel Haswell-EP 10 - , NUMA.

, NUMA node - , , HT, QPI ( QuickPath_Interconnect), NUMAlink .

http://jcole.us/blog/files/numa-balanced-allocation.png

+6

cassandra / mongodb numa ? QPI.

0

Source: https://habr.com/ru/post/1613003/


All Articles