Настройка BIOS серверов и узлов NUMA для максимальной производительности 1С
Архитектура СУБД/1С и влияние «железа» (Hardware)
Платформа 1С:Предприятие (в связке с MS SQL Server или PostgreSQL) является крайне требовательной к однопоточной производительности процессора (CPU Single-Thread) и латентности оперативной памяти (RAM Latency). Если мощный многоядерный сервер настроен по умолчанию (в угоду энергосбережению), ядро Windows будет парковать ядра, сбрасывать частоты (C-States), а потоки rphost будут хаотично прыгать между процессорами (NUMA-узлами), ожидая доступа к чужой памяти. Симптомы: Тест Гилёва показывает низкий балл (TFP < 20), пользователи жалуются на тормоза при проведении документов, в SQL Server растут таймауты ожиданий (SOS_SCHEDULER_YIELD, CXPACKET). Бизнес-риски: деградация производительности всей компании в периоды пиковых нагрузок (закрытие месяца).
Влияние энергосбережения на 1С
| Функция процессора/BIOS | Поведение по умолчанию (Экология) | Влияние на 1С / СУБД |
|---|---|---|
C-States (C1E, C6) | Отключает питание простаивающих ядер. | Задержка пробуждения ядра (Latency) при внезапном запросе 1С. Микрофризы. |
Intel SpeedStep / AMD Cool'n'Quiet | Динамически снижает частоту CPU (до 1.2 ГГц). | Медленное выполнение однопоточного кода (формирование отчета). |
NUMA Node Interleaving | ОС видит все процессоры и память как единый пул (UMA). | Огромные задержки при доступе потока CPU 1 к памяти, подключенной к CPU 2. |
Алгоритм аппаратной оптимизации сервера (Best Practices)
Сценарий 1: Настройка BIOS / UEFI (Отключение энергосбережения)
Для серверов БД и приложений 1С необходимо выставить профиль максимальной производительности.
- Зайдите в BIOS сервера (HP iLO, Dell iDRAC, Cisco UCS).
- Найдите раздел Power Management (System Profile Settings).
- Установите профиль: Maximum Performance (или Custom).
- Принудительно ОТКЛЮЧИТЕ (Disable) следующие параметры:
- C-States (C1E, C3, C6, Package C-State)
- Intel SpeedStep / AMD PowerNow!
- Energy Efficient Turbo (Оставьте обычный Turbo Boost ВКЛЮЧЕННЫМ)
- Включите Hyper-Threading (для SQL Server это полезно, для сервера 1С — опционально, но лучше оставить).
Сценарий 2: Настройка плана электропитания в Windows Server
Если BIOS отдал управление питанием операционной системе (OS Control), нужно настроить саму Windows.
1. Откройте командную строку (CMD) от администратора.
2. Принудительно включите план "Высокая производительность" (High Performance):
powercfg /s 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635cСценарий 3: Управление топологией NUMA
Если в сервере 2 или 4 процессора, оперативная память физически привязана к конкретному CPU. Доступ к «чужой» памяти медленнее (QPI/UPI link).
- Для сервера MS SQL Server: NUMA должна быть ВКЛЮЧЕНА (Node Interleaving = Disabled). SQL Server умеет работать с NUMA (Soft-NUMA) и сам распределяет потоки. Главное — выставить в свойствах SQL Server (Max Server Memory) значение, чтобы не было свопинга.
- Для сервера 1С:Предприятия (rphost): Кластер 1С до версии 8.3.22 плохо понимал NUMA. Рабочие процессы (rphost) могли захватить память на соседнем узле. Рекомендуется настраивать кластер 1С так, чтобы один rphost не потреблял больше памяти, чем есть в одном физическом узле NUMA (например, ограничивать память процесса до 32-64 Гб).
Типовые ошибки администраторов
- Покупка процессоров с 64+ ядрами, но низкой базовой частотой (2.0 ГГц): 1С не умеет параллелить проведение одного документа на 64 ядра. Для 1С гораздо эффективнее серверный процессор с 8-16 ядрами, но базовой частотой 3.5 ГГц+ (например, Intel Xeon Gold 'Frequency Optimized').
- Размещение СУБД и 1С на одном сервере без ограничения памяти: MS SQL Server по умолчанию попытается «съесть» всю ОЗУ (до 2 ТБ). Процессам rphost.exe не останется памяти, и Windows начнет скидывать их в файл подкачки (pagefile.sys). Обязательно ограничивайте Max Server Memory в SQL (оставляя 15-20% RAM для ОС и 1С).
Проблема не в железе, а в настройках стека "Железо -> Гипервизор -> ОС -> СУБД -> 1С". Эксперты ITSTM проведут комплексный аудит производительности (по методике APDEX), настроят vNUMA в VMware/Hyper-V и заставят ваши серверы отрабатывать каждый вложенный рубль.
Частые вопросы (FAQ)
Почему Тест Гилёва выдает низкий результат в виртуальной машине (VMware/Hyper-V)?
Помимо BIOS хост-сервера, энергосбережение может работать на уровне гипервизора. В VMware vSphere необходимо в настройках Host -> Manage -> Hardware -> Power Management установить 'High Performance'. Также огромную роль играет правильная настройка vNUMA для виртуальной машины.
Нужно ли отключать Hyper-Threading для 1С?
Спорный вопрос. Сервер приложений 1С (rphost) в основном потребляет CPU при вызовах. Отключение HT (оставление только физических ядер) может дать прирост в 5-10% в однопотоке (Тест Гилёва), но при сотнях пользователей (высокий concurrency) включенный HT позволяет обрабатывать больше контекстов.
Как проверить, что ядра не паркуются в Windows?
Откройте Монитор ресурсов (resmon.exe), вкладка ЦП. Если справа на графиках ядер есть надписи 'Парковка' (Parked), значит энергосбережение активно и план 'Высокая производительность' не применился (или заблокирован политиками домена/BIOS).
Что такое Lock Pages in Memory?
Это политика Windows (Local Security Policy). Для сервера СУБД (SQL/Postgres) сервисному аккаунту ОБЯЗАТЕЛЬНО нужно выдать право 'Блокировка страниц в памяти'. Это запретит ядру Windows сбрасывать кэш базы данных из быстрой ОЗУ в медленный файл подкачки на диск.