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


9

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

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

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


Можно также опубликовать общее время оборота в обоих случаях?
Самараса

Как ни странно, мой случай с точностью до наоборот: cp в 8 раз быстрее, чем копирование с помощью Nautilus. Я вам завидую :)
Марсио

Ответы:


15

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

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

Напротив, cpон общается с ядром через смонтированную файловую систему FUSE~/.gvfs , которая обрабатывается gvfs-fuse-daemonпроцессом, который, в свою очередь, общается с бэкэндами gvfs. Несоответствие импеданса между POSIX API и gvfs может быть причиной менее эффективной передачи.

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


О Боже мой. Он увеличил скорость до 11 МБ / с за секунду, а затем составил около 6 или 7 МБ / с! Спасибо!
Мэтт

1
Это приятно слышать. Интерфейс FUSE для gvfs предназначен скорее как прокладка обратной совместимости, которая позволяет всем приложениям получать доступ к файлам, а не как предпочтительный метод доступа.
Джеймс Хенстридж
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.