Чому nautilus повільний?


19

Мені цікаво, чому Nautilus дуже повільно відкриває каталог, що містить безліч файлів. Наприклад, мій / usr / lib dir має 1900 файлів, і все потрібно приблизно 5 секунд. Це було так, як я встановив Ubuntu кілька місяців тому, і часом це дуже дратує. У мене немає потужного обладнання, але я знаю, що Windows Explorer набагато швидше, ніж це.

Чи можна щось зробити, щоб пришвидшити це?

Ubuntu 10.04


1
Я гадаю, що Nautilus використовує ls для складання свого списку, а Explorer має кеш.
digitxp

Що це за система? Я думаю, що це великий фактор. Це було б "повільно" в моєму нетбуку, але не так на i7 з 4 + ГБ таран.
Кріс

Пов'язане з Ask Ubuntu: Nautilus дуже повільний
slhck

Відповіді:


27

Відстеження виконання nautilusпоказує, що повільність обумовлена ​​поєднанням двох факторів:

  • Розумно відображати корисну інформацію про кожен файл. Він загляне всередину вмісту файлів, щоб визначити, який значок використовувати і, можливо, показати попередній перегляд. Це можна зменшити, відключивши попередній перегляд у налаштуваннях.

  • Це виконує багато непотрібних робіт (наприклад, statкілька разів кожен файл та перевірка /proc/filesystemsнавіть на не-каталоги). Все, що ви можете зробити - це вивчити програмування, вдосконалити програму та надіслати патч. Або принаймні надішліть авторам запит на функцію (будь ласка, зробіть це швидше).

  • Він викликає кілька зовнішніх процесів для кожного каталогу, я не досліджував, що вони роблять.


Гарна відповідь: D! +1 для виправлення + Featurerequestrequest: D
BloodPhilia

Я програміст, хоча ще недостатньо хороший, щоб зробити свій внесок. Щойно з цікавості, як ти зробив слід?
Кодування району

2
@Derek: strace -f -ttt -p1234 -o nautilus.straceде 1234 р. Пiд наутилуса. Я детально не проаналізував цей слід, просто поглянув на statвихід (багато матеріалів, що включають підпроцеси) та на файли (декілька s, а openдля деяких файлів).
Жил "ТАК - перестань бути злим"

1
Багато хто з stat () надходить з бібліотечних дзвінків, багато з glibc.
Тім Пост

woah, це питання вже понад 6 років! як же все-таки ніхто не вкладав час у це? Для початку попередній перегляд та статистику слід виконати ПІСЛЯ переліку файлів. Таким чином, перелік величезних папок буде настільки ж миттєвим, lsі перегляд буде можливий під час завантаження попереднього перегляду. Windows Explorer працює так, якщо я правильно пам’ятаю. Вигляд неймовірного для дуже використовуваної програми Ubuntu, як ця. однак не слід скаржитися, а натомість робити внесок
phil294

5

На вкладці "Попередній перегляд" у розділі "Редагувати -> Налаштування" спробуйте переключити всі параметри на "Ніколи".

Це також мені дуже допомогло вимкнути "Допоміжні технології". Це можна зробити в "Система -> Налаштування -> Допоміжні технології". Зніміть прапорець "Увімкнути допоміжні технології".

Вам потрібно буде вийти з системи та ввійти знову, щоб остання зміна набула чинності.


Це дає мені дуже скромні вдосконалення. Видалення закладок змінило набагато більше.
Пітер Дженкінс

5

Це нагадало мені розмову, яку я мав з Олександром Ларссоном , провідним розробником Nautilus та інших проектів, включаючи GVFS.

У своїй відповіді Джайлс , зокрема, про Наутілус, який шукає вміст файлів, стосується основної причини, чому Наутілус "повільний". Однак Джайлс не пояснює, чому це повільно, що може бути очевидно для деяких, а не для інших. Ось що сказав Алекс:

Скажімо, ви починаєте з порожнього аркуша, тобто ви взагалі не зверталися до файлової системи. Тепер скажіть, що ви запускаєте stat ("/ some / dir / file"). Спочатку ядро ​​має знайти файл, який в технічному плані називається inode. Він починається з пошуку в суперблоку файлової системи, який зберігає inode кореневого каталогу. Потім він відкриває кореневу директорію, знаходить «деякі», відкриває це, знаходить «dir» тощо, врешті-решт знаходячи inode для файлу.

Тоді вам доведеться насправді читати дані inode. Після першого читання це також зберігається в оперативній пам'яті. Отже, читання має відбутися лише один раз.

Думайте про HD як про старий програвач звукозаписів, коли ви в потрібному місці з голкою можете постійно читати речі, коли він обертається. Однак, як тільки вам потрібно переїхати в інше місце, яке називається «шукаючи», ви робите щось зовсім інше. Потрібно фізично рухати рукою, потім чекати, поки блюдо крутиться, поки потрібне місце не опиниться під голкою. Цей вид фізичного руху за своєю суттю повільний, тому час пошуку дисків досить тривалий.

