Физические ядра против виртуальных ядер в параллелизме - PullRequest
1 голос
/ 11 июня 2010

Когда речь заходит о виртуализации, я размышляю об отношениях между физическими ядрами и виртуальными ядрами, особенно о том, как это влияет на приложения, использующие параллелизм.Например, в сценарии с виртуальными машинами, если физических ядер меньше, чем виртуальных, если это возможно, каков эффект или ограничения, накладываемые на параллельную обработку приложения?Я спрашиваю, потому что в моей среде не раскрыто, что такое физическая архитектура.Есть ли еще большое преимущество в распараллеливании, если приложение живет на двухъядерной виртуальной машине, размещенной на одноядерной физической машине?

Ответы [ 2 ]

6 голосов
/ 11 июня 2010

Есть ли еще много преимуществ для распараллеливания, если приложение живет на двухъядерной виртуальной машине, размещенной на одноядерном физическом компьютере?

Всегда.

ОСпараллельная обработка на уровне (т. е. конвейеры Linux) значительно улучшит производительность, независимо от того, сколько у вас ядер - реальных или виртуальных.

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

Как только вы получите конвейерное решение, которое связывает 100% ваших виртуальных ресурсов,у вас есть что-то, что вы можете измерить .

Начните пробовать разные варианты логических и физических ресурсов.

Но только после у вас есть конвейер уровня ОС, который использует все доступные ресурсы.А до тех пор у вас есть фундаментальная работа по созданию конвейерного решения.

1 голос
/ 14 июня 2010

Поскольку вы включили тег F # и вас интересует параллельная производительность, я предполагаю, что вы используете асинхронный ввод-вывод F #, поэтому потоки никогда не блокируются, они просто переключаются между задачами, связанными с ЦП.

В этом случае идеально иметь такое же количество потоков, как и количество виртуальных ядер (по крайней мере, на основе моих экспериментов с F # в Ubuntu под Virtualbox под управлением Windows 7).Наличие большего количества потоков немного снижает производительность, а меньшее уменьшает производительность немного.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...