Запуск SQL Server на виртуальной среде предоставляет гибкость добавления дополнительных виртуальных процессоров (vCPUs) на виртуальный сервер без прерывания работающих процессов. Однако SQL Server должен иметь возможность обнаруживать и использовать эти горяче добавленные vCPUs. В этой статье мы рассмотрим, как SQL Server обнаруживает и использует горяче добавленные vCPUs на виртуальном сервере.
Требования к аппаратному и программному обеспечению
Для использования горяче добавленных vCPUs необходимо выполнить определенные требования к аппаратному и программному обеспечению. Версии SQL Server 2008 и выше имеют возможность поддержки горячего добавления процессоров. Независимо от того, является ли vCPUs горяче добавленным онлайн или добавлен через физическое оборудование или онлайн-разделение оборудования, методология остается неизменной.
Включение горяче добавленных vCPUs в SQL Server
По умолчанию SQL Server не начинает автоматически использовать горяче добавленные vCPUs, когда они представлены виртуальному серверу. Чтобы SQL Server начал использовать горяче добавленные vCPUs онлайн, необходимо выполнить команду RECONFIGURE каждый раз, когда vCPU горяче добавляется. Эта команда позволяет SQL Server создать планировщик для горяче добавленного vCPU.
Симуляция рабочей нагрузки для виртуальной машины SQL Server
Чтобы лучше понять процесс, давайте смоделируем выполнение рабочей нагрузки на виртуальном сервере с установленным SQL Server. Мы можем создать интенсивную нагрузку на процессор, производя декартово произведение строк из одной и той же таблицы. Это нагрузит vCPUs на виртуальном сервере и покажет необходимость в дополнительных vCPUs.
IF OBJECT_ID('tempdb..#temp', 'U') IS NOT NULL DROP TABLE #temp
GO
SELECT a.*
into #temp
FROM master.dbo.spt_values a
CROSS JOIN master.dbo.spt_values b
CROSS JOIN master.dbo.spt_values c
CROSS JOIN master.dbo.spt_values d
GO
Наблюдение за использованием vCPU в диспетчере задач Windows покажет полную загрузку, указывающую на необходимость в дополнительных vCPUs.
Проверка аффинности процессора SQL Server
Перед добавлением нового vCPU важно проверить страницу свойств процессора SQL Server, чтобы узнать, как SQL Server настроен в настоящее время. Если доступен только один vCPU, SQL Server не позволит установить маску аффинности процессора.
Проверка планировщиков SQL Server
DMV (Dynamic Management View) планировщиков SQL Server можно использовать для подтверждения количества доступных планировщиков. Каждый планировщик сопоставлен с отдельным процессором. Если доступен только один планировщик, SQL Server пока не сможет использовать горяче добавленный vCPU.
SELECT * FROM sys.dm_os_schedulers
GO
Добавление нового vCPU в SQL Server
Администратор виртуальной машины теперь может горяче добавить новый vCPU на виртуальный сервер без прерывания работающих процессов. После добавления vCPU он будет виден в диспетчере задач Windows.
Однако, даже после добавления нового vCPU, SQL Server по-прежнему не использует его. Это происходит потому, что SQL Server должен быть запущен для обнаружения горяче добавленного vCPU в качестве ресурса.
Выполнение RECONFIGURE для обнаружения горяче добавленного vCPU в SQL Server
Выполнение команды RECONFIGURE вызовет обнаружение горяче добавленного vCPU в SQL Server в качестве ресурса. После выполнения команды страница свойств процессоров SQL Server покажет горяче добавленный vCPU как CPU1.
RECONFIGURE
GO
Проверка DMV планировщиков SQL Server снова покажет, что SQL Server создал планировщик для горяче добавленного vCPU.
SELECT * FROM sys.dm_os_schedulers
GO
Несмотря на то, что горяче добавленный vCPU теперь виден SQL Server, запрос рабочей нагрузки все равно может не показывать улучшенную производительность. Это может быть связано с выполнением запроса в последовательном режиме или с одним потоком. Важно понимать рабочую нагрузку и определить, действительно ли добавление дополнительных vCPUs улучшит производительность.
Симуляция рабочей нагрузки OLTP для использования нескольких процессоров
Для симуляции рабочей нагрузки OLTP мы можем выполнить запрос с использованием нескольких сеансов запросов, которые выполняют INSERT во временную таблицу. SQL Server интеллектуально распределит нагрузку между доступными планировщиками.
CREATE TABLE #test
(
col1 int NOT NULL IDENTITY (1, 1),
col2 varchar(50) DEFAULT 'test values',
col3 datetime DEFAULT GetDATE()
)
GO
SET NOCOUNT ON
WHILE 1 = 1
INSERT INTO #test DEFAULT VALUES
Наблюдение за использованием vCPU в диспетчере задач Windows покажет увеличенную загрузку на обоих процессорах, что указывает на то, что SQL Server эффективно использует горяче добавленный vCPU.
Заключение
Понимание того, как SQL Server обнаруживает и использует горяче добавленные vCPUs на виртуальном сервере, является важным для оптимизации производительности. Следуя описанным в этой стать