Отже, коли ми шукаємо? Це залежить від макета файлової системи, звичайно. Файлові системи намагаються зберігати файли послідовно, щоб підвищити продуктивність читання, і вони, як правило, також намагаються зберігати вставки для одного каталогу поруч один з одним, але все залежить від речей, наприклад, коли файли записуються, фрагментація файлової системи тощо. Отже, в гіршому випадку У випадку, кожен статистичний файл буде викликати пошук, і тоді кожне відкриття файлу спричинить повторний пошук. Отже, тому справи займають так довго, коли нічого не зберігається в кеші.

Деякі файлові системи кращі за інші, дефрагментація може допомогти. Деякі речі можна робити в додатках. Наприклад, GIO сортує отримані індекси з readdir () перед тим, як заявляти про них, сподіваючись, що число inode має якесь відношення до порядку диска (як правило, є), таким чином мінімізуючи випадкові пошуки вперед і назад.

Одне важливе - створити ваше сховище даних та додатки, щоб мінімізувати пошук. Наприклад, саме тому Nautilus читання / usr / bin повільний, тому що файли там, як правило, не мають розширення, нам потрібно робити магічне нюхання для кожного. Отже, нам потрібно відкрити кожен файл => один пошук на файл => slooooow. Інший приклад - додатки, які зберігають інформацію у безлічі невеликих файлів, як, наприклад, gconf, що також роблять, також погана ідея. У будь-якому випадку, на практиці я не думаю, що ти можеш зробити багато, крім того, щоб спробувати приховати затримки.

Він закінчився такою запискою:

Справжня фіксація всієї цієї дилеми - відійти від обертових середовищ. Я чую, що Intel SSD дивовижні. Лінус присягає їм.

:-)


3
Цікаво :) Однак, якщо пошук є першопричиною повільності, мені все одно цікаво, чому тоді Windows Explorer так швидше? Звичайно не через апаратне забезпечення.
Кодування району

4
Якби мені довелося здогадатися, я б сказав, що це не робить магічне нюхання, а просто виявляє файли на основі розширення (я можу підтвердити це для Windows XP).
Брюс ван дер Куей

2
Саме так. Провідник (здебільшого) не робить ніякого нюхання файлів, він просто використовує розширення. Якщо йому потрібно зробити попередній перегляд або прочитати піктограму, ну, тоді він повинен відкрити файл. Це можна побачити, якщо ви відкриєте велику папку з файлами .exe. Розширення оболонки може змусити Провідник відкрити файл, щоб зробити і нюхання. Наприклад, деякі утиліти архіву вивчать файли .exe, щоб побачити, чи є вони архівами SFX. MS намагалися вкласти багато зусиль для того, щоб спробувати пришвидшити Explorer, як у фактичній швидкості, так і у видимій швидкості.
afrazier

3

Нарешті я зрозумів, що робить так наутилус настільки повільним: закладки.

Щоб виправити це, видаліть усі закладки, перезапустіть і потім додайте назад ті, без яких ви не можете жити.

Використовуючи strace, я зрозумів, що nautilus викладає багато файлів для кожного перегляду. Навіть файли, які не були в каталозі, я переглядав під час відстеження. Я думаю, nautilus намагається попередньо кешувати ці закладки.

У мене був один мережевий накопичувач як закладка ... це, можливо, було причиною того, що nautilus завантажував кілька секунд.


1

Спробуйте скористатися альтернативним файловим менеджером, таким як Thunar. Thunar набагато швидше завантажує списки каталогів і більш стабільний для копіювання файлів з мого жорсткого диска NTFS на ext4, хоча з великими наборами файлів, схоже, виникають проблеми, як Nautilus.

Ось посилання на скрипт перемикання https://help.ubuntu.com/community/DefaultFileManager


Чудовий спосіб подолання! Мені подобається "sudo apt-get install thunar" та "exo-preference-applications", а потім вибираю Thunar у (Утиліти> Файл Manger).
Дуд

1

Якщо у вас є система xfce, встановлена ​​в системі Gnome, і ви її ніколи не використовуєте, видаліть екзо-утиліти

Це вирішило мою проблему разом із проблемою Chrome невірно відкривати файли після їх завантаження.


Не допомогли мені. exo-utils також потрібна велика кількість пакунків, включаючи пакет xfdesktop4, тому їх досить важко видалити: sudo dpkg -r --ignore-зависи = xfce4-термінал, thunar-volman, стиснути, thunar, xfce4-панель, xfce4-verve -plugin, xfdesktop4 exo-utils
Пітер Дженкінс

1

На вкладці "Попередній перегляд" у розділі "Редагувати -> Налаштування" спробуйте переключити всі параметри на "Ніколи".

Це також мені дуже допомогло вимкнути "Допоміжні технології". Це можна зробити в "Система -> Налаштування -> Допоміжні технології". Зніміть прапорець "Увімкнути допоміжні технології".

Вам потрібно буде вийти з системи та ввійти знову, щоб остання зміна набула чинності.


1
Час відкриття великої папки скоротилося приблизно від 30 секунд до, можливо, двох секунд. Добре горе.
wsmart

Мою публікацію тут видалив інший користувач. мабуть. Хотів сказати подяку Джею за його посаду, оскільки це зробило величезну зміну для мого повільного питання Nautius. Будьте справжні, будьте тверезі.
wsmart
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.