dlaczego Nautilus jest wolny?

19

Zastanawiam się, dlaczego Nautilus działa bardzo wolno podczas otwierania katalogu zawierającego wiele plików. Na przykład mój katalog / usr / lib ma 1900 plików i wyświetlenie wszystkiego zajmuje około 5 sekund. Tak było, odkąd zainstalowałem Ubuntu kilka miesięcy temu i czasami jest to naprawdę dość irytujące. Nie mam potężnego sprzętu, ale wiem, że Eksplorator Windows jest o wiele szybszy.

Czy można coś zrobić, aby przyspieszyć?

Ubuntu 10.04

Dystrykt kodowania
źródło
1
Domyślam się, że Nautilus wykorzystuje ls do tworzenia listy, podczas gdy Explorer ma pamięć podręczną.
digitxp
Co to za system? Myślę, że to duży czynnik. Byłoby to „wolne” na moim netbooku, ale nie tak bardzo na i7 z 4 + GB pamięci RAM.
Chris,
Podobne do Ask Ubuntu: Nautilus jest bardzo wolny
slhck

Odpowiedzi:

27

Śledzenie wykonania nautiluspokazuje, że powolność wynika z kombinacji dwóch czynników:

  • Inteligentnie wyświetla przydatne informacje o każdym pliku. Przeszukuje zawartość plików, aby określić, jakiej ikony użyć, i ewentualnie wyświetlić podgląd. Można to złagodzić, wyłączając podgląd w preferencjach.

  • Wykonuje wiele bezużytecznej pracy (np. statWielokrotne wprowadzanie każdego pliku i sprawdzanie, czy /proc/filesystemsnie ma katalogów innych niż katalogi). Wszystko, co możesz zrobić, to nauczyć się programowania, ulepszyć program i wysłać łatkę. Lub przynajmniej wyślij autorom zapytanie o funkcję (zrób to szybciej).

  • Wywołuje kilka procesów zewnętrznych dla każdego katalogu, nie zbadałem, co robią.

Gilles „SO- przestań być zły”
źródło
Dobra odpowiedź: D! +1 za łatanie + prośba o dodanie funkcji: D
BloodPhilia
Jestem programistą, ale nie jestem jeszcze wystarczająco dobry, aby wnieść swój wkład. Właśnie z ciekawości, jak to zrobiłeś?
Coding District
2
@Derek: strace -f -ttt -p1234 -o nautilus.stracegdzie 1234 to pid nautilus. Nie analizowałem szczegółowo śladu, po prostu spojrzałem na lead up (wiele rzeczy z udziałem podprocesów) i na plik (wiele stats, a opendla niektórych plików).
Gilles „SO- przestań być zły”
1
Wiele z wielu statystyk () pochodzi z wywołań biblioteki, wiele z glibc.
Tim Post
woah, to jest problem od ponad 6 lat! dlaczego wciąż nikt nie zainwestował w to czasu? Na początek należy wyświetlić podgląd i statystyki PO wyświetleniu listy plików. W związku z tym wyświetlanie dużych folderów będzie natychmiastowe, lsa przeglądanie będzie możliwe podczas ładowania podglądów. Eksplorator Windows działa tak, jeśli dobrze pamiętam. To niewiarygodne jak na tak często używany program Ubuntu. nie powinien jednak narzekać, ale wnieść swój wkład
phil294,
5

Na karcie „Podgląd” w „Edycja -> Preferencje” spróbuj zmienić wszystkie opcje na „Nigdy”.

Ogromnie pomogło mi to wyłączyć „Technologie wspomagające”. Możesz to zrobić w „System -> Preferencje -> Technologie wspomagające”. Odznacz „Włącz technologie pomocnicze”.

Musisz się wylogować i zalogować ponownie, aby ta ostatnia zmiana zaczęła obowiązywać.

Sójka
źródło
To daje mi bardzo skromne ulepszenia. Usunięcie zakładek zrobiło znacznie większą różnicę.
Peter Jenkins
5

