Должен ли я использовать виртуальный диск для изображений, которые конвертируются и удаляются? - PullRequest
0 голосов
/ 28 ноября 2011

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

Я хочу минимизировать операции с диском, потому что он уже довольно старый, и я хочу, чтобы он длился еще некоторое время.

В данный момент программа записывает данные с камеры на диск, а затем преобразует ихи удаляет исходные данные.Однако он делает это для каждого образа: 1 - записывает большой файл на диск, 2 - читает его для преобразования, 3 - и затем удаляет его ... кучу операций с диском, которые не нужны и могут быть выполнены в оперативной памяти., поскольку исходный файл не нужно хранить и он используется только как основа для создания другого.

Я был уверен, что рамдиск был решением, а затем я погуглил, как это сделать, и Googleвернул мне кучу ссылок, которые препятствуют использованию ramdisk, причин много: потому что они бесполезны в современных системах (я использую довольно новое ядро ​​linux);их следует использовать, только если вы хотите расшифровать данные, которые не должны попасть на диск;некоторые тесты показывают, что виртуальный диск может быть на самом деле медленнее, чем hd;операционная система имеет кеш ...

Так что я в замешательстве ...

В этой ситуации мне следует использовать виртуальный диск?

Спасибо.

PS: Если вам нужна дополнительная информация: у меня есть проприетарная камера с высоким разрешением и проприетарный двоичный файл, который я запускаю для захвата одного изображения, я могу указать, куда будет записан файл, который представляет собой огромный файл TIFFи затем программа python запускает программу конвертации из imagemagick, чтобы преобразовать ее в JPEG, а затем сжать ее в tar.bz2, так что качество почти такое же, но размер файла составляет 1/50 от TIFF.

Ответы [ 3 ]

2 голосов
/ 28 ноября 2011

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

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

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

0 голосов
/ 12 июня 2014

Если вы используете Debian (и, возможно, его производные), используйте каталог "/ run / shm".

0 голосов
/ 28 ноября 2011

Ах, проприетарные двоичные файлы, которые дают только определенные опции. Ура. Самым простым решением было бы добавить твердотельный жесткий диск. Вы все равно будете сохранять на диск, но дисковый ввод-вывод будет намного выше для чтения и записи.

Лучшим решением будет вывод tiff в stdout, возможно, в другом формате, и передача его в вашу программу на python. Он никогда не ударит по жесткому диску, но это будет больше работы. Конечно, если двоичный файл не позволяет вам сделать это, то это спорный вопрос.

...