DD de / dev / zero a / dev / null… o que realmente acontece

13

O que acontece no comando

sudo dd if=/dev/zero of=/dev/null bs=500M count=1. 

Para onde vão os zeros e, em geral, o que acontece? A velocidade é de 905 MB / s

Se eu quiser ramdisk a velocidade é de apenas 388 MB / s. E se eu ddpara o meu disco rígido a velocidade é de apenas 63,2 MB / s

agz
fonte
1
/dev/nullé um bom destino para operações de teste / leitura de tempo . /dev/zeroé uma boa fonte para operações de teste / gravação de tempo . Combinar essa origem e destino em uma operação não faz muito sentido. Nem tenho certeza se isso fornece algum número indireto significativo.
serragem
@sawdust Por outro lado, não?
26714 Jamie
2
Sim, @sawdust, seu comentário acima é desagradável (para iniciantes). of = / dev / sda irá substituir alguém está partições do disco rígido, conteúdos, etc. of = ~ / bigfile.tmp teria sido um exemplo melhor de usar ...
Kevin Traas
2
Eu sei que estou muito atrasado para a festa, mas, caso alguém queira tentar isso sozinho: não há necessidade de executar este comando como root e, portanto, não há necessidade de sudo.
Roel Schroeven
@ Jamie Nah, é o caminho certo.
Awn

Respostas:

14

/dev/zerofornece um fluxo interminável de zero bytes quando lido. Esta função é fornecida pelo kernel e não requer alocação de memória. Todas as gravações /dev/nullsão descartadas silenciosamente.

Como resultado, quando você executa dd, o sistema gera 500 megabytes em zero bytes que simplesmente são descartados. Exceto por um buffer temporário, nenhum dado é armazenado antes, durante ou após esta operação.

A velocidade da transferência de /dev/zeropara /dev/nullé determinada principalmente pela velocidade do seu processador e pelas chamadas relevantes do sistema. (No seu caso, o buffer tem 500 MB de tamanho e, portanto, a operação também testa a velocidade da sua memória.)

bwDraco
fonte
7

Vou traduzir este comando para você:

dd if=/dev/zero of=/dev/null bs=500M count=1

Duplique os dados ( dd) do arquivo de entrada ( if) de /dev/zero(fornecimento virtual ilimitado de 0's) para o arquivo de saída ( of) de /dev/null(sumidouro virtual) usando blocos de tamanho de 500M ( bs= tamanho do bloco) e repita isso ( count) apenas uma vez ( 1).

Em geral, esse comando deve medir apenas a velocidade da memória e do barramento. No entanto, poderá falhar se você não tiver 500 MB de RAM disponível. Portanto, de certa forma, também avalia implicitamente a rapidez com que seu sistema operacional pode alocar grandes blocos de memória.

mvp
fonte
Se ele mede a memória, como é que a gravação em um ramdisk é significativamente mais lenta?
AGZ
2
Como o ramdisk ainda precisa ser formatado para ter um sistema de arquivos, que deve ser mantido pelo driver do kernel. Isso também significa que a gravação no ramdisk terá a sobrecarga de copiar dados do espaço do usuário para o espaço do kernel - não exatamente gratuito. Com / dev / zero ou / dev / null, essa sobrecarga é quase zero.
Mvp
Eu nunca tinha visto "dados duplicados" antes. Lembro-me de ler nas antigas páginas de manual do SunOS que dd significa "copiar e converter" (cc foi tirado).
Dan Pritts
5

/ dev / null é um buraco negro. Não é preciso para testar operações normais de gravação, pois na verdade não grava no disco como faria um arquivo normal. Em vez de fazer com que a cabeça grave no disco, os dados são descartados imediatamente após a gravação no dispositivo, para que sejam sempre mais rápidos que as gravações locais normais.

/ dev / zero é semelhante para leituras. Ele não requer o movimento da cabeça para ler, é apenas um suprimento ilimitado de caracteres nulos; portanto, ele sempre lerá mais rápido do que qualquer leitura local.

Em outras palavras, isso é como testar em um vazio e não fornecerá uma imagem precisa do que as leituras e gravações locais normais devem render.

MaQleod
fonte
Ram também não está envolvido, eu assumo ... então o que esse teste ... velocidade do relógio?
AGZ
1
  1. /dev/nullnão está em lugar nenhum; os dados gravados nele são simplesmente excluídos.

  2. Seu ramdisk possui um sistema de arquivos que ele deve usar. ddprecisa criar uma entrada do sistema de arquivos e gravar seguindo as regras do sistema de arquivos. Além disso, seu sistema operacional está usando sua memória para outras coisas ao mesmo tempo, para que sua operação de gravação obtenha o que resta.

  3. Os discos rígidos que não são SSD são simplesmente lentos, o que também é correto.

cybernard
fonte