Подтвердить что ты не робот

Можно ли использовать ramdisk на сервере сборки?

В моей компании мы в настоящее время изучаем различные стратегии ускорения наших CI-сборок. Мы профилировали наши сборки и определили, что мы ограничены узким местом ввода-вывода. У нас есть довольно много вариантов, чтобы справиться с этим в ближайшем будущем (~ 1-2 месяца), но сейчас хотелось бы увидеть улучшение.

Я предложил использовать ramdisk в качестве местоположения checkout и buildfile. Разумеется, выходы сборки и журналы будут храниться на физическом диске.

Это разумная вещь или есть существенные недостатки этого подхода? Я не ищу ответов, которые касаются аппаратной части вещей, а не взаимодействия между общими системами сборки (например, MSBuild) и ramdisk, что вызовет какие-либо проблемы, и если есть другие риски, о которых я должен знать.

4b9b3361

Ответ 1

Пока у вас достаточно памяти, это очень разумная вещь.

Единственным реальным недостатком, естественно, является то, что ваша сборка теряется при отключении/сбое питания, что обычно не представляет большой проблемы для сборки CI.

Ответ 2

Я просто провел несколько тестов на моем "сервере сборки" (на самом деле Powershell script), который проверяет 3600 файлов из Subversion, компилирует их (DOT.NET) и запускает некоторые тесты единиц.

На моем обычном (не супер быстром) жестком диске процесс занимает 35 секунд.

Использование инструмента Dataram RamDisk с установкой по умолчанию FAT32 в Windows 7 занимает 45 секунд.

Преобразование его в NTFS приводит к тому, что до 30 секунд.

Но использование SSD (в моем случае OCZ Vertex 2) занимает всего 27 секунд.

Я сделал несколько тестовых прогонов, но времена всегда одни и те же.

Что мы можем извлечь из этого?

Рам-диск не всегда быстрее, убедитесь, что вы тестируете разные продукты с разными настройки.

Твердотельный накопитель может быть даже быстрее, чем RAM-диск, который меня удивил.