В связи с недавним повсеместным внедрением многоядерных процессоров возникает вопрос: как соотношение CPU / ядер соотносится с производительностью?
Что из этого лучше, как и почему?
Я уже знаю последствия лицензирования (есть программное обеспечение, лицензируемое для физических процессоров независимо от фактических ядер, и другие, которые действительно заботятся об этом), и, конечно же, система с большим количеством физических сокетов процессора более настраиваема и может быть легко расширена; но меня интересует разница в производительности между этими конфигурациями ... если она есть.
Глядя на ваши комментарии по этому вопросу, я бы сказал, что при работе на полную мощность я думаю, что 4 двухъядерных процессора выиграют благодаря совместному использованию кеша. 1 8-ядерный процессор должен использовать один и тот же кеш 8 способами, а не только 2 способами с 4 процессорами.
Хотя ядрам потребуется немного больше времени для связи во время обработки, я думаю, что это будет иметь меньший эффект, чем наличие большего количества кеша для совместного использования.
Это зависит.
Ваш вопрос в конечном итоге сводится к памяти. Как сказал Бен, независимо от того, общались ли они через кеш или через основную память. Однако, что лучше - 1x8 или 4x2 - полностью зависит от вашего приложения - от того, насыщает оно кеш или нет.
Если тип рабочей нагрузки в значительной степени однороден и использует много памяти, подойдет 1x8 с большим кешем. Если рабочая нагрузка имеет много независимых динамических процессов, то лучше использовать 4x2, так как накладные расходы на связь минимальны.
Почему бы не взглянуть на это с точки зрения дополнительных затрат?
Анекдот: Однажды я построил хост-машину виртуальной машины с процессорами 2x6 и увидел, что производительность резко упала, когда я пересек основную память. то есть большее количество ядер, взаимодействующих через основную память, работает медленнее, чем меньшее количество ядер, взаимодействующих через кеш. Каждая виртуальная машина в основном выполняла только одно задание.