Есть ли здесь многоядерное преимущество? - PullRequest
0 голосов
/ 07 мая 2009

Позвольте мне сформулировать это так ...

«Скажем, у меня есть сервер приложений, работающий на одноядерном процессоре Intel и обслуживающий 200 одновременных пользователей. Будет ли перевод оборудования на двухъядерную систему позволять моему серверу приложений обслуживать, скажем, 350 одновременных пользователей»?

Основной вопрос, на который я надеюсь ответить, - «Может ли добавление дополнительных процессорных ядер помочь увеличить возможности ввода-вывода сервера». Потому что иногда это именно то, на что намекают производители оборудования, когда рекламируют свои многоядерные серверы.

Ответы [ 4 ]

3 голосов
/ 07 мая 2009

Вы должны профилировать свой сервер, определить его узкое место и устранить их.

Если вам не хватает памяти, купите больше памяти или купите компьютер с более быстрой памятью.

Если вы привязаны к диску и много обслуживаете статического контента, рассмотрите SSD-диск.

Если ваша база данных привязана, учтите это.

Но обычно вы «привязаны к конфигурации» и настраиваете свою конфигурацию, например. изменение количества потоков в пуле или что-то подобное даст вам немедленное улучшение.

Многие веб-серверы и базы данных - это именно программное обеспечение, написанное для использования дополнительных ядер. Конечно, многие также взимают лицензионные сборы за ядро, поэтому учтите и этот аспект.

1 голос
/ 07 мая 2009

Вы можете или не можете видеть выгоду, но поскольку процессор на самом деле не выполняет ввод / вывод, я не ожидаю какого-либо существенного преимущества, если задачи в основном связаны с вводом / выводом.

РЕДАКТИРОВАТЬ: Мой ответ предполагает, что ваш код написан так, что вы на самом деле используете несколько ядер. Если это не так, ваше приложение не получит выгоду от дополнительных ядер, но машина будет лучше оснащена для обслуживания других одновременных задач.

0 голосов
/ 08 мая 2009

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

Преобразуется ли это в более высокую пропускную способность или нет, зависит от того, была ли обработка запроса связана с процессором. Как правило, IO является основным узким местом в распределенных системах. Тем не менее, если сборка сообщений (запроса) требует значительных вычислений, то для каждого запроса существует определенная дополнительная нагрузка на процессор, превышающая затраты на ввод-вывод. Наличие нескольких вспомогательных процессоров в этом случае, несомненно, будет иметь значение.

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

0 голосов
/ 07 мая 2009

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

...