При администрировании серверов 1С и СУБД специалисты часто сталкиваются с удивительным парадоксом. Чистая физическая машина с мощным процессором, большим объемом оперативной памяти и быстрыми дисками показывает в тесте производительности 1С (тесте Гилева) более скромные результаты, чем виртуальная машина Hyper-V, развернутая на этом же самом железе. Более того, при переходе с серверной операционной системы Windows Server на обычную десктопную Windows 10 «попугаи» производительности резко возрастают.
В этой статье мы подробно и по шагам разберем внутреннюю архитектуру Windows, планировщика задач и дисковой подсистемы, чтобы понять, почему возникают такие аномалии, и как правильно настроить физический сервер для достижения максимальной скорости работы 1С.
Для того чтобы понять, почему физический хост может уступать виртуальной машине, разберем архитектуру гипервизора Microsoft. Когда на операционной системе Windows Server активируется роль Hyper-V, архитектура системы кардинально меняется. Сама хостовая ОС перестает работать напрямую на «железе». Она превращается в так называемый Root Partition (родительский раздел), который функционирует поверх микроядерного гипервизора наряду с гостевыми виртуальными машинами (Child Partitions).
Проанализируем разницу в их нагрузке:
Разберем, почему замена Windows Server на Windows 10 на одном и том же «железе» приводит к резкому росту производительности в тесте Гилева (в некоторых случаях — с 22 до 38 попугаев). Это напрямую связано с настройками планировщика операционной системы и распределением процессорного времени.
В операционных системах Microsoft Windows логика распределения квантов времени процессора регулируется системным значением Win32PrioritySeparation:
Тест производительности 1С критически зависит от скорости транзакционных записей в базу данных (операций фиксации транзакций в СУБД SQL Server). Выясним, почему виртуальный диск работает быстрее физического SATA/SAS:
На физическом сервере СУБД при фиксации транзакции отправляет ОС команду с флагом FILE_FLAG_WRITE_THROUGH. Это требует от дискового контроллера физически записать данные на энергонезависимый носитель и только после этого вернуть СУБД подтверждение успешности. Процесс останавливается и ждет физического отклика диска.
В виртуальной машине Hyper-V гостевая ОС взаимодействует с виртуальным дисковым контроллером (IDE или SCSI). При получении запроса на синхронную запись гипервизор часто перехватывает эти вызовы и выполняет их асинхронно, кэшируя операции ввода-вывода на уровне хоста. Гостевая операционная система моментально получает отчет «запись успешно завершена», хотя физически данные еще находятся в оперативной памяти физического сервера. Это дает огромную прибавку к скорости в синтетических тестах, но несет риски потери данных или разрушения базы данных при внезапном отключении электропитания хоста.
В серверных операционных системах Windows Server по умолчанию активен механизм Dynamic Fair Share Scheduling (DFSS). Его задача — обеспечить справедливое распределение аппаратных ресурсов (процессора, диска, сети) между пользователями и процессами, предотвращая монополизацию системы одним тяжелым процессом.
Когда тест производительности 1С запускается и начинает лавинообразно нагружать одно ядро процессора и дисковую подсистему, механизмы DFSS расценивают это поведение как угрозу стабильности всей системы. Служба начинает искусственно ограничивать (дросселировать) ресурсы для этого потока. В Windows 10 эта служба отсутствует, что позволяет тесту задействовать максимум производительности CPU без ограничений.
Еще один важный аспект работы процессоров на современных серверах — управление электропитанием и распределение потоков по ядрам:
Проанализируем ситуацию и настроим физический сервер Windows Server так, чтобы его производительность была максимальной и стабильной. Для этого выполним несколько шагов по оптимизации.
По умолчанию Windows Server паркует неиспользуемые ядра процессора и снижает их частоту. Изменим эти параметры:
Принудительно настроим серверную ОС на выделение коротких и приоритетных квантов времени, аналогично Windows 10. Это особенно актуально, если сервер используется исключительно под нужды 1С и SQL Server:
sysdm.cpl в окне «Выполнить»).Win32PrioritySeparation на оптимизированное под интерактивные приложения.Для предотвращения задержек при переходе ядер процессора из спящего режима в рабочий выполните настройки на уровне BIOS/UEFI физического сервера:
Если сервер 1С и СУБД SQL Server установлены на одной физической машине, взаимодействие между ними должно происходить через протокол общей памяти (Shared Memory), минуя сетевой стек TCP/IP:
Применение этих настроек позволит минимизировать системные накладные расходы Windows Server, убрать задержки на переключение контекста процессора и вывести производительность физического сервера на один уровень с оптимизированными десктопными ОС, сохранив при этом надежность серверной платформы.