Comportamento estranho com 'find -delete'

1

Estou usando o Ubuntu 12.04 com discos rígidos 2 x 2TB SATA3 no software RAID1. O sistema de arquivos é ext4 com data=writeback .

Ao usar find . -maxdepth 1 -name '*' -delete para excluir um grande número de arquivos em um diretório, fazer df nos intervalos mostra que:

Inicialmente um grande número de arquivos é excluído, e iotop mostra a operação find levando a maior parte do IO.

MaistardedfmostraqueonúmerodearquivospermanececonstanteeiotopmostraqueousodeIOagoraédominadoporjbd2emd4_raid1.

Alguns minutos depois , df mostra o número de arquivos caindo mais uma vez.

Alguém pode explicar esse comportamento? Isso é normal ou há algo errado com o meu servidor? Além disso, como 3 processos podem ter 99,99% de uso de IO ao mesmo tempo?

    
por Nyxynyx 14.03.2013 / 13:57

2 respostas

2

É o que eu esperaria. Find localiza arquivos - ou seja, lê a partir do VFS, quando os dados não estão no cache ele precisa ser buscado do disco. Conforme processa cada arquivo, ele enfileira as alterações a serem gravadas. Em algum momento, o buffer de gravação fica cheio e as alterações devem ser gravadas no disco - nesse ponto, o processo que executa as gravações será bloqueado, fazendo mais solicitações de gravação OU READ, até que haja espaço para armazenar mais gravações.

    
por 14.03.2013 / 14:39
0

Você pode impedir que o sistema seja bloqueado, reduzindo a prioridade de E / S do processo:

ionice -c3 nice -15 find ... -delete

Se isso não for suficiente, você pode usar chrt para colocar o processo na classe SCHED_IDLE.

    
por 15.03.2013 / 16:55