Nautilus neden yavaş?


19

Çok sayıda dosya içeren bir dizini açarken Nautilus'un neden çok yavaş olduğunu merak ediyorum. Örneğin / usr / lib dir, 1900 dosyaya sahiptir ve her şeyi göstermek yaklaşık 5+ saniye sürer. Ubuntu'yu birkaç ay önce kurduğumdan beri böyle oldu ve bazen oldukça can sıkıcı oluyor. Güçlü bir donanıma sahip değilim, ancak Windows Gezgini'nin bundan daha hızlı olduğunu biliyorum.

Hızlandırmak için yapılabilecek bir şey var mı?

Ubuntu 10,04


1
Tahminime göre Nautilus ls’i Explorer’da bir önbellek varken listesini yapmak için kullanıyor.
digitxp

Ne tür bir sistem? Bunun büyük bir faktör olduğunu düşünüyorum. Netbook'umda "yavaş" olurdu, ancak 4 + GB ram olan bir i7 de pek değil.
Chris

Ask Ubuntu ile ilgili: Nautilus çok yavaş
slhck

Yanıtlar:


27

İdamın izlenmesi nautilusyavaşlığın iki faktörün birleşiminden kaynaklandığını göstermektedir:

  • Her dosya hakkında faydalı bilgilerin görüntülenmesi akıllıcadır. Hangi simgenin kullanılacağını belirlemek ve muhtemelen bir önizleme göstermek için dosyaların içeriğine bakar. Bu, tercihlerde önizlemeleri devre dışı bırakarak azaltılabilir.

  • İşe yaramaz bir iş çıkarır ( stather dosyayı birden çok kez basmak ve /proc/filesystemsdizin olmayanlar için bile kontrol etmek gibi ). Tek yapabileceğiniz programlamayı öğrenmek, programı geliştirmek ve bir yama göndermek. Ya da en azından yazarlara bir özellik isteği gönderin (lütfen daha hızlı yapın).

  • Her dizin için birkaç harici işlem çağırıyor, ne yaptıklarını araştırmadım.


İyi cevap: D!
Yamalama

Ben bir programcıyım, yine de katkıda bulunmak için yeterince iyi değil. Sadece meraktan, izini nasıl yaptın?
Kodlama Bölgesi

2
@Derek: strace -f -ttt -p1234 -o nautilus.strace1234, nautilus'un pid'si . İzi ayrıntılı olarak analiz etmedim, sadece baştan aşağıya bakıyordum (alt işlemleri içeren birçok şey) ve dosya başına düşen şeyleri (çoklu stats ve openbazı dosyalar için).
Gilles,

1
Birden fazla stat () 'in çoğu kütüphane çağrılarından, çoğu glibc'den gelir.
Tim Post

vay, bu 6 yıldan beri bir sorun olmuştur! Neden hala hiç kimse bu zamana yatırım yapmadı? Başlamak için, dosyaları listeleyen SONRA önizlemeler ve istatistikler yapılmalıdır. Böylece, büyük klasörlerin listelenmesi anında gerçekleşecek lsve önizlemeler yüklenirken göz atmak mümkün olacak. Doğru hatırlıyorsam, Windows Explorer bu şekilde çalışır. Böyle bir çok kullanılan Ubuntu programı için inanılmaz. ancak şikayet etmemeli, bunun yerine katkıda bulunmalı
Blauhirn

5

"Düzenle -> Tercihler" in altındaki "Önizleme" sekmesinde, tüm seçenekleri "Hiçbir zaman" olarak değiştirmeyi deneyin.

Ayrıca “Yardımcı Teknolojiler” i kapatmam için bana çok yardımcı oldu. Bunu "Sistem -> Tercihler -> Yardımcı Teknolojiler" bölümünde yapabilirsiniz. "Yardımcı teknolojileri etkinleştir" seçeneğinin işaretini kaldırın.

İkinci değişikliğin geçerli olması için oturumu kapatıp tekrar açmanız gerekir.


Bu bana çok mütevazı iyileştirmeler veriyor. Yer imlerini silmek çok daha büyük bir fark yarattı.
Peter Jenkins

5

