Estou construindo um arquivo tar de tamanho 4.2T em incrementos de ~440Gb. O tempo para completar cada um dos incrementos (seções) é dado abaixo.
Section 1 [486.01 seconds]
Section 2 [623.42 seconds]
Section 3 [612.81 seconds]
Section 4 [622.24 seconds]
Section 5 [635.72 seconds]
Section 6 [764.05 seconds]
Section 7 [1115.31 seconds]
Section 8 [1226.1 seconds]
Section 9 [1331.82 seconds]
Section 10 [1429.07 seconds]
Os tempos entre parênteses refletem o tempo que leva para escrever cada seção (ou seja, não é cumulativo). Por que, em geral, cada acréscimo subsequente leva mais tempo para gravar a mesma quantidade de dados do que o anterior? Este é um grande problema para mim, porque tenho que criar arquivos tar de vários terabytes e quero entender os gargalos para poder acelerar a criação e extração de arquivos.
Parece que o GNU tar demora mais porque está verificando todo o arquivo original antes de anexar. Parece que isso deve ser feito apenas para
--update
, já que a maior parte do código é sobre a remoção de versões antigas de arquivos, mas por algum motivo também é feito para--append
e--catenate
também. (Consulte a função update_archive() no código-fonte.)O
bsdtar
comando de libarchive não faz isso; ele apenas anexa imediatamente os novos dados.