Запись на диск при предотвращении опустошения буфера в другом процессе
Я работаю над проектом, в котором используется плата Raspberry Pi 2 Model B в сочетании с картами Samsung MicroSD.
Система запускает Raspbian и воспроизводит локальные видеофайлы HD с помощью omxplayer.
Во время воспроизведения он может также загрузить дополнительные видеофайлы, если это будет указано. Для этого он использует библиотеку запросов Python и записывает потоковую загрузку кусками по 1 мегабайту за штуку.
Когда сеть работает достаточно быстро, кажется, что SD-карта (контроллер?) Становится узким местом. Если видео воспроизводится во время загрузки файла, в конечном итоге, omxplayer зависает. Предположительно, потому что буфер заполняется недостаточно быстро, но я открыт для дополнительных теорий, если кто-то может дать предложения о том, как их проверить.
В любом случае, я ищу идеи о том, как обеспечить (достаточно быструю) загрузку файлов без сбоя omxplayer и, тем самым, системы.
В настоящее время я пытался ограничить скорость загрузки до 200 КБ / с, спя в течение n секунд после записи каждого чанка при каждом запуске процесса omxplayer, но, может быть, есть лучший способ сделать это? Что-то, что включает проверку того, какие другие файлы читаются в данный момент и с какой скоростью применяются адаптивные ограничения скорости загрузки. Возможно, особый подход к записи или чтению файлов с SD-карты. Любые идеи будут приветствоваться.