Use o comando dd para testar a avaliação de desempenho de disco bare

Teste o desempenho de gravação em disco bare

Gravação direta, sem sincronização de dados, sem proteção do cache de gravação e observe o desempenho.Podemos ver que quanto mais dados gravados, menor o desempenho de gravação em disco é óbvio, indicando que essa operação não pode refletir corretamente o desempenho de gravação em disco

Entre eles, / dev / zero é um pseudo-dispositivo, que gera apenas um fluxo de caracteres nulo e não gera E / S. Portanto, o IO será concentrado em arquivos, os arquivos são usados ​​apenas para gravação, portanto, este comando é equivalente à gravação no disco de teste Capacidade.

[root@orcadt6 opt]# dd if=/dev/zero of=/dev/vda bs=4k count=100000
100000+0 records in
100000+0 records out
409600000 bytes (410 MB) copied, 1.21162 s, 338 MB/s
[root@orcadt6 opt]# dd if=/dev/zero of=/dev/vda bs=4k count=1000000
1000000+0 records in
1000000+0 records out
4096000000 bytes (4.1 GB) copied, 30.8322 s, 133 MB/s
[root@orcadt6 opt]# dd if=/dev/zero of=/dev/vda bs=4k count=5000000
5000000+0 records in
5000000+0 records out
20480000000 bytes (20 GB) copied, 270.688 s, 75.7 MB/s
[root@orcadt6 opt]#

Teste o desempenho de leitura de disco bare

Leia diretamente, observe o desempenho,

/ dev / null é um pseudo-dispositivo, equivalente a um buraco negro. De não gera E / S para o dispositivo, portanto, a E / S deste comando ocorre apenas em / dev / sdb1, que também é equivalente a testar a capacidade de leitura do disco

[root@orcadt6 opt]# dd if=/dev/vda of=/dev/null bs=4k count=5000000
5000000+0 records in
5000000+0 records out
20480000000 bytes (20 GB) copied, 219.49 s, 93.3 MB/s
[root@orcadt6 opt]# dd if=/dev/vda of=/dev/null bs=4k count=1000000
1000000+0 records in
1000000+0 records out
4096000000 bytes (4.1 GB) copied, 24.9427 s, 164 MB/s
[root@orcadt6 opt]# dd if=/dev/vda of=/dev/null bs=4k count=100000
100000+0 records in
100000+0 records out
409600000 bytes (410 MB) copied, 0.353777 s, 1.2 GB/s
[root@orcadt6 opt]# dd if=/dev/vda of=/dev/null bs=4k
^C6425487+0 records in
6425486+0 records out
26318790656 bytes (26 GB) copied, 688.21 s, 38.2 MB/s

Veja a documentação de ajuda

Uso: dd [OPERANDO] ...
  ou: dd OPTION
copia os arquivos de acordo com operandos, conversões e formatos.

  bs = BYTES lê e grava bytes de bytes de uma vez
  cbs = BYTES converte bytes de uma vez
  conv = CONVS converte arquivos de acordo com uma
  contagem de lista de símbolos separados por vírgula = N copia apenas N blocos de entrada
  ibs = BYTES lê bytes de BYTES por vez (padrão: 512)
  if = FILE lê FILE em vez de stdin
  iflag = FLAGS lê uma lista de símbolos separados por vírgula
  obs = BYTES grava BYTES bytes de cada vez (padrão: 512)
  de = FILE grava FILE em vez de stdout
  oflag = FLAGS de acordo com Lista de símbolos separados por vírgula gravados para
  procurar = N pula N blocos de tamanho de bloco no início da saída
  pular = N pula blocos de tamanho de N ibs no início do
  status de entrada = NÍVEL o nível de informação a ser impresso no stderr;
                  'none 'Exceto pelas mensagens de erro, tudo será suprimido,
                  ' noxfer 'suprimirá as estatísticas finais de transferência e
                  ' progresso 'mostrará estatísticas regulares de transmissão

N e BYTES podem ser seguidos pelos seguintes sufixos de multiplicação:
c = 1, w = 2, b = 512, kB = 1000, K = 1024, MB = 1000 * 1000, M = 1024 * 1024, xM = M
para T, P, E, Z, Y, GB = 1000 * 1000 * 1000, G = 1024 * 1024 * 1024, etc.

Cada símbolo CONV pode ser:

 ascii de EBCDIC para ASCII
 ebcdic de ASCII para EBCDIC ebcdic
 ibm de ASCII para alternativo EBCDIC ibmc
 padding de registros terminados de nova linha com espaços de
 desbloqueio de tamanho cbs substitui espaços finais em registros de tamanho cbs com novas linhas
 lcase alterar maiúsculas para minúsculas
 para maiúsculas para minúsculas mudança UCASE
 escasso em vez de tentar encontrar a saída do bloco de entrada é escrito NUL
 cotonete interrupção, cada par de bytes de entrada
 de cada entrada de sincronismo NUL sincronização de bloco de enchimento de IBS de tamanho, quando utilizado para bloquear ou uso de desbloqueio, enchendo os espaços Em vez de NUL
 excl, se o arquivo de saída já existir, excl falhará
 nocreat não criará o arquivo de saída
 notrunc não
 truncará o arquivo de saída noerror error não encerra a operação
 fdatasync grava fisicamente os dados do arquivo de saída antes da conclusão, não apenas retorna
 fsync após gravar o cache , mas Escreva metadados ao mesmo tempo

