none
NUMA Node on hyper-v RRS feed

  • Вопрос

  • Помогите разобраться. Есть Windows server 2012 R2. В настройках Hyper-v есть настройка на уровне хоста Allow Numa spanning - этим самым мы разрешаем использование remote access memory. То есть если у нас 2-сокетная материнка и 64 GB оперативы на оба сокета и мы не ставим эту галку то ВМ не может использовать более 32 GB так как NUMA не будет использован. Правильно?

    Так вот что за настройка в Configuratuion ВМ, Processor - Numa Configuratuion?

    Если можно простым языком или подробно на каком-нибудь ресурсе :)

    Спасибо.

    15 марта 2014 г. 18:14

Ответы

  • В Hyper-V на базе Windows Server 2012 и Windows Server 2012 R2 гипервизор старается по умолчанию выделить ресурсы ВМ в рамках одного NUMA-узла. В 2008 R2 это приходилось делать специально обученным скриптом.

    Однако, если ресурсов требуется больше, можно задействовать обращение к памяти других сокетов. Собственно, закладка NUMA Configuration и позволяет настроить параметры обращения: к скольки сокетам можно обращаться, за каким количеством памяти. Кроме того, для виртуальной машины можно выстроить представление NUMA-узлов, скопировав его с физической архитектуры, используя кнопку.

    16 марта 2014 г. 8:34
    Модератор
  • allow numa spaning from Physical Node позволяет включить возможность "брать" память для одной из Numa Node ,используя ресурсы другой Numa Node ~ непрямой доступ к памяти. К примеру, если настроена дин.память для ВМ и ВМ требует доп.ресурсы в плане памяти, но доступного количества на ноде нет (прямого доступа) , то он использует ресуры другой numa-ноды (indirect memory access)

    Processor - Numa Configuratuion = настройка архитектуры Numa на уровне ВМ ( к примеру, 2 vCPU <> 1 Numa Node <> 1 Socket)

    Практически всё описано в оф.статье:

    http://technet.microsoft.com/ru-ru/library/dn282282.aspx


    Roman Levchenko, MCITP, MCTS http://www.rlevchenko.com

    15 марта 2014 г. 20:30
  • Правильно ли я понимаю, что Numa-узел это сокет и его оперативная память? Или речь идет о ядрах физического процессора? То есть на двухсокетной материнской плате 2 Numa-узла? 

    Если у меня два 6-ядерных процессора и на каждом включен HT, сколько Numa-узлов у меня в таком случае?

    И еще не очень понятно что такое Virtual NUMA node?


    Если Вы помните, то раньше была 1 системная шина (system bus) , по которой данные передавались от CPU к отдельной стоящему контроллеру памяти. По мере развития аппаратных архитектур, AMD (насколько помню) впервые интегрировали контроллер памяти в процессор. Дальше понеслось ..2,4,8 и т.д. ядерные CPU + многосокетные системы. И,понятное дело, с этим всем надо было что-то делать. Пускать всё в 1 системную шину не вариант, поэтому трендом стало многошинность и имплементация NUMA-архитектуры, которая разбивает CPU на группы со своим доступ к памяти или I/O каналами. Как построена NUMA (количество CPU В группе)- это решает производитель серверных систем. К примеру, 8-ядерный CPU может разбит на 2 NUMA-ноды , которые имеют каждый прямо доступ к памяти.

    Virtual Numa Node - это как раз то, что Денис отметил (Numa Configuration в св-ах ВМ). ВМ в 2012/R2 использует позволяет "копировать" архитектуры Numa ноды, на которой она находится, что позволяет более эффективно работать с CPU/memory именно на уровне ВМ, т.е. Hyper-V


    Roman Levchenko, MCITP, MCTS http://www.rlevchenko.com

    16 марта 2014 г. 19:01
  • Долго и упорно читаю статью которую дал Roman Levchenko, но еще больше запутался по-моему.

    Есть двухсокетная материнская плата каждый процессор имеет 6 ядер и HT и 32 GB у каждого процессора, суммарная ОП = 64 GB, таким образом в настройках виртуальной машины мы можем выставить до 24 виртуальных процессоров для каждой и до 64 GB. Если зайти в настройки процессора - Numa configuration и нажать на Use hardware topology получаем ресурсы одного NUMA-узла (?) то есть 12 процессоров и 32 GB памяти. Что я сделал указав эти значения? Превысив эти значения ОС внутри ВМ будет думать, что она вышла из единной VNumaNode?

    Если в настройках ВМ указать значения процессора и оперативной памяти больше чем указано в настройках NUMA для этой ВМ, вылезает предупреждение - что включена Dynamic Memory. Читаю в статье что нельзя одновременно использовать Virtual Numa и Dynamic Memory, после этого понимаю, что запутался окончательно.


    http://technet.microsoft.com/ru-ru/library/dn282282.aspx#BKMK_NUMA_DM 

    по-моему достаточно доступно написано :) 

    упоминул в первом ответе, что использование динамики для высоконагруженных ресурсов повлечет привлечения доступной памяти из другой NUMA ноды (если включено Numa spanning), что,конечно, отразится в производительности memory/cpu. Поэтому общая рекомендация - для высокотребовательных к памяти ресурсов использовать статическую память,нежели динамику. 

    As a result, the NUMA spanning setting must be enabled when you have virtual machines that are large enough to be split between two or more physical NUMA nodes. If the NUMA spanning setting is disabled, the virtual machine must fit entirely within a single physical NUMA node, or the virtual machine will not start, or be restored or migrated

    When trying to decide which feature to use, you should take the following questions into consideration. If the answer to both is yes, enable virtual NUMA and do not enable Dynamic Memory.

    1. Is the workload running in the virtual machine NUMA-aware?
    2. Will the virtual machine consume more resources, processors, or memory than are available on a single physical NUMA node?

    Get-VMHostNumaNode для просмотра топологии

    Roman Levchenko, MCITP, MCTS http://www.rlevchenko.com




    16 марта 2014 г. 19:20
  • Супер, в голове наводится порядок, спасибо :)

    Вопрос такой:

    Есть предположим 12 логических процессоров и 32 гб оперативной памяти на одном Numa-узле и столько же на другом. Есть ли какой-нибудь сценарий в котором надо будет поставить значения отличные от физической топологии, то есть например в настройках ВМ поставить Numa Configuration 4 proccessor, 8 GB RAM, 1 socket?

    Как пример, кластер из разных серверных платформ (не рекомендованная конфигурация). В итоге, мы Numa Node конфигурируем (желательно) под самый меньший из серверов в кластере, чтобы при миграции ВМ ничего кардинального для неё не происходило.

    Roman Levchenko, MCITP, MCTS http://www.rlevchenko.com

    17 марта 2014 г. 5:31
  • И еще у меня на всех серверах команда выдает Get-VMHostNumaNode

    ProcessorsAvailability : {0, 0, 0, 0...}

    ProcessorsAvailability должен показывать процент незагруженности(idle) каждого процессора в Numa-группе. 

    На 2012 R2/8.1 нули. 

    На 2012 всё ок: 

     Get-VMHostNumaNode

    ---

    NodeId                 : 0
    ProcessorsAvailability : {85, 90, 94, 90...}
    MemoryAvailable        : 12303
    MemoryTotal            : 65506
    ComputerName           : server1

    NodeId                 : 1
    ProcessorsAvailability : {92, 93, 97, 96...}
    MemoryAvailable        : 223
    MemoryTotal            : 65536
    ComputerName           : server1

    ---

    =  некорректная работа cmdlet в 2012R2/8.1. 


    Roman Levchenko, MCITP, MCTS http://www.rlevchenko.com

    17 марта 2014 г. 6:54

