эмулировать физический диск для ускорения выполнения? - PullRequest
3 голосов
/ 31 августа 2009

У нас есть командная строка exe, которая берет ввод из текстового файла и создает выходной текстовый файл. Используется для сложных промышленных симуляций.

Исходный код этого exe давно отсутствует. Теперь было достаточно легко создать оболочку .NET, которая контролирует выполнение этого exe-файла и связывается с внешним приложением через веб-сервис.

К сожалению, новым требованием является запуск оптимизации для этой модели черного ящика. Сейчас существуют различные методы для оптимизации черного ящика, но все они требуют вызова исполняемого файла тысячи (миллионы?) Раз. Очевидно, что создание и анализ дисковых текстовых файлов является узким местом процесса моделирования.

Можно ли как-нибудь обмануть этот исполняемый файл, чтобы он не записывал на физический диск? Если бы мы работали в Unix, я полагаю, что каналы подойдут, но наш сервер развертывания - Windows Server 03.

Мне только что пришло в голову, что ramdrive может решить эту проблему, но я не играл с одним из них со времен MS-DOS 6. Какие-нибудь коммерческие продукты стоит посмотреть? У кого-нибудь есть другие идеи для эмуляции физического диска через код? Мы на .NET 3.5.

Ответы [ 4 ]

1 голос
/ 23 декабря 2009
0 голосов
/ 01 января 2010

Если вы запускаете его на виртуальной машине, кэширование его виртуальных дисков является обязанностью хост-ОС ... это означает, что вы можете запустить свой сервер Windows внутри виртуальной машины на более или менее чем угодно и получить дополнительный уровень кэширования. Это работает в окружающей среде?

0 голосов
/ 31 августа 2009

Если вы работаете в Vista, есть коммерческий продукт Ramdisk , который может подойти. Версия x64 может понадобиться, если ваша система уже использует большую часть своей памяти, чтобы убедиться, что вам не придется слишком много менять страницы.

Другой вариант - потратить немного денег на диск со скоростью 15000 об / мин или SSD (твердотельный диск), хотя это будет медленнее, чем у RAM-диска.

В долгосрочной перспективе, хотя это может быть дешевле, перепроектировать инструмент обработки и переписать его с нуля, чтобы избежать узких мест.

0 голосов
/ 31 августа 2009

Возможен конвейерный вывод в окнах - , если , исполняемый файл генерирует вывод только для стандартного выхода, вы можете использовать это.

Если он действительно записывает в файл: поскольку Windows кэширует запись в файловой системе, я мог бы представить, что просто записываем, а затем удаляем небольшие файлы почти так же быстро, как виртуальный диск. Вы действительно пытались запустить программу с реалистичной скоростью, удаляя все выходные данные после запуска? Если вы следите за загрузкой процессора и дисковой очередью, вы должны понять, достаточно ли простого кэширования старого диска.

...