В чем смысл настройки CPU сродство (например, jep_setaffinity) на виртуальной машине

Я просто протестировал его на ubuntu 14.04, и у меня была такая же проблема. Чтобы исправить это, добавьте это в свой .zshrc

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

или запустите в терминале

echo source /usr/share/virtualenvwrapper/virtualenvwrapper.sh >> ~/.zshrc

В Mac OS X мне пришлось сделать

echo source /usr/local/bin/virtualenvwrapper.sh >> ~/.zshrc
0
12.06.2018, 14:46
2 ответа

Это просто установит привязку внутри виртуальной машины и виртуальных процессоров. Это может не иметь статической связи с реальными процессорами хоста, но предполагая, что хост виртуальной машины пытается сохранить виртуальные ЦП на отдельных физических ЦП (, что, вероятно, следует ), установка привязки к гостю может помочь сохранить процесс на одном ЦП, в зависимости от типов нагрузки на хозяин и на гостя.

Если у вас столько же физических ЦП на хосте, сколько и виртуальных на гостевых компьютерах, хосту ВМ не нужно перемещать виртуальные ЦП. Но поскольку у вас, вероятно, больше виртуальных машин, их нужно будет переместить, и вы мало что можете с этим поделать в гостевой системе. Вам также нужно будет установить сходство на уровне хоста, если вам это нужно.

То есть при условии, что нет специального драйвера для раскрытия ЦП хост-системы виртуальной машине.

1
28.01.2020, 02:31

Я вижу случай, когда виртуальная машина может извлечь выгоду изSCHED_SETAFFINITY(2). Возьмем «специальную» виртуальную машину с 2 «виртуальными сокетами» (, сопоставленными и закрепленными на 2 разных физических процессорах на одном хосте ), и по 2 «виртуальных ядра» на каждом. Вы можете убедиться, что процесс, для которого вы хотите установить сходство внутри гостя, имеет меньше затрат на производительность, как описано на страницах руководства :

.

Restricting a thread to run on a single CPU also avoids the performance cost caused by the cache invalidation that occurs when a thread ceases to execute on one CPU and then recommences execution on a different CPU.

Зачем вам такая установка? Я не знаю :), но имея 2 виртуальных сокета, у вас все равно будет инвалидация кеша.

Существует также некоторый бенчмаркинг с использованием 24 ядер с несколькими расположениями на vmware (1 сокет, 24 ядра -24 сокета, 1 ядро ​​-2 сокета, 12 ядер ). В прошлом этот набор сходства можно было использовать для программного обеспечения, требующего «лицензирования сокета ЦП» (cof, cof, Oracle... )как только вы могли доказать, что процесс привязан к сокету,но на сегодняшний день многие из этих решений становятся более ясными в лицензировании виртуальных сред, требуя, чтобы все физические процессоры, на которых работает виртуальная машина, были лицензированы. И, как вы можете видеть, решение vmware создает различные vNUMAS в зависимости от того, сколько у вас vSockets.

Помимо этого, установка привязки внутри гостей может усложнить то, что можно было бы сделать, установив привязку в гипервизоре при перемещении виртуальной машины.

1
28.01.2020, 02:31

Теги

Похожие вопросы