Przypomniało mi to rozmowę z Alexandrem Larssonem , głównym programistą Nautilus i innych projektów, w tym GVFS.

Odpowiedź Gilesa , a konkretnie tego, że Nautilus zagląda do zawartości plików, dotyka głównego powodu, dla którego Nautilus jest „wolny”. Jednak Giles nie wyjaśnia, dlaczego jest to powolne, co może być oczywiste dla niektórych, ale nie dla innych. Oto, co powiedział Alex:

Załóżmy, że zaczynasz od pustej listy, tzn. Wcale nie masz dostępu do systemu plików. Teraz powiedz, że uruchamiasz stat („/ some / dir / file”). Najpierw jądro musi znaleźć plik, który technicznie nazywa się i-węzłem. Zaczyna się od przeszukania superbloku systemu plików, który przechowuje i-węzeł katalogu głównego. Następnie otwiera katalog główny, znajduje „trochę”, otwiera to, znajduje „dir” itp., W końcu znajduje i-węzeł dla pliku.

Następnie musisz odczytać dane i-węzła. Po pierwszym przeczytaniu jest to również buforowane w pamięci RAM. Tak więc odczyt musi się zdarzyć tylko raz.

Pomyśl o HD jak o starym odtwarzaczu, gdy już znajdziesz się we właściwym miejscu z igłą, możesz szybko czytać rzeczy podczas obracania się. Jednak gdy musisz przenieść się w inne miejsce, zwane „szukaniem”, robisz coś zupełnie innego. Musisz fizycznie przesunąć ramię, a następnie zaczekać, aż talerz zacznie się obracać, aż właściwe miejsce znajdzie się pod igłą. Ten rodzaj ruchu fizycznego jest z natury powolny, więc czasy poszukiwania dysków są dość długie.

Kiedy więc szukamy? Zależy to oczywiście od układu systemu plików. Systemy plików próbują przechowywać pliki kolejno, aby zwiększyć wydajność odczytu, i generalnie próbują również przechowywać i-węzły dla jednego katalogu blisko siebie, ale wszystko zależy od rzeczy, takich jak zapis plików, fragmentacja systemu plików itp. Tak więc, w najgorszym przypadku W takim przypadku każda statystyka pliku spowoduje wyszukiwanie, a następnie każde otwarcie pliku spowoduje drugie wyszukiwanie. Dlatego właśnie tak długo trwa, gdy nic nie jest buforowane.

Niektóre systemy plików są lepsze od innych, defragmentacja może pomóc. Możesz robić pewne rzeczy w aplikacjach. Na przykład GIO sortuje odebrane i-węzły z readdir () przed stwierdzeniem ich, mając nadzieję, że liczba i-węzłów ma jakiś związek z kolejnością dysków (na ogół ma), minimalizując w ten sposób losowe wyszukiwania tam i z powrotem.

Jedną ważną rzeczą jest zaprojektowanie magazynu danych i aplikacji w celu zminimalizowania wyszukiwania. Na przykład dlatego Nautilus czyta / usr / bin jest powolny, ponieważ pliki tam na ogół nie mają rozszerzenia, dla którego musimy wykonać magiczne wąchanie. Musimy więc otworzyć każdy plik => jedno wyszukiwanie na plik => slooooow. Innym przykładem są aplikacje przechowujące informacje w wielu małych plikach, takie jak kiedyś gconf, również zły pomysł. W każdym razie, w praktyce nie sądzę, że możesz wiele zrobić, prócz ukrycia opóźnień.

Zakończył następującą notatką:

Prawdziwym rozwiązaniem tego całego dylematu jest odejście od wirujących mediów. Słyszę, że dyski SSD firmy Intel są niesamowite. Linus przysięga na nich.

:-)

