por que o nautilus é lento?

19

Eu estou querendo saber porque o Nautilus é muito lento ao abrir um diretório contendo muitos arquivos. Meu diretório / usr / lib, por exemplo, tem 1900 arquivos e leva aproximadamente 5 segundos para mostrar tudo. Tem sido assim desde que eu instalei o Ubuntu alguns meses atrás e é realmente muito chato às vezes. Eu não tenho hardware poderoso, mas sei que o Windows Explorer é muito mais rápido do que isso.

Existe alguma coisa que possa ser feita para acelerar?

Ubuntu 10.04

    
por Coding District 14.08.2010 / 22:43

7 respostas

27

O rastreamento da execução de nautilus mostra que a lentidão se deve a uma combinação de dois fatores:

  • É inteligente exibir informações úteis sobre cada arquivo. Ele examina o conteúdo dos arquivos para determinar o ícone a ser usado e, possivelmente, mostra uma visualização. Isso pode ser atenuado ao desativar as visualizações nas preferências.

  • Ele faz muito trabalho inútil (como stat ing de cada arquivo várias vezes e verifica /proc/filesystems mesmo para não diretórios). Tudo o que você pode fazer é aprender programação, melhorar o programa e enviar um patch. Ou pelo menos envie aos autores uma solicitação de recurso (por favor, faça isso mais rápido).

  • Ele chama vários processos externos para cada diretório, eu não explorei o que eles fazem.

por 14.08.2010 / 23:34
5

Na guia "Visualizar", em "Editar -> Preferências", tente alternar todas as opções para "Nunca".

Também me ajudou enormemente a desativar as "Tecnologias Assistivas". Você pode fazer isso em "Sistema - > Preferências - > Tecnologias assistivas". Desmarque a opção "Ativar tecnologias assistenciais".

Você terá que sair e voltar para a última alteração entrar em vigor.

    
por 26.08.2010 / 20:26
5

Isso me lembrou de uma palestra que tive com Alexander Larsson , o principal desenvolvedor do Nautilus e outros projetos, incluindo o GVFS.

Giles sua resposta , especificamente o pouco sobre o Nautilus procurando dentro do conteúdo de arquivos, toca na principal razão pela qual o Nautilus é "lento". No entanto, Giles não explica por que isso é lento, o que pode ser óbvio para alguns, mas não para outros. Aqui está o que Alex tinha a dizer:

Say you start with a blank slate, i.e. you have not accessed the filesystem at all. Now say you run stat(“/some/dir/file”). First the kernel has to find the file, which in technical terms is called the inode. It starts by looking in the filesystem superblock, which stores the inode of the root directory. Then it opens the root directory, finds “some”, opens that, finds “dir”, etc. eventually finding the inode for file.

Then you have to actually read the inode data. After first read this is also cached in RAM. So, a read only has to happen once.

Think of the HD like an old record player, once you’re in the right place with the needle you can keep reading stuff fast as it rotates. However, once you need to move to a different place, called “seeking” you’re doing something very different. You need to physically move the arm, then wait for the platter to spin until the right place is under the needle. This kind of physical motion is inherently slow so seek times for disks are pretty long.

So, when do we seek? It depends on the filesystem layout of course. Filesystems try to store files consecutively as to increase read performance, and they generally also try to store inodes for a single directory near each other but it all depends on things like when the files are written, filesystem fragmentation, etc. So, in the worst case, each stat of a file will cause a seek and then each open of the file will cause a second seek. So, thats why things take such a long time when nothing is cached.

Some filesystems are better than others, defragmentation might help. You can do some things in apps. For instance, GIO sorts the received inodes from readdir() before stating them hoping that the inode number has some sort of relation to disk order (it generally has) thus minimizing random seeks back and forth.

One important thing is to design your data storage and apps to minimize seeking. For instance, this is why Nautilus reading /usr/bin is slow, because the files in there generally have no extension we need to do magic sniffing for each. So, we need to open each file => one seek per file => slooooow. Another example is apps that store information in lots of small files, like gconf used to do, also a bad idea. Anyway, in practice I don’t think there is much you can do except try to hide the latencies.

Ele terminou com a seguinte nota:

The real fix for this whole dilemma is to move away from rotating media. I hear the Intel SSDs are awesome. Linus swears by them.

: -)

    
por 17.08.2010 / 13:00
3

Eu finalmente descobri o que está tornando o náutilo tão lento: marcadores.

Para corrigir, exclua todos os seus favoritos, reinicie e adicione novamente os que você não pode viver sem.

Usando strace, percebi que o nautilus estava apresentando muitos arquivos para cada visualização. Mesmo arquivos que não estavam no diretório eu estava navegando durante o rastreamento. Eu acho que o nautilus está tentando pré-armazenar em cache esses favoritos.

Eu tinha uma unidade de rede como um marcador de livros ... essa pode ter sido a razão pela qual o nautilus levou vários segundos para ser carregado.

    
por 31.01.2013 / 13:04
1

Tente usar um gerenciador de arquivos alternativo como o Thunar. O Thunar é muito mais rápido ao carregar listagens de diretório e mais estável para copiar arquivos do meu disco rígido NTFS para o ext4, embora com grandes conjuntos de arquivos pareça ter problemas como o Nautilus.

Aqui está um link para script de alternância link

    
por 17.02.2011 / 22:44
1

Se você tem o xfce instalado em um sistema Gnome e nunca o está usando, remova exo-utils

Corrigimos meu problema, juntamente com o problema de o Chrome não abrir arquivos corretamente após o download.

    
por 13.11.2011 / 03:17
1

In the "Preview" tab under "Edit -> Preferences", try switching all the options to "Never".

Também me ajudou enormemente a desativar as "Tecnologias Assistivas". Você pode fazer isso em "Sistema - > Preferências - > Tecnologias assistivas". Desmarque a opção "Ativar tecnologias assistenciais".

Você terá que sair e voltar para a última alteração entrar em vigor.

    
por 11.11.2012 / 18:35