Bu bana Nautilus'un baş geliştiricisi olan Alexander Larsson ve GVFS dahil diğer projelerle yaptığım bir konuşmayı hatırlattı .

Giles onun cevabı Nautilus dosyalarının içeriği içine bakarak konusunda özellikle biraz Nautilus "yavaş" neden önemli nedene dokunur. Ancak Giles, bunun neden yavaş olduğunu açıklamıyor , ki bu bazıları için açık olabilir, ama diğerleri için değil. İşte Alex'in söylediği şey:

Diyelim ki boş bir sayfa ile başlayın, yani dosya sistemine hiç erişmediniz. Şimdi stat (“/ some / dir / file”) komutunu çalıştırdığınızı söyleyin. Öncelikle, çekirdeğin teknik terimlerle inode adı verilen dosyayı bulması gerekir. Kök dizinin inode'unu depolayan dosya sistemi süper bloğuna bakarak başlar. Sonra kök dizini açar, “bazı” bulur, açar, “dir” bulur, vb. Sonuçta inode dosyasını bulur.

O zaman inode verilerini okumalısınız. İlk okuduktan sonra bu da RAM’de önbelleğe alınır. Bu yüzden bir okuma yalnızca bir kez gerçekleşmelidir.

HD'yi eski bir plak çalar gibi düşünün, iğne ile doğru yere bir kez döndüğünüzde okumaya devam edebilirsiniz. Ancak, bir kez “aramaya” denilen farklı bir yere taşınmanız gerektiğinde, çok farklı bir şey yapıyorsunuzdur. Kolu fiziksel olarak hareket ettirmeniz, ardından tablanın doğru yer iğnenin altına gelene kadar dönmesini beklemeniz gerekir. Bu tür bir fiziksel hareket doğası gereği yavaştır, bu nedenle disk aramanın süresi oldukça uzundur.

Peki ne zaman arayacağız? Elbette dosya sistemi düzenine bağlıdır. Dosya sistemleri okuma performansını artırmak için dosyaları arka arkaya depolamaya çalışırlar ve genellikle aynı zamanda birbirine yakın tek bir klasör için inode'lar depolamaya çalışırlar, fakat bunların hepsi dosyaların yazıldığı zaman, dosya sistemi parçalanması vs. gibi şeylere bağlıdır. Bu durumda, bir dosyanın her statüsü bir aramaya neden olur ve ardından dosyanın her açılışı ikinci aramaya neden olur. Bu nedenle, hiçbir şey önbelleğe alınmadığında işler bu kadar uzun sürüyor.

Bazı dosya sistemleri diğerlerinden daha iyidir, birleştirme yardımcı olabilir. Uygulamalarda bazı şeyler yapabilirsiniz. Örneğin, GIO, inode numarasının disk sırasına göre bir tür ilişkisi olduğunu (genellikle sahip olduğu) umudunu belirtmeden önce alınan inode'ları readdir () 'den ayırır, böylece rasgele ileri geri aramaları en aza indirir.

Önemli bir şey, veri depolamayı ve aramayı en aza indirgemek için uygulamalarınızı tasarlamaktır. Örneğin, Nautilus'un okuma / usr / bin'in yavaş olmasının nedeni budur, çünkü oradaki dosyalar genellikle uzantıya sahip değildir, her biri için sihirli koklama yapmamız gerekir. Bu nedenle, her bir dosyayı açmamız gerekiyor => dosya başına bir arama => slooooow. Başka bir örnek, eskiden olduğu gibi gconf gibi birçok küçük dosyada bilgi depolayan uygulamalar ve aynı zamanda kötü bir fikirdir. Her neyse, pratikte gecikmeleri gizlemeye çalışmaktan başka yapabileceğin bir şey olmadığını düşünüyorum.

Aşağıdaki notla sona erdi:

Bütün bu ikilem için asıl çözüm, dönen medyadan uzaklaşmak. Intel SSD'lerin harika olduğunu duydum. Linus onlar tarafından yemin ediyor.

:-)


3
İlginç :) Ancak, arayış yavaşlamanın temel nedeni ise, Windows Gezgini'nin neden bu kadar hızlı olduğunu hala merak ediyorum. Kesinlikle donanım nedeniyle değil.
Kodlama Bölgesi