Bruce van der Kooij
źródło
3
Ciekawe :) Jeśli jednak szukanie jest przyczyną spowolnienia, wciąż zastanawiam się, dlaczego Eksplorator Windows jest tak szybszy? Na pewno nie z powodu sprzętu.
Coding District
4
Gdybym musiał zgadywać, powiedziałbym, że nie robi to magicznego wąchania, ale po prostu wykrywa pliki na podstawie rozszerzenia (mogę to potwierdzić w systemie Windows XP).
Bruce van der Kooij
2
Dokładnie. Eksplorator (w przeważającej części) nie wykrywa plików, po prostu używa rozszerzenia. Jeśli musi wyrenderować podgląd lub odczytać ikonę, to musi otworzyć plik. Możesz to zobaczyć, jeśli otworzysz duży folder pełen plików .exe. Rozszerzenie powłoki może zmusić Eksploratora do otwarcia pliku, aby również mógł przeprowadzić wąchanie. Na przykład niektóre narzędzia do archiwizacji sprawdzą pliki .exe, aby sprawdzić, czy są to archiwa SFX. MS włożyło wiele wysiłku w próbę przyspieszenia Eksploratora, zarówno w rzeczywistej, jak i pozornej prędkości.
afrazier
3

W końcu zorientowałem się, co powoduje, że Nautilus jest tak wolny: zakładki.

Aby to naprawić, usuń wszystkie zakładki, uruchom ponownie, a następnie dodaj te, bez których nie możesz żyć.

Za pomocą strace zdałem sobie sprawę, że nautilus zapisuje wiele plików dla każdego widoku. Nawet pliki, których nie było w katalogu, przeglądałem podczas śledzenia. Myślę, że Nautilus próbuje wstępnie buforować te zakładki.

Miałem jeden dysk sieciowy jako zakładkę ... to mógł być powód, dla którego nautilus ładował się kilka sekund.

Peter Jenkins
źródło
1

Spróbuj użyć alternatywnego menedżera plików, takiego jak Thunar. Thunar jest znacznie szybszy w ładowaniu wykazów katalogów i bardziej stabilny w kopiowaniu plików z mojego dysku twardego NTFS na ext4, chociaż przy dużych zestawach plików wydaje się, że ma problemy takie jak Nautilus.

Oto link do skryptu zmiany https://help.ubuntu.com/community/DefaultFileManager

mut1na
źródło
Świetne obejście! Uwielbiam „sudo apt-get install thunar” i „egzo-preferowane aplikacje”, a następnie wybieram Thunar w (Narzędzia> Menedżer plików).
Doud,
1

Jeśli masz xfce zainstalowane w systemie Gnome i nigdy go nie używasz, usuń exo-utils

Naprawiono mój problem oraz problem z niepoprawnym otwieraniem plików przez Chrome po ich pobraniu.

Adam H.
źródło
Nie pomogło mi. exo-utils jest również wymagane przez wiele pakietów, w tym pakiet xfdesktop4, więc jest dość trudny do usunięcia: sudo dpkg -r --ignore-depends = xfce4-terminal, thunar-volman, squeeze, thunar, xfce4-panel, xfce4-verve -plugin, exo-utils xfdesktop4
Peter Jenkins
1

Na karcie „Podgląd” w „Edycja -> Preferencje” spróbuj zmienić wszystkie opcje na „Nigdy”.

Ogromnie pomogło mi to wyłączyć „Technologie wspomagające”. Możesz to zrobić w „System -> Preferencje -> Technologie wspomagające”. Odznacz „Włącz technologie pomocnicze”.

Musisz się wylogować i zalogować ponownie, aby ta ostatnia zmiana zaczęła obowiązywać.

wsmart
źródło
1
Skrócono czas otwierania dużego folderu z około 30 sekund do dwóch sekund. O jeny.
wsmart,
Mój post został tutaj usunięty przez innego użytkownika. widocznie. Chciałem podziękować Jayowi za jego post, ponieważ to ogromnie zmieniło mój powolny numer Nautiusa. Bądź prawdziwy, bądź trzeźwy.
wsmart,