Когда я смотрю на балансировку нагрузки, все, что я вижу, говорит о распределении трафика на несколько серверов. Я выполнил поиск в Google по словам «один сервер» и «один сервер» в этом контексте и не нашел ничего подходящего.
Я знаю, что операционная система может выполнять собственную балансировку нагрузки (ядра на процессоре), а процессоры также выполняют свою собственную балансировку нагрузки (виртуальные ядра). Я знаю, что вы также можете направлять потоки в ядра через программное обеспечение.
Итак, если у вас есть один сервер (1 стойка или 2), который может обрабатывать нагрузку TCP / IP, с которой вы будете иметь дело, поддерживает ли операционная система на сервере все ядра работающими или это необходимо обрабатывать с помощью программный (или аппаратный?) балансировщик нагрузки? Конкретное приложение включает в себя веб-трафик, а также компанию, запускающую программное обеспечение ERP на сервере для своих сотрудников.
Я думаю, что вы ищете терминологию «многозадачность». Windows Server 2008 - это многозадачная операционная система, которая запускает несколько процессов параллельно. По умолчанию ОС будет распределять нагрузку по доступным ядрам / потокам. Вам не нужен балансировщик нагрузки
Аппаратное обеспечение предоставляет ядра ЦП для выполнения инструкций, и инструкции могут быть направлены на определенные ядра, но фактическое принятие решения о том, какие инструкции переходят к какому ядру (так называемое `` планирование ''), обрабатывается ядром ОС, а не оборудование.
На практике, с точки зрения системного администратора, это не то, о чем вам нужно беспокоиться. Как упоминалось в комментарии ivanivan, почти любое современное серверное программное обеспечение является многопоточным, то есть написано для использования преимуществ нескольких ядер, и даже если вы имеете дело с однопоточными приложениями, ядро все равно будет запускать разные программы ( и разные экземпляры одной и той же программы) на разных ядрах. В зависимости от ОС, возможно, вы получите небольшое улучшение производительности, указав ядру использовать другой планировщик, отличный от заданного по умолчанию (ядра * NIX обычно имеют несколько скомпилированных на выбор), но нет, вам определенно не нужно добавьте любое оборудование для управления этим, и, за исключением некоторых действительно необычных рабочих нагрузок (которые у вас нет), обычно лучше оставить только планировщик по умолчанию.
Вопреки ответу Иэна, многозадачность на самом деле это широкий термин, который охватывает любой метод, с помощью которого компьютер может выполнять более одной программы одновременно. Многозадачность была широко распространена в одноядерных системах на протяжении десятилетий с использованием подхода с разделением времени, при котором ядро запускает (или технически отправляет в ЦП для выполнения) несколько инструкций из программы A, а затем несколько инструкций из программы B. и т. д. и продолжает циклически перебирать все запущенные программы в циклическом стиле.
То, о чем вы спрашиваете, правильно называется многопоточностью или параллельной обработкой. Вы можете использовать одноядерную многозадачность, как описано выше. У вас также может быть обратное, когда одна программа выполняет задачу, не зависящую от порядка, в котором завершаются составляющие части задачи, например сжатие группы фрагментов файла. Ядро вполне может разделить эти инструкции по сжатию фрагментов между разными ядрами (что означает, что оно многопоточное), но все эти потоки исходят от одной и той же «задачи», которая представляет собой одну программу, сжимающую файл. Многозадачность и многопоточность связаны, но не взаимозаменяемы.
Страница Википедии Поток (вычисления) подробно разбирает это, включая небольшой раздел под названием «Потоки против процессов», в котором рассматривается путаница между многозадачностью и потоками.
Предлагаемые условия поиска, чтобы найти дополнительную информацию по этому вопросу (не утонув в нерелевантных результатах, касающихся балансировки сетевой нагрузки между различными серверами):
И если вы хотите столкнуться с проблемами и ловушками, письмо многопоточное программное обеспечение, найдите «поточно-ориентированное программирование».