Я просто протестировал его на 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
Это просто установит привязку внутри виртуальной машины и виртуальных процессоров. Это может не иметь статической связи с реальными процессорами хоста, но предполагая, что хост виртуальной машины пытается сохранить виртуальные ЦП на отдельных физических ЦП (, что, вероятно, следует ), установка привязки к гостю может помочь сохранить процесс на одном ЦП, в зависимости от типов нагрузки на хозяин и на гостя.
Если у вас столько же физических ЦП на хосте, сколько и виртуальных на гостевых компьютерах, хосту ВМ не нужно перемещать виртуальные ЦП. Но поскольку у вас, вероятно, больше виртуальных машин, их нужно будет переместить, и вы мало что можете с этим поделать в гостевой системе. Вам также нужно будет установить сходство на уровне хоста, если вам это нужно.
То есть при условии, что нет специального драйвера для раскрытия ЦП хост-системы виртуальной машине.
Я вижу случай, когда виртуальная машина может извлечь выгоду из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.
Помимо этого, установка привязки внутри гостей может усложнить то, что можно было бы сделать, установив привязку в гипервизоре при перемещении виртуальной машины.