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

12

O que acontece no comando

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

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

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

    
por agz 09.04.2013 / 01:26

4 respostas

13

/dev/zero fornece um fluxo infinito de zero bytes quando lido. Esta função é fornecida pelo kernel e não requer alocação de memória. Todas as gravações em /dev/null são descartadas silenciosamente.

Como resultado, quando você executa o 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 depois desta operação.

A velocidade da transferência de /dev/zero para /dev/null é determinada principalmente pela velocidade de 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).

    
por 09.04.2013 / 06:32
6

Eu traduzirei este comando para você:

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

Dados duplicados ( dd ) do arquivo de entrada ( if ) de /dev/zero (fornecimento ilimitado virtual de 0 ) no arquivo de saída ( of ) de /dev/null (sumidouro virtual) usando blocos de tamanho de 500M ( bs = tamanho de bloco) e repita isso ( count ) apenas uma vez ( 1 ).

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

    
por 09.04.2013 / 08:18
5

/ dev / null é um buraco negro. Ele não é preciso para testar operações normais de gravação, pois ele não grava no disco como faria um arquivo normal. Em vez de ter a cabeça gravando no disco, os dados são descartados imediatamente após a gravação no dispositivo, portanto, sempre será mais rápido que as gravações locais normais.

/ dev / zero é semelhante para leituras. Ele não requer movimento da cabeça para ler, é apenas um suprimento ilimitado de caracteres nulos, então 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 produzir.

    
por 09.04.2013 / 02:08
1
  1. /dev/null não está em lugar algum; os dados gravados são simplesmente excluídos.

  2. Seu ramdisk tem um sistema de arquivos que precisa usar. dd tem que criar uma entrada do sistema de arquivos e escrever 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 receba o que resta.

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

por 09.04.2013 / 02:02

Tags