Se estiver usando o RHEL / CentOS / Fedora, sugiro usar o daemon numad . ( link do paywall da Red Hat ).
Embora não tenha muito uso para a diretiva numactl --interleave
, parece que você determinou que sua carga de trabalho exige isso. Você pode explicar por que esse é o caso para fornecer um contexto melhor?
Editar:
Parece que a maioria dos aplicativos que recomendam a definição explícita de numactl
fazem um chamada de biblioteca libnuma ou incorporar numactl
em um script de wrapper .
Para o lado numad
, há uma opção de configuração que pode ser especificada na linha de comando ou em /etc/numad.conf
...
-K <0|1>
This option controls whether numad keeps interleaved memory spread across NUMA nodes, or
attempts to merge interleaved memory to local NUMA nodes. The default is to merge interleaved
memory. This is the appropriate setting to localize processes in a subset of the system’s
NUMA nodes. If you are running a large, single-instance application that allocates inter-
leaved memory because the workload will have continuous unpredictable memory access patterns
(e.g. a large in-memory database), you might get better results by specifying -K 1 to instruct
numad to keep interleaved memory distributed.
Alguns dizem que tentar isso com algo como numad -K 1 -u X
, em que X é 100 x contagem de núcleos, pode ajudar nisso. Experimente.
Consulte também o White paper ProLiant da HP no Linux e no NUMA