Desempenho de 'tar -xf' (relacionado ao tamanho do bloco)

2

Recentemente, estou trabalhando na otimização do desempenho de tar -xf , ou seja, descompactar um arquivo.

Noto que, nas configurações padrão, tar -xf chama write s para gravar 10 KiB de saída de cada vez em partes. No entanto, isso causa uma penalidade de armazenamento grave em nossa configuração atual (usando O_DIRECT flag com E / S para armazenamento flash).

Existe uma maneira de aumentar o tamanho do bloco que tar grava arquivos de saída? Eu estava jogando com -b parâmetro, e notei que se eu faço tar -b 512 -xvf , o desempenho aumenta em 2x . Este é um uso válido neste caso? (Os arquivos tar foram criados nas configurações padrão.)

Há mais alguma coisa que eu possa fazer para melhorar a taxa de transferência de tar ?

    
por Zz'Rot 25.06.2015 / 02:12

2 respostas

2

A opção -b no tar foi usada para controlar as gravações de tar do tamanho do bloco em um dispositivo, de modo que é exatamente o que você deseja. Mas -b 512 em relação ao tar da página de manual (1) significa um tamanho de bloco de 512 * 512 = 262144. Todos os tamanhos de bloco são válidos para que o seu dispositivo, você escreve a saída tar, possa manipular. Na história, isso era necessário para diferentes unidades de fita para as quais o comando tar foi originalmente escrito.

    
por 25.06.2015 / 06:01
1

Todas as implementações de alcatrão, exceto star , têm problemas de desempenho que são resolvidos pelo FIFO que é integrado à estrela desde 1990.

A Star, por padrão, cria um FIFO de 8MB que ajuda a melhorar o desempenho, pois o star também se baseia em dois processos. Um processo lê o arquivo e o outro processo executa a tarefa de extração tar . Se você estiver em um sistema operacional moderno e usar um dispositivo de fita moderno, recomendo especificar um tamanho maior de FIFO até metade da memória física da máquina. Veja a opção star fs= . Com unidades de fita modernas, eu recomendo fs=256M ou mais. Isso reduz drasticamente os problemas comuns de desgaste de fita do reposicionamento da fita quando um modo de fita de fluxo contínuo não é possível.

Se você estiver usando dispositivos de fita reais, será necessário aumentar o tamanho do bloco no momento da criação. Observe que, para portabilidade de fitas, você não deve usar um tamanho de bloco > 6kB. Se o seu sistema operacional local e a sua unidade suportar tamanhos de bloco maiores (e não apenas um tamanho FIFO aumentado), use valores maiores (consulte man page star).

Observe que, se você estiver usando sistemas de arquivos Copy on Write como ZFS ou se estiver em um SO com uma implementação de buffer de sistema de arquivos lenta (como o Linux), talvez queira alternar star para insecure mode disponível apenas com gtar . Faça isso adicionando -no-fsync . No Solaris e ufs , o modo seguro padrão de estrela reduz o desempenho em menos de 10%, no ZFS e na lenta implementação do buffer Linux, esse modo seguro reduz o desempenho em 400%.

    
por 04.09.2015 / 15:43