Храните более 3 ГБ видеокадров в памяти на 32-битной ОС - PullRequest
4 голосов
/ 03 сентября 2008

На работе у нас есть приложение для воспроизведения 2K (2048 * 1556px) последовательностей фильмов OpenEXR. Он работает хорошо ... кроме случаев, когда последовательности превышают 3 ГБ (довольно часто), он должен выгружать старые кадры из памяти, несмотря на тот факт, что все машины имеют 8-16 ГБ памяти (которая адресуется через linux BIGMEM).

Кадры должны быть кэшированы в памяти для воспроизведения в реальном времени. Операционная система - это 32-разрядная версия Fedora Distro, выпущенная несколько лет назад (в обозримом будущем ее невозможно обновить до 64-разрядной). Ограничение на процесс составляет 3 ГБ на процесс.

В принципе, возможно ли как-то кэшировать более 3 ГБ данных в памяти? Моя первоначальная идея состояла в том, чтобы распределить данные между несколькими процессами, но я понятия не имею, возможно ли это ..

Ответы [ 5 ]

3 голосов
/ 03 сентября 2008

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

2 голосов
/ 03 сентября 2008

Как насчет создания RAM-диска и загрузки файла в него ... при условии, что RAM-диск поддерживает BIGMEM для вас.

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

1 голос
/ 03 сентября 2008

Боже, какая интересная проблема:)

( РЕДАКТИРОВАТЬ : О, я только что прочитал сообщение Роба по поводу оперативной памяти ... Я был очень взволнован этой проблемой ... но есть что предложить, поэтому я не буду удалять) 1005 *

Было бы возможно ...

  1. установить многодигабайтный RAM-диск, а затем
  2. изменить программу, чтобы сделать все, что она читает с "диска"?

Я полагаю, что в части оперативного диска будет вся проблема, поскольку размер оперативного диска зависит от операционной системы и файловой системы. Возможно, вам придется создать несколько оперативных дисков и ваш код перейти между ними. Или, может быть, вы можете установить полосу RAID-0 на несколько RAM-дисков. Или, если все еще существуют ограничения ОС, и вы можете позволить себе потерять пару штук (4 тыс.?), Установите аппаратный набор RAID-0 с некоторыми из этих новых высокоскоростных твердотельных накопителей. Или ...

Веселье, веселье, веселье.

Обязательно следите!

1 голос
/ 03 сентября 2008

Я полагаю, вы можете изменить приложение. Если это так, проще всего было бы запустить приложение несколько раз (по одному разу для каждого фрагмента видео объемом 3 ГБ), каждый из них должен держать фрагмент видео и использовать другую программу для их синхронизации, чтобы каждый из них взял на себя управление кадровым буфером (или другой видеовыход) по очереди.

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

0 голосов
/ 05 сентября 2008

@ dbr сказал:

Существует обзорная машина с абсурдным RAID-массивом Fibre Channel, который может легко воспроизводить 2K-файлы прямо из массива. Проблема связана с рабочими станциями-исполнителями, поэтому это будет не один RAID-массив за 4000 долларов, а сотни ...

Ну, если вы можете принять ограничение в ~ 30 ГБ, тогда, может быть, одного SSD-накопителя на 36 ГБ будет достаточно? Я думаю, что они стоят ~ 1 тыс. Долларов США, и скорости передачи данных может быть достаточно. Это очень хорошо, может быть, дешевле, чем чистый подход оперативной памяти. Также доступны меньшие размеры. Если ~ 60 ГБ достаточно, вы, вероятно, можете обойтись с массивом JBOD 2 для удвоения стоимости и пропустить контроллер RAID. Обязательно смотрите только варианты SSD более высокого уровня - нижний конец заполнен прославленными картами памяти. : P

...