Все ответы

  • allow numa spaning from Physical Node позволяет включить возможность "брать" память для одной из Numa Node ,используя ресурсы другой Numa Node ~ непрямой доступ к памяти. К примеру, если настроена дин.память для ВМ и ВМ требует доп.ресурсы в плане памяти, но доступного количества на ноде нет (прямого доступа) , то он использует ресуры другой numa-ноды (indirect memory access)

    Processor - Numa Configuratuion = настройка архитектуры Numa на уровне ВМ ( к примеру, 2 vCPU <> 1 Numa Node <> 1 Socket)

    Практически всё описано в оф.статье:

    http://technet.microsoft.com/ru-ru/library/dn282282.aspx


    Roman Levchenko, MCITP, MCTS http://www.rlevchenko.com

    15 марта 2014 г. 20:30
  • В Hyper-V на базе Windows Server 2012 и Windows Server 2012 R2 гипервизор старается по умолчанию выделить ресурсы ВМ в рамках одного NUMA-узла. В 2008 R2 это приходилось делать специально обученным скриптом.

    Однако, если ресурсов требуется больше, можно задействовать обращение к памяти других сокетов. Собственно, закладка NUMA Configuration и позволяет настроить параметры обращения: к скольки сокетам можно обращаться, за каким количеством памяти. Кроме того, для виртуальной машины можно выстроить представление NUMA-узлов, скопировав его с физической архитектуры, используя кнопку.

    16 марта 2014 г. 8:34
    Модератор
  • Правильно ли я понимаю, что Numa-узел это сокет и его оперативная память? Или речь идет о ядрах физического процессора? То есть на двухсокетной материнской плате 2 Numa-узла? 

    Если у меня два 6-ядерных процессора и на каждом включен HT, сколько Numa-узлов у меня в таком случае?

    И еще не очень понятно что такое Virtual NUMA node?


    16 марта 2014 г. 9:04
  • Долго и упорно читаю статью которую дал Roman Levchenko, но еще больше запутался по-моему.

    Есть двухсокетная материнская плата каждый процессор имеет 6 ядер и HT и 32 GB у каждого процессора, суммарная ОП = 64 GB, таким образом в настройках виртуальной машины мы можем выставить до 24 виртуальных процессоров для каждой и до 64 GB. Если зайти в настройки процессора - Numa configuration и нажать на Use hardware topology получаем ресурсы одного NUMA-узла (?) то есть 12 процессоров и 32 GB памяти. Что я сделал указав эти значения? Превысив эти значения ОС внутри ВМ будет думать, что она вышла из единной VNumaNode?

    Если в настройках ВМ указать значения процессора и оперативной памяти больше чем указано в настройках NUMA для этой ВМ, вылезает предупреждение - что включена Dynamic Memory. Читаю в статье что нельзя одновременно использовать Virtual Numa и Dynamic Memory, после этого понимаю, что запутался окончательно.


    16 марта 2014 г. 11:26
  • Попробовал использовать скрипт который написано внизу статьи, но всегда получаю значение:

    VMName : Srv-xxx
    vNUMANode : NA
    VMMem : Dynamic
    PhyNUMANode : NA
    PhyNUMANodeMemRemaining : NA

    16 марта 2014 г. 11:32
  • Правильно ли я понимаю, что Numa-узел это сокет и его оперативная память? Или речь идет о ядрах физического процессора? То есть на двухсокетной материнской плате 2 Numa-узла? 

    Если у меня два 6-ядерных процессора и на каждом включен HT, сколько Numa-узлов у меня в таком случае?

    И еще не очень понятно что такое Virtual NUMA node?


    Если Вы помните, то раньше была 1 системная шина (system bus) , по которой данные передавались от CPU к отдельной стоящему контроллеру памяти. По мере развития аппаратных архитектур, AMD (насколько помню) впервые интегрировали контроллер памяти в процессор. Дальше понеслось ..2,4,8 и т.д. ядерные CPU + многосокетные системы. И,понятное дело, с этим всем надо было что-то делать. Пускать всё в 1 системную шину не вариант, поэтому трендом стало многошинность и имплементация NUMA-архитектуры, которая разбивает CPU на группы со своим доступ к памяти или I/O каналами. Как построена NUMA (количество CPU В группе)- это решает производитель серверных систем. К примеру, 8-ядерный CPU может разбит на 2 NUMA-ноды , которые имеют каждый прямо доступ к памяти.

    Virtual Numa Node - это как раз то, что Денис отметил (Numa Configuration в св-ах ВМ). ВМ в 2012/R2 использует позволяет "копировать" архитектуры Numa ноды, на которой она находится, что позволяет более эффективно работать с CPU/memory именно на уровне ВМ, т.е. Hyper-V


    Roman Levchenko, MCITP, MCTS http://www.rlevchenko.com

    16 марта 2014 г. 19:01
  • Долго и упорно читаю статью которую дал Roman Levchenko, но еще больше запутался по-моему.

    Есть двухсокетная материнская плата каждый процессор имеет 6 ядер и HT и 32 GB у каждого процессора, суммарная ОП = 64 GB, таким образом в настройках виртуальной машины мы можем выставить до 24 виртуальных процессоров для каждой и до 64 GB. Если зайти в настройки процессора - Numa configuration и нажать на Use hardware topology получаем ресурсы одного NUMA-узла (?) то есть 12 процессоров и 32 GB памяти. Что я сделал указав эти значения? Превысив эти значения ОС внутри ВМ будет думать, что она вышла из единной VNumaNode?

    Если в настройках ВМ указать значения процессора и оперативной памяти больше чем указано в настройках NUMA для этой ВМ, вылезает предупреждение - что включена Dynamic Memory. Читаю в статье что нельзя одновременно использовать Virtual Numa и Dynamic Memory, после этого понимаю, что запутался окончательно.


    http://technet.microsoft.com/ru-ru/library/dn282282.aspx#BKMK_NUMA_DM 

    по-моему достаточно доступно написано :) 

    упоминул в первом ответе, что использование динамики для высоконагруженных ресурсов повлечет привлечения доступной памяти из другой NUMA ноды (если включено Numa spanning), что,конечно, отразится в производительности memory/cpu. Поэтому общая рекомендация - для высокотребовательных к памяти ресурсов использовать статическую память,нежели динамику. 

    As a result, the NUMA spanning setting must be enabled when you have virtual machines that are large enough to be split between two or more physical NUMA nodes. If the NUMA spanning setting is disabled, the virtual machine must fit entirely within a single physical NUMA node, or the virtual machine will not start, or be restored or migrated

    When trying to decide which feature to use, you should take the following questions into consideration. If the answer to both is yes, enable virtual NUMA and do not enable Dynamic Memory.

    1. Is the workload running in the virtual machine NUMA-aware?
    2. Will the virtual machine consume more resources, processors, or memory than are available on a single physical NUMA node?

    Get-VMHostNumaNode для просмотра топологии

    Roman Levchenko, MCITP, MCTS http://www.rlevchenko.com




    16 марта 2014 г. 19:20
  • Супер, в голове наводится порядок, спасибо :)

    Вопрос такой:

    Есть предположим 12 логических процессоров и 32 гб оперативной памяти на одном Numa-узле и столько же на другом. Есть ли какой-нибудь сценарий в котором надо будет поставить значения отличные от физической топологии, то есть например в настройках ВМ поставить Numa Configuration 4 proccessor, 8 GB RAM, 1 socket?

    17 марта 2014 г. 5:13
  • И еще у меня на всех серверах команда выдает Get-VMHostNumaNode

    ProcessorsAvailability : {0, 0, 0, 0...}

    17 марта 2014 г. 5:23
  • Супер, в голове наводится порядок, спасибо :)

    Вопрос такой:

    Есть предположим 12 логических процессоров и 32 гб оперативной памяти на одном Numa-узле и столько же на другом. Есть ли какой-нибудь сценарий в котором надо будет поставить значения отличные от физической топологии, то есть например в настройках ВМ поставить Numa Configuration 4 proccessor, 8 GB RAM, 1 socket?

    Как пример, кластер из разных серверных платформ (не рекомендованная конфигурация). В итоге, мы Numa Node конфигурируем (желательно) под самый меньший из серверов в кластере, чтобы при миграции ВМ ничего кардинального для неё не происходило.

    Roman Levchenko, MCITP, MCTS http://www.rlevchenko.com

    17 марта 2014 г. 5:31
  • И еще у меня на всех серверах команда выдает Get-VMHostNumaNode

    ProcessorsAvailability : {0, 0, 0, 0...}

    ProcessorsAvailability должен показывать процент незагруженности(idle) каждого процессора в Numa-группе. 

    На 2012 R2/8.1 нули. 

    На 2012 всё ок: 

     Get-VMHostNumaNode

    ---

    NodeId                 : 0
    ProcessorsAvailability : {85, 90, 94, 90...}
    MemoryAvailable        : 12303
    MemoryTotal            : 65506
    ComputerName           : server1

    NodeId                 : 1
    ProcessorsAvailability : {92, 93, 97, 96...}
    MemoryAvailable        : 223
    MemoryTotal            : 65536
    ComputerName           : server1

    ---

    =  некорректная работа cmdlet в 2012R2/8.1. 


    Roman Levchenko, MCITP, MCTS http://www.rlevchenko.com

    17 марта 2014 г. 6:54
  • Спасибо вам большое за помощь :)
    17 марта 2014 г. 7:01