5

Я читал о том, как пользовательские потоки отображаются в потоках ядра в Википедии. Из этой статьи я понимаю, что FreeBSD использует 1:1 (многопоточность на уровне ядра).

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

Я прочитал этот вопрос Ядра процессора: чем больше, тем лучше?, но я хочу, чтобы на объем ответов определенно повлияло отображение 1: 1 между потоками пользователя и ядра.

3 ответа3

5

Короткий ответ: да.

Длинный ответ: иметь больше процессорного ядра означает больше вычислительной мощности. В случае веб-приложения PHP / Ruby / Python / и т.д. Это означает больше ресурсов для обработки одновременных соединений. Наличие большего количества ядер действительно имеет значение в случае приложения с большой нагрузкой.

Мое личное мнение таково, что в случае выбора между большей вычислительной мощностью и большим количеством оперативной памяти, я выбираю больше оперативной памяти в большинстве случаев. С оперативной памятью вы можете уменьшить узкое место, которое представляет собой дисковый ввод-вывод.

Используя системы кеширования, такие как PHP APC, Varnish и MySQL, настраивающие (кеш таблиц, кеш запросов и т.д.), Вы можете значительно повысить производительность своего веб-сайта без необходимости в большей мощности ЦП для генерации контента.

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

1

Да.

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

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

1

Как обычно, ответ будет, что это зависит.

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

Как вы можете видеть из связанных измерений производительности, многопоточный веб-сервер Apache порождает больше потоков и использует больше памяти, если количество одновременных подключений увеличивается. Объем используемой nginx памяти остается довольно постоянным. А по количеству запросов в секунду nginx значительно превосходит apache.

Так что темы не всегда лучшее решение.

Производительность также зависит от того, где находятся ваши данные. Если он припаркован на жестком диске, доступ будет медленным по сравнению с тем, когда он находится в ОЗУ, что, в свою очередь, намного медленнее, чем кеш процессора. Если вы хотите ускорить работу вашего веб-сервера, рассмотрите возможность использования ускорителя, такого как лак. Вы можете прочитать эту статью основного автора лака о производительности в веб-обслуживании. Сообщение здесь заключается в том, что вам следует использовать встроенные механизмы синхронизации операционной системы и не пытаться делать то же самое самостоятельно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .