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.