Почему cp-файл работает более чем в два раза медленнее, чем копирование с помощью графического интерфейса Nautilus? (Протокол AFC)

Почему cp-файл работает более чем в два раза медленнее, чем копирование с помощью графического интерфейса Nautilus? (Протокол AFC)

У меня есть взломанный iPod Touch и пакет afc2add. Когда я подключаю его к своему ноутбуку с Ubuntu, он автоматически монтирует каталог Media моего iPod, а также папки общего доступа к файлам приложения. Когда я использую Nautilus для передачи файла в папку Media, пиковая скорость составляет около 5 МБ/с. Однако, когда я использую терминал для копирования файла в папку ~/.gvfs/Matt's iPod[в Nautilus он отображается как "Matt's iPod"], я видел, как она поднималась только до 2 МБ/с.

Может ли кто-нибудь подсказать, почему cp-команда для файла работает более чем в два раза медленнее, чем использование графического интерфейса Nautilus?

Кстати, я могу сказать, насколько быстро идет копирование с терминала, у меня есть скрипт с pv [В двух словах, это: pv $1 > $2], и он идет примерно 1,5 МБ/с. Поэтому я также попробовал cp, и установил цикл для duфайла каждую секунду, и он подскочил где-то на 2 МБ каждую секунду.

решение1

Nautilus проходил бы через меньшее количество уровней косвенности, что могло бы объяснить разницу.

Nautilus — это собственное приложение gvfs, поэтому оно напрямую взаимодействует с бэкэндами gvfs.

В отличие от этого, cpобщается с ядром черезПРЕДОХРАНИТЕЛЬФайловая система смонтирована в ~/.gvfs, которая обрабатывается процессом gvfs-fuse-daemon, который в свою очередь общается с бэкэндами gvfs. Несоответствия импеданса между API POSIX и gvfs могут быть причиной менее эффективных передач.

Аналогичного результата можно добиться в командной строке, используя gvfs-copyкоманду из gvfs-binпакета, скопировав ее в соответствующий URL-адрес.

Связанный контент