Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Мне всегда было интересно (и не только мне) есть ли смысл запуска 1С в диске из оперативной памяти, потому что если посмотреть на графики скорости чтения различных типов накопителей, то преимущества очевидны:
Виртуальный диск из ОЗУ демонстрирует огромное преимущество над любым типом дисков, даже если бы мы использовали SSD с поддержкой NVMe PCI-E x4 мы бы не смогли получить особого преимущества перед диском из оперативной памяти, так как это позволило бы только увеличить скорость записи больших файлов с 3521 Мб/сек до 5000, что все равно далеко от скоростей RAMDisk, но никак не повлияло бы на скорости мелких файлов и секторов, а в нашем случае это имеет важное значение. Кажется, что тестирование проводить смысла нет – исходя из графика сразу понятно кто аутсайдер, и кто победитель: заранее скажу что в целом – да, но не везде и не всегда а жесткие диски списывать со счетов рано.
В связи с этим я решил сравнить скорость быстродействия 1C:Предприятие в различных способах управления информационной базой 1С: файловый вариант, MS SQL и POSTGRES. Тестирование проводилось поочередно на каждом из четырех накопителей. В качестве замера производительности применял два теста – перепроведение документов за одинаковый отрезок времени и формирование оборотной ведомости за 6 лет, различные синтетические тесты и «замеры производительности» не проводились ввиду того что они не всегда точно отображают реальную производительность.
В качестве тестового стенда применялся компьютер следующей конфигурации:
CPU | AMD Ryzen R9 3900X (12 ядер, 24 потока, 3800МГц) |
RAM | 32 Гб DDR4 Kingston FURY 2666МГц (4*8ГБ) |
HDD | 1ТБ Seagate 1000DM003 |
SSD SATA | 500 Гб Samsung 870EVO |
SSD NVMe x3 | 500 Гб Samsung 970EVO |
OS | MS Windows Server 2019 Standard |
1С:Предприятие | Бухгалтерия для гос. Учреждений ПРОФ |
СУБД MS SQL | 2019 STANDARD |
СУБД POSTGRES SQL | 14.4-1.1C |
Тестирование начнём с самого простого способа управления информационной базой 1С:Предприятия – файловый (меньше – лучше, время в мин:сек):
То что жесткий диск оказался самым медленным способом обработки информации это ожидаемо, отставание SATA SSD от NVMe x3 составляет существенные 20%, а виртуальный диск из оперативной памяти хоть и самый быстрый, но разгромного преимущества перед NVMe x3 нет: выигрыш в скорости примерно 10%, несмотря на огромную разницу в скорости чтения и записи, что касается скорости в перепроведении документов ситуация уже не такая однозначная (меньше – лучше, время в мин:сек):
А вот и первый сюрприз: если с физическими накопителями всё закономерно, то в этот раз RAMDisk оказался самым медленным – я повторил тестирование три раза но ничего не поменялось, возможно, проблема имеет общие корни с программными RAID массивами. Но при этом стоит обратить внимание, что здесь жесткий диск уже не кажется безнадежно устаревшим вариантом.
Теперь перейдём к тестированию варианта взаимодействия с информационной базой 1C:Предприятия через СУБД MS SQL 2019:
СУБД SQL от Microsoft показывает отличную оптимизацию обработки информации по сравнению с файловым вариантом, в целом можно сказать что все время формирования отчёта для SSD обоих типов и RAMDisk одинаково и лежит в пределах погрешности, но если жесткий диск справился почти в 5 раз быстрее (+500%), то для SSD прирост скорости составил 100% для NVMe x3 и 250% для SATA SSD. Прирост скорости для RAMDisk составил «скромные» 75%.
Здесь сохраняется логичное преимущество твердотельных накопителей над жестким диском, но диск из ОЗУ начинает демонстрировать недостатки программной эмуляции накопителя.
Чтобы получить результаты наиболее объективным, я решил проверить теорию влияния скорости на работу СУБД когда журналы пользователей и база данных хранятся на разных дисках, но это никак не повлияло на скорость формирования отчетов.
Теперь проверим быстродействие 1С:Предприятие с POSTGRES:
POSTGRES SQL показывает отличную масштабируемость в зависимости от типа диска и, что необычно, формирование отчёта с СУБД POSTGRES при разворачивании базы на жёстком диске оказывается быстрее в 1,5 раза по сравнению с СУБД от Microsoft. Но если смотреть на график относительно твердотельных накопителей (SSD), то, конечно, Microsoft SQL предпочтительнее. В случае с RAMDisk разницы нет.
Последний тест отлично показывает отсутствие целесообразности использования RAMDisk для размещения СУБД. Так как этот диск виртуальный и он создаётся посредством программного обеспечения, то наблюдается аналогия с программными и аппаратными RAID массивами: программные массивы обслуживаются вычислительными мощностями ЦП, стабильность и скорость работы целиком зависит от грамотности и правильности кода соответствующего программного обеспечения для создания диска из ОЗУ, аналогичная ситуация справедлива и для физических дисков: когда для создания RAID массивов применяется аппаратные средства, снимается с ЦП задачи по обслуживанию RAID, что положительно сказывается на общей производительности массива и отпадает зависимость от качества работы программного обеспечения сторонних разработчиков. В случае создания виртуального диска из оперативной памяти используется программное обеспечение, что накладывает определенные ограничения на работу данного диска, что и подтверждает тестирование – чёткой стабильности в производительности нет в отличие от физических накопителей. Но, как бы то ни было, последний тест в очередной раз подтверждает преимущество NVMe SSD накопителя перед другими типами дисков.
Проведенное тестирование показало преимущество СУБД MS SQL над POSTGRES и общее преимущество обоих типов СУБД над классическим способом работы 1С:Предприятие – файловым. Смысла использования RAMDisk нет от слова совсем – да, прирост в скорости в файловом варианте составляет примерно 12% от самого быстрого диска, но экономической целесообразности нет - в среднем 32 Гб ОЗУ DDR4 стоит 180$, а 500 Гб SSD NVMe x3 (в тестировании применялся SSD Samsung 500 Гб 970EVO) стоит 120$, разница в стоимости при пересчете Гб/$ составляет 5,6$ за гигабайт для ОЗУ и 0,24$ за гигабайт для SSD. Переплата в 23 раза (2300%) ради 12% производительности лишь в нескольких случаях смысла не имеет.
Отдельного внимания заслуживает СУБД POSTGRES SQL – в отличие от СУБД Microsoft она бесплатная но в среднем увеличивает скорость работы с 1С в два раза, на мой взгляд неплохое предложение для недорогого (не забываем что необходимо для любого варианта использования SQL требуется приобретение лицензии на сервер 1С) но эффективного ускорения работы 1С:Предприятие. Что касается СУБД Microsoft SQL Server – это самый быстрый и эффективный способ обработки информации в 1С:Предприятие, да, он не бесплатный но даёт прирост до 50% по сравнению с POSTGRES.
Что касается дисков, то, разумеется, SSD новейших форматов NVMe x3 (и x4) является наиболее предпочтительным вариантом - этот тип диска в связке с СУБД MS SQL даст наибольший прирост производительности, но если у вас стоит задача создать максимально производительный сервер 1С с минимальными затратами – можете смело использовать связку POSTGRES и старый добрый HDD.
В заключение, предлагаю ознакомиться с краткой таблицей сравнительного тестирования:
Тип работы | Формирование оборотной ведомости | Перепроведение документов | Рейтинг производительности |
MS SQL + NVMe SSD | 0:18 | 2:40 | 1 |
MS SQL + SATA SSD | 0:19 | 3:02 | 2 |
MS SQL + RAMDisk | 0:20 | 3:29 | 3 |
POSTGRES + NVMe SSD | 0:27 | 4:53 | 4 |
POSTGRES + SATA SSD | 0:35 | 5:03 | 5 |
POSTGRES + RAMDisk | 0:19 | 5:50 | 6 |
MS SQL + HDD | 1:18 | 4:21 | 7 |
POSTGRES + HDD | 0:52 | 5:20 | 8 |
NVMe SSD | 0:39 | 10:52 | 9 |
RAMDisk | 0:35 | 12:55 | 10 |
SATA SSD | 0:48 | 11:50 | 11 |
HDD | 6:21 | 12:53 | 12 |