Ядра — чистый изумруд.
Зачем нужны мультипроцессорные серверы? Для чего производят двухпроцессорные серверы? Где используют четырёхпроцессорные и восьмипроцессорные серверы?
Попробую сформулировать, что такое мультипроцессорный (многопроцессорный) сервер.
Мультипроцессорный сервер — сервер с двумя и более связанными центральными процессорами под управлением одной операционной системы.
Есть три вида мультипроцессорных серверов:
- UMA (Uniform Memory Access) — архитектура с однородным доступом к памяти, или SMP-системы (Symmetrical Multi Processor systems). Все процессоры имеют доступ ко всей памяти.
- NUMA (NonUniform Memory Access) — архитектура с неоднородным доступом к памяти. У каждого процессора своя память.
- СОМА (Cache Only Memory Access) — архитектура с доступом только к кэш-памяти. У каждого процессора своя память, но общий кэш.
На практике мне приходилось работать только с NUMA архитектурой. Здесь у каждого процессора свой набор слотов оперативной памяти.
Процессоры, потоки, ядра
Центральный процессор — устройство, исполняющее машинный код. Это главная часть аппаратного обеспечения компьютера.
Центральный процессор (процессор) может быть встроен в материнскую плату или установлен в специальный разъём — сокет. В двухпроцессорном сервере, соответственно, два сокета.
Ядро процессора — физически обособленная часть процессора, способная в единицу времени выполнять один набор команд.
Процессор с восемью ядрами может одновременно выполнять восемь наборов команд. Процессор с двенадцатью ядрами — двенадцать.
Поток — реализация параллельных вычислений внутри ядра процессора. При определённых рабочих нагрузках использование потоков позволяет увеличить производительность процессора.
Поток может носить названия: гиперпоток, HyperThread (HT), thread, виртуальное ядро, логический процессор. Операционная система отображает поток как отдельный логический процессор.
Применение мультипроцессорных серверов
Я на собственном опыте выделил несколько основных направлений, при которых может потребоваться использование мультипроцессорных серверов.
Компактность
Миниатюризация компьютерной техники выражается не только увеличением количества транзисторов на кристалл. Бизнесу нужно впихнуть как можно больше производительных серверов в одну стойку. Центрам обработки данных требуется разместить как можно больше ресурсов на квадратный метр площади.
Поэтому инженеры постарались и придумали, как один сервер превратить в больше чем один. Использование мультипроцессорных серверов позволяет сократить издержки.
Виртуализация
С помощью технологии виртуализации на одном физическом сервере-гипервизоре можно разместить несколько десятков мелких виртуальных серверов. Чем больше потоков, ОЗУ и дисков, тем больше виртуальных машин разместится. Эксплуатации и системным администраторам становится проще обслуживать и администрировать парк техники.
Базы данных
Увеличение количества ядер напрямую влияет на повышение производительности сервера, а высоконагруженные БД требуют высокой производительности.
PCIe комбайн
Число линий PCI Express, с которыми может взаимодействовать процессор, ограничено. Если вам требуется сервер с несколькими GPU платами, или просто планируется много PCIe плат, то для этих целей более привлекательны именно мультипроцессорные серверы.
Терминальный сервер
Много где советуют использовать мультипроцессорные серверы в качестве терминальных. Я не согласен. Лучше сделать гипервизор, а уже на нём разместить терминальный сервер. Два гипервизора уже позволяют мигрировать терминальный сервер и обеспечивают возможность проведения технических работ на серверах без простоя. Плюс снапшоты. Плюс резервное копирование на лету. Плюс возможность размещения дополнительных виртуальных машин.