O KDE corrige bug de 2014 que tornava cópia de arquivos pequenos 20x mais lenta no Dolphin. Entenda a solução, benchmarks e quando chega ao Plasma.
Se você usa o KDE Plasma há algum tempo, provavelmente já passou por esta situação: precisa copiar uma pasta com milhares de fotos, arquivos de código-fonte ou thumbnails, e o Dolphin simplesmente arrasta. A barra de progresso avança a passo de tartaruga, enquanto no terminal o comando cp resolve o mesmo trabalho em fração do tempo.
Essa frustração tem nome e sobrenome: bug 342056, reportado em 2014.
Pois bem, depois de 12 anos, a história está mudando. O desenvolvedor do KDE Méven Car encarou o problema de frente e apresentou uma solução que promete equiparar a velocidade de cópia do Dolphin à do bom e velho cp.
Neste artigo, você vai entender por que isso acontecia, como a correção foi implementada e quando poderá usar essa melhoria no seu dia a dia.
O que é o KIO e por que ele era tão lento?
A arquitetura que veio do ano 2000
O KIO (KDE Input/Output) é a espinha dorsal de praticamente todas as operações de arquivo no KDE. Quando você copia um arquivo no Dolphin, abre uma pasta via sftp:// ou acessa um compartilhamento SMB, está usando o KIO.
Sua arquitetura foi projetada no início dos anos 2000, quando a melhor forma de evitar que a interface congelasse durante operações de I/O era usar processos separados — os chamados workers (antigos kioslaves).
A comunicação entre o aplicativo e esses workers acontecia via sockets (um mecanismo de comunicação entre processos).
Essa escolha foi inteligente para a época: se um worker de rede falhasse, o gerenciador de arquivos não cairia junto. Porém, para operações locais (file://), esse isolamento trazia um custo desnecessário.
O custo oculto de cada arquivo
Em 2022, o desenvolvedor David Faure deu um passo importante: passou a executar o worker de arquivos locais em uma thread dentro do próprio aplicativo, eliminando o custo de criação de processos e troca de contexto.
Mas havia um detalhe que passou despercebido: mesmo com a thread interna, a comunicação ainda usava um socketpair, serializando cada comando como se fossem processos separados.
Para cada arquivo copiado, o sistema:
- Leia a tabela de montagem (/proc/self/mountinfo);
- Abria o arquivo de origem e destino;
- Fazia uma viagem de ida e volta (round-trip) pelo socket interno.
Multiplique isso por milhares ou milhões de arquivos, e o resultado é uma lentidão brutal. O relato original do bug é chocante: copiar uma pasta de 15 GB com cerca de 3 milhões de arquivos pequenos levava de 5 a 10 horas no KDE, contra apenas 20 minutos com rsync.
O que mudou ? As três melhorias que transformaram a cópia
1. Eliminação do socket para workers em processo (KIO 6.29)
A primeira medida foi remover o socketpair que ainda existia entre a thread do worker e o aplicativo. Com isso, a comunicação deixou de ser serializada, eliminando um gargalo que representava cerca de 15% do tempo de bloqueio em cópias de muitos arquivos pequenos.
2. Fim da verificação redundante do sistema de arquivos
Antes, a cada arquivo copiado, o KIO consultava a tabela de montagem do sistema (/proc/self/mountinfo) para determinar características do sistema de arquivos de destino. Agora, essa verificação é feita uma única vez por operação de cópia, e não por arquivo.
3. Agrupamento em lote (batch-copy folding)
A terceira e mais significativa mudança foi implementar o agrupamento de comandos em lote. Em vez de enviar um comando para cada arquivo individualmente, o KIO agora agrupa toda uma sequência de arquivos em um único comando. Isso reduz drasticamente a sobrecarga de comunicação.
Benchmarks: números que falam por si
Os testes foram realizados copiando 5.000 arquivos de 4 KB em um sistema com Intel Core i7-1365U e sistema de arquivos ext4. Confira a evolução:
"O caso dos arquivos pequenos é a história. KIO 6.28 era cerca de 20 vezes mais lento que o cp, exatamente a proporção que o relatório de 2014 mencionava. Remover o socket para workers em processo, junto com a eliminação da sonda no sistema de arquivos de destino por arquivo, reduziu de 1,6 s para 0,4 s (cerca de 4 vezes mais rápido). O agrupamento em lote reduziu para 88 ms, essencialmente a velocidade do cp e cerca de 18 vezes mais rápido que o 6.28. Aquela frase 'eu uso cp em vez do Dolphin' finalmente tem uma resposta."
Para arquivos maiores, o ganho é menor, pois o gargalo passa a ser a transferência dos bytes em si. Mas para o dia a dia de quem lida com projetos de desenvolvimento, bibliotecas de fotos ou qualquer pasta com muitos arquivos pequenos, a diferença é transformadora.
Produto Recomendado
Produto recomendado: acelere suas transferências com um SSD externo
Se você trabalha com grandes volumes de arquivos, a velocidade de cópia não depende só do software — o hardware faz toda a diferença. Um bom SSD externo pode transformar sua rotina de transferências.
Recomendação: SanDisk Extreme SSD Portátil 1TB — com velocidades de leitura e gravação de até 1.050 MB/s, conexão USB 3.2 Gen 2 e resistência a quedas e poeira. Perfeito para quem precisa mover grandes projetos, bibliotecas de fotos ou máquinas virtuais com agilidade.
SanDisk Extreme SSD Portátil 1TB -> https://link.amazon/B06nnUVty
Eu ganho uma comissão quando você faz uma compra.
FAQ — Perguntas frequentes
1. A correção já está disponível para todos os usuários do KDE ?
2. Por que o Dolphin era tão mais lento que o cp no terminal ?
3. A melhoria beneficia apenas o Dolphin ou outros programas também ?
Quando essa melhoria chega ao seu KDE?
kf6-config --version
Enquanto isso, o que fazer ?
cp -r pasta_origem pasta_destino
rsync -avh --progress pasta_origem/ pasta_destino
Checklist para aproveitar ao máximo a cópia de arquivos no KDE
Copie e use esse Checklist
Conclusão: o fim de uma era de frustração
A correção do bug 342056 é mais do que uma simples otimização. É o reconhecimento de que a experiência do usuário não pode ser sacrificada em nome de decisões arquiteturais do passado.
Méven Car e a comunidade KDE mostraram que é possível manter a robustez do KIO para protocolos de rede sem penalizar quem só quer copiar arquivos localmente.
Daqui a alguns meses, quando essa melhoria chegar às distribuições estáveis, a frase "eu uso cp em vez do Dolphin" finalmente perderá o sentido. E isso é uma ótima notícia para todos nós que escolhemos o KDE Plasma como nosso ambiente de trabalho diário.

Nenhum comentário:
Postar um comentário