LINUX.ORG.RU
ФорумAdmin

Как сделать упреждающее кеширование файлов на linux?

 ,


1

2

Дано: Сервер файлопомойка-торрентокачалка, торренты хранятся на двух hdd дисках объединенных mergerfs, система debian 12 на ссд, на всех накопителях ext4, гигабитная локальная сеть, планировщик дисков bfq, торрент клиент запущен через nice и ionice с минимальным приоритетом.

Когда при сильно активной раздаче просматриваешь фильмы на китайском tvbox по wifi через mxplayer из samba, воспроизводимый фильм подтормаживает, но если на сервере прочитать весь фильм целиком (что приведёт к загрузки файла в кэш) то фильм воспроизводится без тормозов.

Есть ли в linux какое-нибудь умное кеширование которое понимает что файл читают последовательно и начнёт упреждающе читать его в ОЗУ?

Или просто полностью загружать в кэш весь файл открытый определённым процессом?

Прошу экспертов ЛОРа помочь с решением данной проблемы.

Попробуй в докере запустить торрент и ограничить ему оперативную память, чтобы под самбу оставалось достаточно памяти. Я не уверен на 100%, но вроде ограничение памяти и файловый кеш должно ограничить.

vbr ★★★★
()
Ответ на: комментарий от hrenacher228

в MX Player нету настроек кэша

https://manpages.debian.org/experimental/mplayer/mplayer.1.en.html

  -cache <kBytes>
    This option specifies how much memory (in kBytes) to use when  precaching a file or URL. Especially useful on slow media.

Если ты потерял маны и не можешь их прочетать, то есть smplayer, в котором многие настройки есть в gui)

Или ты mxplayer в андроиде юзаешь? Тогда тебе vlc должен помочь.

PRN
()
Последнее исправление: PRN (всего исправлений: 2)
Ответ на: комментарий от hrenacher228

Кеш может помочь, если сеть не стабильная или пики на торрент раздачах кратковременны, в остальных случаях большой кеш только сделает подтормаживания более редкими, но более длительными. Если у тебя торренты раздают напрямую с файлухи, то надо самбу запускать с больших io приоритетом - man ionice и т.п. Если торренты берут с самбы, то надо тупо ограничить скорость раздачи.

vtVitus ★★★★★
()
Последнее исправление: vtVitus (всего исправлений: 1)

Или просто полностью загружать в кэш весь файл открытый определённым процессом?

Отправить файл целиком в кэш можно очень просто

cat filename > /dev/null

но это имеет смысл только в том случае, если файл может целиком там уместиться (он должен быть меньше по размеру, чем free + available по показаниям команды free)

annulen ★★★★★
()

просматриваешь фильмы на китайском tvbox по wifi через mxplayer из samba

Я в сетапе win10, android TV, samba, wifi перепробовал все плейеры, которые заработали с плеймаркета и разные настройки кеша. Помог только переход на провод.

MadMax
()
Последнее исправление: MadMax (всего исправлений: 1)

Или просто полностью загружать в кэш весь файл открытый определённым процессом?

Можно использовать inotify и при открытии на чтение «определенным процессом»(тут уж накостыляйте сами) считывать весь файл в /dev/null. Влезет он в кэш или нет, это уже другой вопрос.

anc ★★★★★
()
Ответ на: комментарий от vbr

ограничить память можно без докера, есть опции в системд.сервисах и в других. но «это другое» :)
вообще трансмисия, если не течет а у меня было такое, потребляет очень мало памяти. плюс настройки размеров кешей в ней присуствуют.

перед стартом видео засылать на сервер строчку чтобы скопировало сотню гигабайт из файла в /dev/nul ?? костыль конечно же.
но если в плеере отсутствуют настройки управления предкешированием файла….

pfg ★★★★★
()
Ответ на: комментарий от pfg

99% что кеширование уже реализовано на стороне демонов, специально заточенных под раздачу media

Гуглить dlna и hls. Для дома скорее dlna, чтобы выбирать фильм, а не смотреть плейлист

router ★★★★★
()