Erro na barra de progresso no linux

2

Quando copio um arquivo grande para uma unidade flash, a barra de progresso chega ao final muito rapidamente, mas fica assim até que o arquivo seja realmente copiado para a unidade flash.

Eu olhei na web sobre esse problema, e ele não parece ser um bug do explorador de arquivos, mas parece ser um bug do Linux. Então, minha pergunta é: como é possível que um kernel tão incrível contenha um bug tão chato; e ninguém corrigiu isso por anos (até agora o bug ainda está ocorrendo).

PS: Estou usando o Ubuntu 15.10 e 16.04 com o gerenciador de arquivos padrão (nautilus)

    
por Sidahmed 07.08.2016 / 00:50

1 resposta

1

Encontrei o problema e não está no gerenciador de arquivos.

Solução Temporária

Execute este comando em cada inicialização:

cat 15728640 > /proc/sys/vm/dirty_bytes

Solução Permanente

Adicione esta linha ao final do arquivo /etc/sysctl.conf :

vm.dirty_bytes=15728640

Explicação

O que está acontecendo é que o kernel está transferindo o conteúdo do arquivo em um espaço em buffer na memória principal (RAM), e esse espaço é extremamente rápido.

Assim, o gerenciador de arquivos acha que o conteúdo do arquivo foi copiado completamente para o destino e tenta finalizar a cópia do arquivo. Nesse momento, o gerenciador de arquivos fica preso porque o kernel agora está realmente copiando o arquivo para a mídia de destino (disco rígido, flash drive ...). Ele fica preso até que o arquivo seja copiado para a mídia de destino.

A solução é limitar o espaço desse espaço em buffer, digamos para 15Mb , para forçar o kernel a liberar o conteúdo do espaço em buffer para a mídia de destino toda vez que o limite de espaço 15Mb for atingido. Desta forma, o gerenciador de arquivos não recebe informações incorretas sobre o progresso.

    
por 13.01.2017 / 22:47