Cada símbolo da BANDEIRA pode ser:

 adicionando modo de acréscimo adicional (só faz sentido para a saída; = notrunc são recomendados CONV)
 A utilização directa Directo Directo de I / O de dados
 directório gravação directório, o directório falha não
 dsync síncrono de I / O de dados
 de sincronização de sincronização do mesmo modo, mas é também usado O
 bloco completo de metadados acumula todo o bloco de entrada (somente iflag). O bloco
 não usa E / S sem bloqueio. O  Noatime
 não atualiza o tempo de acesso
 nocache descarta dados em cache
noctty não é alocado a partir do terminal de controle de arquivo
 nofollow não segue o link simbólico
 count_bytes contará 'count = N' É o número de bytes (somente iflag)
 skip_bytes trata 'skip = N' como o número de bytes (somente
 iflag ) seek_bytes trata 'seek = N' como o número de bytes (somente oflag)

Apenas envie o sinal USR1 para o processo 'dd'.
Imprima as estatísticas de E / S para erro padrão e, em seguida, reinicie a cópia.

  $ dd se = / dev / zero de = / dev / null & pid = $!
  $ kill -USR1 $ pid; sleep 1; kill $ pid
  18335302 + 0 registros em
  18335302 + 0 registros
   9387674624 bytes (9,4 GB) copiados, 34,6279 segundos, 271 MB / s

Como testar com precisão a gravação no disco

Depois de se familiarizar com os exemplos e documentos acima, verifique como realmente gravar no disco

Analise os parâmetros, conv = fdatasync Sincronize os dados io para o disco, ou seja, io retornará o disco diretamente após o êxito

oflag = direct, o dsync ignora o cache de gravação e grava diretamente no disco, E / S síncrona, os seguintes resultados são relativamente reais, como pode ser visto no disco que escrevi, uso um disco virtual de um dispositivo virtual e a gravação relativa é lenta

[root@orcadt6 opt]# dd if=/dev/zero of=/dev/vda bs=4k count=10 conv=fdatasync oflag=direct,dsync
10+0 records in
10+0 records out
40960 bytes (41 kB) copied, 0.0886036 s, 462 kB/s
[root@orcadt6 opt]# dd if=/dev/zero of=/dev/vda bs=4k count=100 conv=fdatasync oflag=direct,dsync
100+0 records in
100+0 records out
409600 bytes (410 kB) copied, 0.36866 s, 1.1 MB/s
[root@orcadt6 opt]# dd if=/dev/zero of=/dev/vda bs=4k count=1000 conv=fdatasync oflag=direct,dsync
1000+0 records in
1000+0 records out
4096000 bytes (4.1 MB) copied, 4.07199 s, 1.0 MB/s
[root@orcadt6 opt]# dd if=/dev/zero of=/dev/vda bs=4k count=10000 conv=fdatasync oflag=direct,dsync
10000+0 records in
10000+0 records out
40960000 bytes (41 MB) copied, 42.1317 s, 972 kB/s

Leia a avaliação de desempenho

Da mesma forma, podemos obter o desempenho da leitura.No comando dd, quanto maior a contagem, mais próxima da situação real (IO sustentada)

[root@orcadt6 opt]# dd if=/dev/vda of=/dev/null bs=4k count=10000  iflag=direct,dsync
10000+0 records in
10000+0 records out
40960000 bytes (41 MB) copied, 12.4751 s, 3.3 MB/s
[root@orcadt6 opt]# dd if=/dev/vda of=/dev/null bs=4k count=1000  iflag=direct,dsync
1000+0 records in
1000+0 records out
4096000 bytes (4.1 MB) copied, 1.10571 s, 3.7 MB/s
[root@orcadt6 opt]# dd if=/dev/vda of=/dev/null bs=4k count=10  iflag=direct,dsync
10+0 records in
10+0 records out
40960 bytes (41 kB) copied, 0.00106058 s, 38.6 MB/s
[root@orcadt6 opt]# dd if=/dev/vda of=/dev/null bs=4k count=20000  iflag=direct,dsync
20000+0 records in
20000+0 records out
81920000 bytes (82 MB) copied, 27.4144 s, 3.0 MB/s

 

Publicado 59 artigos originais · 69 elogios · Mais de 270.000 visualizações

Acho que você gosta

Origin blog.csdn.net/pansaky/article/details/100915400
Recomendado
Clasificación