Qual é a diferença entre tamanhos de bytes para DD

4

Se eu usar o tamanho do byte extremo de 1 gb vs 1 mb, por exemplo, no nível do hardware, qual é a diferença? O que um tamanho de byte faz se um fluxo constante de dados está sendo gravado no disco >?

    
por agz 29.04.2013 / 19:25

1 resposta

7

A diferença está na quantidade de dados lidos / gravados de uma só vez .

Programas raramente trabalham com fluxos constantes verdadeiros - eles geralmente lêem e escrevem dados em partes: lêem 1 kB de entrada, escrevem 1 kB para a saída, lêem 1 kB da entrada, escrevem ... Então o bs= ( tamanho ) para dd informa quantos dados serão lidos de uma vez. Geralmente é mais eficiente pedir ao sistema operacional para ler um disco de 2 MB do que ler dezesseis pedaços de 128 kB. (Em parte porque o sistema operacional precisa fazer menos trabalho.) Por outro lado, se você tentar usar bs=16G , ele tentará ler um bloco de 16 gigabytes na RAM e, em seguida, gravá-lo imediatamente; você provavelmente ficará sem memória RAM.

Também depende da mídia de armazenamento. Discos não são streams e não são endereçados por bytes, sejam eles magnéticos ou baseados em flash - eles permitem somente a leitura de pedaços do tamanho de blocos (onde o tamanho do bloco depende do hardware; muitos discos têm 512 bytes ou 4 kB). Se o sistema operacional tentar ler 100 bytes, o disco terá que ler todo o bloco de qualquer maneira e, em seguida, descartar os dados. (É ainda pior quando se escreve: não tenho certeza com discos magnéticos, mas pelo menos com flash, se você escrever 100 bytes o disco tem que ler o bloco inteiro, atualizá-lo na memória, então < Em seguida, o tamanho do bloco usado por dd também é importante - será muito mais rápido se o tamanho de bloco usado por dd for um múltiplo exato do tamanho do bloco do disco. (Supondo que não haja problemas com o alinhamento da partição, é claro).

    
por 29.04.2013 / 19:45

Tags