![Как создать топологию NUMA в среде одной системы](https://rvso.com/image/1585775/%D0%9A%D0%B0%D0%BA%20%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C%20%D1%82%D0%BE%D0%BF%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8E%20NUMA%20%D0%B2%20%D1%81%D1%80%D0%B5%D0%B4%D0%B5%20%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B.png)
Я хочу узнать, возможно ли создать топологию NUMA (2 узла NUMA тоже подойдут) в среде одной системы (я использую virtualbox ubuntu 18.04).
Когда я бегу $numactl -H
, я вижу следующее
available: 1 nodes (0)
node 0 cpus: 0 1 2 3
node 0 size: 1992 MB
node 0 free: 477 MB
node distances:
node 0
0: 10
Мне было интересно, возможно ли создать два узла NUMA (только для моделирования распределенной среды) в системе с 4 ядрами. Или мне нужно иметь больше четырех ядер для этого?
решение1
В виртуализации общее число ядер, которые вы можете назначить всем ВМ, практически бесконечно. Но число ядер, которые вы можете назначить каждой отдельной ВМ, не может превышать общее число логических ядер на хосте.
Итак, если говорить кратко: да, вы можете создать столько ядер NUMA, сколько может обработать ваш хост.
Гипервизоры используют планировщик для постановки в очередь инструкций ЦП каждой виртуальной машины на ЦП хоста. Чем больше виртуальных машин вы настраиваете, тем длиннее очередь, проходящая через планировщик гипервизора на ЦП хоста, что означает замедление работы, но не отказ. ЦП и современные системные архитектуры разработаны для обработки очередей, и это на самом деле одна из причин, почему виртуализация является такой полезной и мощной вещью: она поддерживает очередь на хосте более полной большую часть времени, более эффективно используя ресурсы хостов.