Aqui, escrevi um livro por acidente. Tome um café primeiro.
Por que o esvaziamento do espaço em disco acelera os computadores?
Não, pelo menos não por si só. Este é um mito muito comum. A razão é um mito comum é porque encher o seu disco rígido muitas vezes acontece ao mesmo tempo que outras coisas que tradicionalmente poderia retardar † seu computador. O desempenho do SSD tende a diminuir à medida que a unidade é concluída , mas esse é um problema relativamente novo, exclusivo dos SSDs, e não é realmente perceptível para usuários casuais. Geralmente, o baixo espaço livre em disco é apenas um arenque vermelho .
Por exemplo, coisas como:
Fragmentação de arquivo. A fragmentação de arquivo é um problema †† , mas a falta de espaço livre, embora seja definitivamente um dos muitos fatores que contribuem, não é a única causa. Alguns pontos-chave aqui:
As chances de um arquivo ser fragmentado não estão relacionadas à quantidade de espaço livre restante na unidade. Eles estão relacionados ao tamanho do maior bloco contíguo de espaço livre na unidade (por exemplo, "orifícios" de espaço livre), nos quais a quantidade de espaço livre coloca um limite superior . Eles também estão relacionados à maneira como o sistema de arquivos lida com a alocação de arquivos (mais abaixo). Considere: Uma unidade que esteja 95% cheia com todo o espaço livre em um único bloco contíguo tem 0% de chance de fragmentar um novo arquivo ††† (e a chance de fragmentar um arquivo anexado é independente do espaço livre). Uma unidade que está 5% cheia, mas com dados distribuídos uniformemente pela unidade, tem uma chance muito alta de fragmentação.
Lembre-se de que a fragmentação de arquivo afeta apenas o desempenho quando os arquivos fragmentados estão sendo acessados . Considere: você tem uma unidade agradável e desfragmentada que ainda possui muitos "buracos" gratuitos. Um cenário comum. Tudo está funcionando sem problemas. Eventualmente, porém, você chega a um ponto em que não há mais grandes blocos de espaço livre restante. Você baixa um filme enorme, o arquivo acaba sendo severamente fragmentado. Isso não diminuirá a velocidade do seu computador. Todos os arquivos do aplicativo e outros que estavam bem antes não serão fragmentados de repente. Isso pode tornar o filmedemora mais para carregar (embora as taxas de bits típicas do filme sejam tão baixas em comparação com as taxas de leitura do disco rígido que provavelmente serão imperceptíveis) e pode afetar o desempenho vinculado à E / S enquanto o filme estiver sendo carregado, mas, além disso, nada muda.
Embora a fragmentação de arquivos seja certamente um problema, muitas vezes os efeitos são atenuados pelo buffer e pelo cache do sistema operacional e do hardware. Gravações atrasadas, leitura antecipada, estratégias como o pré - buscador no Windows etc. ajudam a reduzir os efeitos da fragmentação. Você geralmente não realmente experimentar impacto significativo até que a fragmentação torna-se grave (eu até arrisco a dizer que, enquanto o seu arquivo de troca não é fragmentado, você provavelmente nunca irá notar).
A indexação de pesquisa é outro exemplo. Digamos que você tenha a indexação automática ativada e um sistema operacional que não lide com isso normalmente. À medida que você salva cada vez mais conteúdo indexável em seu computador (documentos e outros), a indexação pode demorar mais e mais e começar a afetar a velocidade percebida do computador enquanto está em execução, tanto no uso de E / S quanto na CPU . Isso não está relacionado ao espaço livre, está relacionado à quantidade de conteúdo indexável que você possui. No entanto, ficar sem espaço livre anda de mãos dadas com o armazenamento de mais conteúdo; portanto, é feita uma conexão falsa.
Software antivírus. Semelhante ao exemplo de indexação de pesquisa. Digamos que você tenha um software antivírus configurado para fazer a verificação em segundo plano da sua unidade. À medida que você tem mais e mais conteúdo digitalizável, a pesquisa consome mais recursos de E / S e CPU, possivelmente interferindo no seu trabalho. Novamente, isso está relacionado à quantidade de conteúdo digitalizável que você possui. Mais conteúdo geralmente equivale a menos espaço livre, mas a falta de espaço livre não é a causa.
Software instalado. Digamos que você tenha um monte de software instalado que carrega quando o computador é inicializado, diminuindo o tempo de inicialização. Essa lentidão acontece porque muito software está sendo carregado. No entanto, o software instalado ocupa espaço no disco rígido. Portanto, o espaço livre no disco rígido diminui ao mesmo tempo em que isso acontece e, novamente, uma conexão falsa pode ser feita facilmente.
- Muitos outros exemplos ao longo dessas linhas que, quando considerados em conjunto, parecem associar estreitamente a falta de espaço livre ao desempenho inferior.
O exemplo acima ilustra outro motivo pelo qual esse é um mito tão comum: embora a falta de espaço livre não seja uma causa direta de lentidão, desinstalação de vários aplicativos, remoção de conteúdo indexado ou verificado, etc. às vezes (mas nem sempre; fora do escopo deste resposta) aumenta o desempenho novamente por motivos não relacionados à quantidade de espaço livre restante. Mas isso também libera espaço no disco rígido. Portanto, novamente, uma conexão aparente (mas falsa) entre "mais espaço livre" e "computador mais rápido" pode ser feita.
Considere: Se você possui uma máquina funcionando lentamente devido a muitos softwares instalados, etc., e clona exatamente o seu disco rígido em um disco rígido maior, expande suas partições para ganhar mais espaço livre, a máquina não irá acelerar magicamente acima. O mesmo software é carregado, os mesmos arquivos ainda estão fragmentados da mesma maneira, o mesmo indexador de pesquisa ainda é executado, nada muda apesar de ter mais espaço livre.
Isso tem a ver com a busca de um espaço de memória onde salvar coisas?
Não, não tem. Há duas coisas muito importantes que vale a pena notar aqui:
O seu disco rígido não procura por lugares para colocar coisas. Seu disco rígido é estúpido. Não é nada. É um grande bloco de armazenamento endereçado que coloca cegamente as coisas onde seu sistema operacional manda e lê o que é solicitado. As unidades modernas têm mecanismos sofisticados de armazenamento em cache e armazenamento em buffer projetados para prever o que o sistema operacional solicitará com base na experiência que adquirimos ao longo do tempo (algumas unidades estão cientes do sistema de arquivos nelas), mas essencialmente, pense em sua unidade como apenas um grande tijolo estúpido de armazenamento com recursos ocasionais de desempenho de bônus.
Seu sistema operacional também não procura lugares para colocar coisas. Não há "busca". Muito esforço foi feito para solucionar esse problema, pois é fundamental para o desempenho do sistema de arquivos. A maneira como os dados são realmente organizados em sua unidade é determinada pelo seu sistema de arquivos. Por exemplo, FAT32 (antigos PCs DOS e Windows), NTFS (Windows posterior), HFS + (Mac), ext4 (alguns Linux) e muitos outros. Até o conceito de um "arquivo" e um "diretório" são meramente produtos de sistemas de arquivos típicos - os discos rígidos desconhecem as bestas misteriosas chamadas "arquivos". Os detalhes estão fora do escopo desta resposta. Porém, essencialmente, todos os sistemas de arquivos comuns têm maneiras de rastrear onde o espaço disponível está em uma unidade, de modo que uma busca por espaço livre seja, em circunstâncias normais (isto é, sistemas de arquivos com boa saúde), desnecessária. Exemplos:
O NTFS possui uma tabela de arquivos mestre , que inclui os arquivos especiais $Bitmap
, etc., e muitos metadados que descrevem a unidade. Essencialmente, ele controla onde estão os próximos blocos livres, para que novos arquivos possam ser gravados diretamente em blocos livres, sem a necessidade de escanear a unidade todas as vezes.
Outro exemplo, ext4 tem o que é chamado de "alocador de bitmap" , uma melhoria em relação a ext2 e ext3 que basicamente ajuda a determinar diretamente onde estão os blocos livres, em vez de varrer a lista de blocos livres. O Ext4 também suporta "alocação atrasada", ou seja, buffer de dados na RAM pelo sistema operacional antes de gravá-los na unidade, a fim de tomar melhores decisões sobre onde colocá-lo para reduzir a fragmentação.
Muitos outros exemplos.
ou movendo as coisas para criar um espaço contínuo o suficiente para salvar alguma coisa?
Não. Isso não acontece, pelo menos não com qualquer sistema de arquivos que eu conheça. Os arquivos acabam fragmentados.
O processo de "movimentar as coisas para criar um espaço contíguo por tempo suficiente para salvar alguma coisa" é chamado de desfragmentação . Isso não acontece quando os arquivos são gravados. Isso acontece quando você executa o desfragmentador de disco. No Windows mais recente, pelo menos, isso acontece automaticamente em uma programação, mas nunca é acionado ao gravar um arquivo.
Ser capaz de evitar mover coisas assim é essencial para o desempenho do sistema de arquivos e é por isso que a fragmentação acontece e a desfragmentação existe como uma etapa separada.
Quanto espaço vazio no disco rígido devo deixar livre?
Essa é uma pergunta mais complicada de responder, e essa resposta já se transformou em um pequeno livro.
Regras de ouro:
Pessoalmente, geralmente pego uma unidade maior quando tenho cerca de 20 a 25% de espaço livre restante. Isso não está relacionado ao desempenho, é só que, quando chegar a esse ponto, espero que provavelmente esteja ficando sem espaço para os dados em breve e que esteja na hora de obter uma unidade maior.
Mais importante do que observar o espaço livre, é garantir que a desfragmentação programada seja ativada onde for apropriado (não nos SSDs), para que você nunca chegue ao ponto em que isso se torna terrível o suficiente para afetá-lo. Igualmente importante é evitar ajustes equivocados e deixar o sistema operacional funcionar, por exemplo , não desative o pré-buscador do Windows ( exceto os SSDs ), etc.
Há uma última coisa que vale a pena mencionar. Uma das respostas aqui mencionadas menciona que o modo half-duplex da SATA impede a leitura e a gravação ao mesmo tempo. Embora seja verdade, isso é muito simplificado e não tem relação com os problemas de desempenho discutidos aqui. O que isso significa, simplesmente, é que os dados não podem ser transferidos nas duas direções no fio ao mesmo tempo. No entanto, a SATA tem uma especificação bastante complexa que envolve pequenos tamanhos máximos de blocos (cerca de 8kB por bloco na conexão, eu acho), filas de operações de leitura e gravação, etc., e não impede gravações em buffers que ocorrem enquanto as leituras estão em andamento, intercaladas operações etc.
Qualquer bloqueio que ocorra seria devido à competição por recursos físicos, geralmente atenuados por bastante cache. O modo duplex do SATA é quase totalmente irrelevante aqui.
† "Desacelerar" é um termo amplo. Aqui, utilizo-o para me referir a coisas que são vinculadas à E / S (por exemplo, se o seu computador estiver sentado com números limitados, o conteúdo do disco rígido não tem impacto) ou vinculado à CPU e competindo com coisas tangencialmente relacionadas que alto uso da CPU (por exemplo, software antivírus que verifica toneladas de arquivos).
†† Os SSDs são afetados pela fragmentação, pois as velocidades de acesso seqüencial geralmente são mais rápidas que o acesso aleatório, apesar de os SSDs não enfrentarem as mesmas limitações de um dispositivo mecânico (mesmo assim, a falta de fragmentação não garante o acesso sequencial, devido ao nivelamento do desgaste, etc. , como James Snell observa nos comentários). No entanto, em praticamente todos os cenários de uso geral, isso não é problema. As diferenças de desempenho devido à fragmentação nos SSDs são geralmente insignificantes para carregar aplicativos, inicializar o computador etc.
††† Supondo um sistema de arquivos sadio que não esteja fragmentando arquivos de propósito.