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 dd
para o meu disco rígido a velocidade é de apenas 63,2 MB / s
/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.Respostas:
/dev/zero
fornece 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/null
sã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/zero
para/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.)fonte
Vou traduzir este comando para você:
Duplique os dados (
dd
) do arquivo de entrada (if
) de/dev/zero
(fornecimento virtual ilimitado de0
'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.
fonte
/ 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.
fonte
/dev/null
não está em lugar nenhum; os dados gravados nele são simplesmente excluídos.Seu ramdisk possui um sistema de arquivos que ele deve usar.
dd
precisa 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.Os discos rígidos que não são SSD são simplesmente lentos, o que também é correto.
fonte