Назад | Перейти на главную страницу

Как ускорить отображение файлов в памяти по сети?

Сопоставление памяти файла с общим файловым ресурсом SMB приводит к тому, что он полностью передается перед возвратом вызова. Для больших файлов это приводит к зависанию приложения на длительный период времени. Как это исправить?

Правильный ответ - «Использовать X вместо SMB».

Изменить: любое приложение, любой файл. Я не пытаюсь раскрыть конкретный случай. Отображение файла в память - это способ его открытия, чтобы он представлялся приложению как часть рабочей памяти - вы обращаетесь к файлу как к массиву.

Это артефакт реализации операционной системой mmap, не имеет ничего общего с используемым сетевым протоколом (как бы я ни любил трепаться по SMB ...). SMB более чем способен читать случайные фрагменты из файла, поэтому нет причин, по которым он не может читать фрагменты по запросу. В данный момент у меня нет SMB-сервера, доступного для проверки, но у меня есть сервер NFS, и я просто попытался mmap файл размером 1,7 ГБ, и он возвращается мгновенно, так что, по крайней мере, это определенно не какое-то внутреннее ограничение в концепции mmap.