При сборке серверов для 1С многие администраторы сталкиваются с парадоксальной ситуацией. Приобретая современные, дорогие и высокоскоростные NVMe SSD (например, Kingston KC3000 или Samsung 980 PRO), которые в синтетических тестах вроде CrystalDiskMark показывают феноменальные 7000 МБ/с, в реальных задачах 1С или специализированных тестах (например, тест Гилёва) скорость оказывается удручающе низкой. При этом более дешевые или старые модели дисков могут показывать результаты в разы лучше. Давайте разберемся в причинах этого явления, проанализируем техническую подоплеку и рассмотрим способы решения.
Рассмотрим типичный сценарий. Мы устанавливаем высокопроизводительный диск Kingston KC3000 или Samsung 980 PRO. Запускаем стандартные бенчмарки — видим отличные показатели линейного чтения и записи. Однако при запуске теста производительности Гилёва (TPC 1C) мы наблюдаем следующую картину:
Мы видим, что проблема не в процессоре, не в оперативной памяти и не в настройках BIOS по умолчанию. Проблема кроется в том, как именно современные потребительские контроллеры SSD и операционная система обрабатывают специфические команды записи, характерные для баз данных.
Чтобы понять, почему "быстрый" диск работает медленно в 1С и SQL, нам нужно углубиться в механизм записи данных. Системы управления базами данных (MSSQL, PostgreSQL), используемые 1С, критически относятся к сохранности данных. Чтобы гарантировать, что транзакция не пропадет при внезапном отключении питания, СУБД отправляет команду записи с флагом FUA (Force Unit Access).
Этот флаг говорит диску: "Не держи эти данные в своем быстром кэше (DRAM), запиши их сразу в постоянную память, чтобы они точно сохранились".
Здесь и кроется фундаментальное различие между серверными (Enterprise) и потребительскими (Consumer) SSD:
Тест Гилёва, как и реальная работа 1С, генерирует множество мелких транзакций. На потребительских дисках это приводит к тому, что очередь записи забивается ожиданием физического сброса данных, и производительность падает.
Еще один важный фактор — драйверы. Ранее производители (например, Samsung для серии 970) выпускали собственные NVMe-драйверы. Они могли оптимизировать обработку команд, иногда игнорируя строгие требования FUA в угоду производительности.
Однако, начиная с моделей 980 PRO, Samsung и другие вендоры отказались от своих драйверов в пользу стандартного драйвера Microsoft NVMe, встроенного в Windows. Стандартный драйвер Microsoft очень строго соблюдает протокол: если пришла команда FUA, он требует честной записи на диск. Именно поэтому на новых ОС (Windows Server 2022, 2025) и новых дисках мы видим просадку производительности, которой не было на старых связках.
Самым действенным программным способом решения проблемы на потребительских дисках является изменение политики кэширования. Рассмотрим, как это сделать:
После применения этой настройки операционная система перестанет посылать команды принудительного сброса кэша (flush) на диск после каждой транзакции. Результаты тестов (и теста Гилёва в частности) сразу возвращаются к высоким значениям: скорость записи возрастает, загрузка диска падает до 5-10%.
ВАЖНОЕ ПРЕДУПРЕЖДЕНИЕ: Включая эту опцию, вы берете на себя серьезный риск. Если в момент активной записи произойдет сбой питания или зависание системы (BSOD), данные, находящиеся в кэше диска, не успеют записаться в постоянную память. Это с высокой долей вероятности приведет к разрушению базы данных (corruption). Использовать этот метод на продуктивном сервере можно ТОЛЬКО при наличии надежного ИБП (UPS), который корректно завершает работу сервера при отключении электричества, и стабильной аппаратной платформы.
В некоторых случаях, особенно на старых версиях ОС, помогает манипуляция с драйверами. Пользователи отмечают следующее поведение:
Однако на современных ОС (Windows Server 2025, Windows 11 24H2) этот метод работает всё хуже из-за изменений в архитектуре подсистемы хранения данных Microsoft.
В ходе практических тестов выяснилось интересное различие между брендами:
Подводя итог, можно сказать, что использование топовых потребительских SSD в серверах 1С — это компромисс.