Автор: Paul Randal, SQL Server 2008: Hot-Add CPU (and affinity masks)
Короткая заметка сегодня, так как я готовлюсь к выступлению на собрании пользовательской группы SQL Server в Тихоокеанском Северо-Западе сегодня вечером в кампусе Microsoft в Редмонде.
SQL Server 2005 представил концепцию горячего добавления памяти (hot-add memory) для динамической обработки рабочей нагрузки. SQL Server 2008 расширяет эти возможности, добавляя также горячее добавление ЦП (hot-add CPU). Начиная с SQL Server 2025 (17.x), функция горячего добавления ЦП не рекомендуется и планируется удалить в будущей версии SQL Server. «Горячее добавление» означает возможность установить ЦП в работающую машину и затем перенастроить SQL Server для использования этого ЦП ONLINE (т.е. без какого-либо простоя приложения).
Существует несколько ограничений:
- Вам нужна 64-битная система, поддерживающая горячее добавление ЦП (очевидно :-))
- Вам нужна Enterprise Edition с SQL Server 2008
- Вам нужна Windows Server Datacenter или Enterprise Edition
Когда вы подключаете новый ЦП, SQL Server не начинает автоматически его использовать. Если подумать, это и не может произойти — возможно, вы не хотите, чтобы этот ЦП использовался SQL Server — поэтому ему нужно сообщить, что он может его использовать. Это делается путём установки соответствующих масок привязки (affinity masks) и последующего выполнения RECONFIGURE.
Теперь мы подошли к той части, которая добавляет в заголовок «и маска привязки». Что такое маска привязки? В двух словах, это битовая карта всех ЦП на машине, которая определяет, какие из них доступны для общего использования движком SQL Server, а какие — только для ввода-вывода SQL Server. Существует два вида масок: обычная маска привязки (regular affinity mask) и маска привязки ввода-вывода (affinity I/O mask). Обычная маска привязки, если все биты равны нулю, означает, что Windows решает, кто какой ЦП получает. Если маска привязки ненулевая, то на каждый ЦП приходится один бит. Если бит установлен в 1, SQL Server может использовать этот ЦП. Если бит установлен в 1 в маске привязки ввода-вывода, то этот ЦП может использоваться только для ввода-вывода. Один бит не может быть установлен в обеих масках. Теперь: маска привязки имеет ширину 32 бита, поэтому если у вас более 32 ЦП, вам нужно использовать ещё две маски привязки, называемые affinity64 и affinity64 I/O. Они делают то же самое, но для ЦП 32–63 на машине.
Итак, очень круто, особенно для тех, кто может позволить себе такое оборудование — я не могу, поэтому у меня нет сервера для тестирования (64-битный сервер, который у нас есть в SQLskills, не поддерживает эту функцию).

Комментариев нет:
Отправить комментарий