4
Tahmin etmek zorunda olsaydım, sihir koklama yapmaz ama sadece uzantıya dayalı dosya tespiti yapar derdim (bunu Windows XP için onaylayabilirim).
Bruce van der Kooij

2
Kesinlikle. Explorer (çoğunlukla) herhangi bir dosya koklama işlemi yapmaz, sadece uzantıyı kullanır. Önizleme yapması veya bir simge okuması gerekiyorsa, dosyayı açması gerekir. .Exe dosyaları ile dolu büyük bir klasör açarsanız bunu görebilirsiniz. Bir kabuk uzantısı, Explorer'ı da bir miktar koklama yapmak için bir dosya açmaya zorlayabilir. Örneğin, bazı arşivleme yardımcı programları, SFX arşivleri olup olmadıklarını görmek için .exe dosyalarını inceler. MS, hem gerçek hızda hem de görünür hızda Explorer'ı hızlandırmaya çalışmak için çok çaba harcadı.
afrazier

3

Sonunda Nautilus'u bu kadar yavaş yapan şeyin ne olduğunu anladım: yer imleri.

Yer imlerinizi silmeyi düzeltmek için yeniden başlatın ve ardından onsuz yaşayamayacağınızı geri ekleyin.

Strace kullanarak Nautilus'un her görünüm için çok sayıda dosya belirttiğini fark ettim. Dizinde olmayan dosyalar bile izleme sırasında göz atıyordum. Nautilus'un bu yer imlerini önbelleğe almaya çalıştığını düşünüyorum.

Yer imi olarak bir ağ sürücüm vardı ... nautilus'un yüklenmesinin birkaç saniye sürmesinin nedeni bu olabilirdi.


1

Thunar gibi alternatif bir dosya yöneticisi kullanmayı deneyin. Thunar, dizin listelerini yüklemede çok daha hızlı ve NTFS usb sabit diskimden ext4'e dosya kopyalamak için daha kararlı, ancak büyük dosya kümelerinde Nautilus gibi bir sorun yaşanıyor gibi görünüyor.

Anahtar betiği https://help.ubuntu.com/community/DefaultFileManager için bir link


Büyük geçici çözüm! Ben "sudo apt-get install thunar" ı ve "exo-Preferined-apps" uygulamalarını seviyorum, sonra (Utilities> File Manger) çözümü içinde Thunar'ı seçiyorum.
11:20

1

Bir Gnome sisteminde kurulu xfce varsa ve asla kullanmıyorsanız, exo-utils komutunu kaldırın.

Sorunumu ve Chrome, indirdikten sonra dosyaları doğru açmama sorununu çözdü.


Bana yardım etmedi. exo-utils, xfdesktop4 paketi de dahil olmak üzere pek çok paket tarafından da istenmektedir, bu nedenle çıkarılması oldukça zordur: sudo dpkg -r --ençeye bağlı = xfce4-terminal, thunar-volman, sıkmak, thunar, xfce4-panel, xfce4-verve -plugin, xfdesktop4 exo-utils
Peter Jenkins

1

"Düzenle -> Tercihler" in altındaki "Önizleme" sekmesinde, tüm seçenekleri "Hiçbir zaman" olarak değiştirmeyi deneyin.

Ayrıca “Yardımcı Teknolojiler” i kapatmam için bana çok yardımcı oldu. Bunu "Sistem -> Tercihler -> Yardımcı Teknolojiler" bölümünde yapabilirsiniz. "Yardımcı teknolojileri etkinleştir" seçeneğinin işaretini kaldırın.

İkinci değişikliğin geçerli olması için oturumu kapatıp tekrar açmanız gerekir.


1
Büyük bir klasörü açma zamanı yaklaşık 30 saniyeden belki iki saniyeye düşürüldü. İyi keder.
wsmart

Gönderim burada başka bir kullanıcı tarafından silindi. görünüşe göre. Nautius yavaş meselem için çok büyük bir fark yarattığı için Jay'e yazdığı için teşekkür etmek istedim. Gerçek ol, ayık ol.
wsmart
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.