O Windows XP age de forma estranha quando o disco rígido está sendo muito usado

2

Isso acontece em duas situações até agora: quando eu uso o sabnzbd, depois que ele é feito o download de um arquivo e está usando o par2.exe para juntá-lo, e apenas agora, quando eu estou desfragmentando um disco rígido de uma VM eu estou correndo.

Esse uso do disco rígido faz com que o XP fique realmente sem resposta. Muitos elementos da GUI não clicam ou atrasaram severamente os cliques. No Chrome, sempre que vou a uma guia que acabei de abrir há alguns minutos, a página inteira é recarregada de forma extremamente lenta - consigo ver os gráficos da página carregando linha por linha. Uma coisa a notar é que, no primeiro caso, meu arquivo de paginação está em um disco rígido completamente separado daquele em que estou executando essas operações, enquanto no segundo caso, ele está em uma partição separada, mas no mesmo disco rígido. O mesmo comportamento ocorre, no entanto.

Quaisquer explicações sobre o porquê isso acontece? Alguma sugestão sobre como fazer com que isso não aconteça?

Tenho 4 GB de RAM e um processador dual core, e minha CPU não chega nem perto de 25% quando essas atividades estão acontecendo, então não parece um caso de falta de recursos. O XP não é eficiente em lidar com essa situação?

    
por user9430 01.09.2009 / 22:47

4 respostas

2

Nota: suponho que você tenha uma unidade de disco girando aqui. As métricas de desempenho nessas áreas são muito diferentes para armazenamento em estado sólido.

Enquanto uma unidade moderna pode sustentar muitas dezenas de Mbytes por segundo ao realizar leituras e gravações em massa, as duas operações descritas envolvem pelo menos dois locais no disco, de modo que há muitos movimentos de cabeça envolvidos. A latência dos movimentos da cabeça tem um efeito massivo na taxa de transferência, pois toda vez que a unidade precisa mover os cabeçotes, há um atraso na hora de realmente colocá-los no lugar certo, um atraso na espera deles e um atraso na espera parte do disco para girar passado. Esses atrasos são pequenos por si mesmos (nem 10ns por movimento no total, em média, para a maioria dos drives modernos), mas se o drive puder empurrar 100Mbyte / s em fluxo total 10ms, cada movimento desperdiça o tempo de 1Mbyte de transferência de dados. Com muita coisa acontecendo, a unidade pode facilmente passar mais tempo movendo as cabeças do que gastando lendo e gravando dados (leia por uns 10s de ms, mova a cabeça, leia de lá um pouquinho, mova a cabeça, escreva para alguns ms, mova a cabeça ...).

Como você está desfragmentando a unidade, o utilitário passa a maior parte do tempo lendo de um lugar no disco e gravando em outro, um pequeno número de blocos de cada vez. A extração de conteúdo de um conjunto de arquivos protegido é ainda pior, pois há pelo menos dois arquivos sendo lidos (um arquivo de origem e um ou mais arquivos de paridade), bem como o arquivo de saída sendo gravado. Mesmo apenas uma operação de cópia simples em um arquivo grande tem o efeito. Tudo isso exclui os movimentos de cabeça necessários para manter as estruturas de diretório e os mapas de espaço livre atualizados, à medida que os blocos são movidos e / ou os arquivos estendidos. Executar uma VM pode ser igualmente exigente dependendo do que a VM está fazendo no momento (e a VM reduzirá a RAM disponível na máquina host para usar como cache / buffers, o que pode piorar a situação, e qualquer operação de gravação na VM pode ser muito mais exigente do que a mesma operação no host diretamente, especialmente se você usar drives virtuais "crescentes").

Com tudo isso acontecendo, se um aplicativo GUI precisar solicitar até mesmo um pouco de E / S, ele poderá ficar na fila atrás de todas as outras coisas que estão acontecendo. A menos que o aplicativo seja totalmente multiencadeado, é provável que ele "bloqueie" a espera da conclusão da operação de E / S, o que significa que não está em condições de responder a nenhuma mensagem (como "o usuário clicou aqui") a fila de eventos do Windows até chegar a sua vez. Quanto mais acontecendo de uma vez, pior ele ficará, e você não notará isso nas leituras "CPU ocupado" porque a CPU não está ocupada - ela fica esperando que as operações de IO sejam concluídas na maioria das vezes nessas circunstâncias.

Se você tiver duas ou mais unidades, poderá reduzir bastante o efeito que isso tem sobre você, espalhando a carga pelas unidades. Se a VM estiver em uma unidade separada do sistema operacional principal, ela não concorrerá pela manutenção de E / S quando a VM estiver ocupada enquanto o host estiver desfragmentando a partição do sistema. Além disso, extrair um arquivo de uma unidade e gravar a saída para outra será visivelmente mais rápido do que a extração para a mesma unidade, porque a operação de leitura não está competindo diretamente com a operação de gravação para posicionamento da cabeça na unidade.

    
por 01.09.2009 / 23:56
3

A desfragmentação de um disco rígido em uma máquina fará com que qualquer máquina fique lenta. Ele está movendo muitos dados por todo o lugar.

Que tipo de computador você tem? Você tem um processador single ou dual core? Quanto ram? Existem muitos fatores que podem entrar em jogo aqui.

O mais provável é que seja um processo pendente ou algo parecido. Você disse que está executando uma VM. Eles podem consumir muitos recursos se você estiver executando um trabalho na VM e no sistema operacional host. VMs são operações muito intensivas de CPU. Está executando um sistema operacional inteiro no seu sistema operacional principal.

    
por 01.09.2009 / 22:49
2

Sinceramente, parece que você está fazendo muito tudo de uma vez. O que você está vendo é um gargalo - o disco rígido está sendo solicitado a fazer várias coisas de uma só vez (algumas com mais prioridade do que outras), por isso, coisas como cliques da interface gráfica estão "aguardando" sua vez de serem processadas.

    
por 01.09.2009 / 22:56
2

O problema pode ser causado pela atividade em questão (por exemplo, desfragmentação) ocupando uma porcentagem muito grande da CPU. Isso deixa muito pouco para a interface do usuário, daí a falta de capacidade de resposta.

Você pode tentar diminuir a prioridade do par2.exe ou a desfragmentação. Vá para o Gerenciador de Tarefas > Processos, clique com o botão direito do mouse sobre o processo incorreto e selecione Definir prioridade > Baixo.

Você está executando um processador de núcleo único? Ter dois ou mais processadores (ou núcleos) permitirá que a interface do usuário seja executada no que não estiver sendo solicitado.

    
por 01.09.2009 / 22:56