NUMA в Solaris

Что бы включить использования NUMA ищем опцию в биосе «node interleaving» (для Dell-серверов находится в разделе Memory) и выставляем её в Disabled (по умолчанию в Dell она как раз disabled). Значение же Enable отключает использование Numa. Аналогично нужно отключить опцию Alternate RTID (Requestor Transaction ID) (для Dell-серверов находится в разделе Processor) и выставляем её в Disabled (по умолчанию в Dell она как раз disabled)

Вот так выглядит распределение memory при отключённой NUMA (в примере 2-сокетная конфигурация сервера):

(global-zone)# lgrpinfo 
lgroup 0 (root):
        Children: none
        CPUs: 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38
        Memory: installed 256G, allocated 132G, free 124G
        Lgroup resources: 0 (CPU); 0 (memory)
        Load: 0.0328
        Latency: 0

а вот так — при включённой:

(global-zone)# lgrpinfo
lgroup 0 (root):
        Children: 1 2
        CPUs: 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38
        Memory: installed 256G, allocated 16G, free 240G
        Lgroup resources: 1 2 (CPU); 1 2 (memory)
        Latency: 21
lgroup 1 (leaf):
        Children: none, Parent: 0
        CPUs: 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38
        Memory: installed 128G, allocated 4.7G, free 123G
        Lgroup resources: 1 (CPU); 1 (memory)
        Load: 3.08
        Latency: 10
lgroup 2 (leaf):
        Children: none, Parent: 0
        Memory: installed 128G, allocated 11G, free 117G
        Lgroup resources: 2 (CPU); 2 (memory)
        Load: 0.0146

Проверим процессы через plgrp:

(global-zone)# plgrp 3727|head -2
     PID/LWPID    HOME
    3727/1        2     
(global-zone)# plgrp $$
     PID/LWPID    HOME
    5151/1        1     

Процесс с pid’ом 3727 запущен на lgroup2, а сама оболочка — lgroup1. Если зайти в зону, то ситуация будет зеркальная:

(zone)# lgrpinfo 
lgroup 0 (root):
        Children: 1 2
        CPUs: 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39
        Memory: installed 256G, allocated 132G, free 124G
        Lgroup resources: 1 2 (CPU); 1 2 (memory)
        Latency: 21
lgroup 1 (leaf):
        Children: none, Parent: 0
        Memory: installed 128G, allocated 63G, free 65G
        Lgroup resources: 1 (CPU); 1 (memory)
        Load: 0.0056
lgroup 2 (leaf):
        Children: none, Parent: 0
        CPUs: 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39
        Memory: installed 128G, allocated 69G, free 59G
        Lgroup resources: 2 (CPU); 2 (memory)
        Load: 0.0575
        Latency: 10

Посмотрим plgrp:

(zone)# plgrp 3727 | head -2
     PID/LWPID    HOME
    3727/1        2     
(zone)# plgrp $$
     PID/LWPID    HOME
    5318/1        2     

Здесь все процессы будут запущены в lgroup2, так как для зоны мы выделили весь socket (нумерация сокетов с 0-ля, выделен второй сокет):

(global-zone)# zonecfg -z zone info dedicated-cpu
dedicated-cpu:
        ncpus not specified
        cpus not specified
        cores not specified
        sockets: 1

Как включить NUMA для известных приложений:

— mysql

flush_caches = 1
innodb_numa_interleave = 1

— java

-XX:+UseNUMA

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *