Utilice el comando dd para probar la evaluación del rendimiento del disco desnudo

Probar el rendimiento de escritura en disco desnudo

Escritura directa, sin sincronización de datos, sin protección de la memoria caché de escritura, y observar el rendimiento. Podemos ver que cuantos más datos se escriben, menor será el rendimiento de escritura del disco.

Entre ellos, / dev / zero es un pseudo dispositivo, que solo genera una secuencia de caracteres nula y no genera IO para él. Por lo tanto, IO se concentrará en los archivos, de los archivos solo se usan para escribir, por lo que este comando es equivalente a escribir en el disco de prueba. Habilidad

[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]#

Probar el rendimiento de lectura de disco desnudo

Lea directamente, observe el desempeño,

/ dev / null es un pseudo dispositivo, que es equivalente a un agujero negro. De no generará IO para el dispositivo, por lo que el IO de este comando solo se produce en / dev / sdb1, que también es equivalente a probar la capacidad de lectura del 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

Mira la documentación de ayuda

Uso: dd [OPERAND] ...
  o: dd OPTION
copia archivos de acuerdo con operandos, conversiones y formatos.

  bs = BYTES lee y escribe bytes BYTES a la vez
  cbs = BYTES convierte bytes
  BYTES a la vez conv = CONVS convierte archivos según una lista de símbolos separados por comas
  recuento = N copias solo N bloques de entrada
  ibs = BYTES lee bytes BYTES a la vez (valor predeterminado: 512)
  if = FILE lee desde FILE en lugar de stdin
  iflag = FLAGS lee una lista de símbolos separados por comas
  obs = BYTES escribe bytes BYTES a la vez (por defecto: 512)
  de = FILE escribe en FILE en lugar de stdout
  oflag = FLAGS según Lista de símbolos separados por comas escritos para
  buscar = N salta N bloques de tamaño de bloque al comienzo de la salida
  salta = N salta bloques de tamaño N ibs al comienzo del
  estado de entrada = NIVELA el nivel de información que se imprimirá en stderr;
                  'ninguno 'Excepto por los mensajes de error, todo se suprimirá,
                  ' noxfer 'suprimirá las estadísticas finales de transferencia y
                  ' progreso 'mostrará estadísticas de transmisión regulares

N y BYTES pueden ir seguidos de los siguientes sufijos de multiplicación:
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 puede ser:

 ascii de EBCDIC a ASCII
 ebcdic de ASCII a EBCDIC ebcdic
 ibm de ASCII para alternar el
 relleno de bloque EBCDIC ibmc de registros terminados en nueva línea con espacios de
 desbloqueo de tamaño cbs reemplazar espacios finales en registros de tamaño cbs con líneas
 nuevas Cambie mayúsculas a minúsculas
 ucase Cambie minúsculas a mayúsculas
 dispersas Intente encontrar el
 hisopo de salida en lugar de escribir en el bloque de entrada NUL Intercambie cada par de
 sincronización de bytes de entrada Cada bloque de entrada se llena sincrónicamente con NUL a tamaño ibs; use bloquear o desbloquear cuando se use, rellene espacios En lugar de NUL
 excl si el archivo de salida ya existe, excl falla
 nocreat no crea el archivo de salida
 notrunc no trunca el archivo de salida
 noerror error no termina la operación
 fdatasync escribe físicamente los datos del archivo de salida antes de la finalización, no solo devuelve
 fsync después de escribir el caché , sino que Escribir metadatos al mismo tiempo

Cada símbolo de BANDERA puede ser:

 append Append append mode (solo tiene sentido para la salida; conv = notrunc se recomienda)  directorio de escritura
 directa directamente usando el
directorio de datos de E / S directa , falla si no es un directorio
 dsync usa E / S sincrónica para la
 sincronización de datos , de manera similar, pero también para El
 bloque completo de metadatos acumula todo el bloque de entrada (solo iflag)
 nonblock usa E / S sin bloqueo.  Noatime
 no actualiza el tiempo de acceso
 nocache descarta los datos almacenados en caché por la
noche no se asigna desde el terminal de control de archivos
 nofollow no sigue el enlace simbólico
 count_bytes contará 'count = N' Es el número de bytes (solo iflag)
 skip_bytes trata 'skip = N' como el número de bytes (solo
 iflag ) seek_bytes trata 'seek = N' como el número de bytes (solo oflag)

Simplemente envíe la señal USR1 al proceso 'dd' en ejecución.
Imprima las estadísticas de E / S con error estándar, luego reinicie la copia.

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

Cómo probar con precisión la escritura en el disco

Después de familiarizarse con los ejemplos y documentos anteriores, verifique cómo escribir realmente en el disco

Analice los parámetros, conv = fdatasync Sincronice los datos io al disco, es decir, io devuelve directamente el disco después de que se realizó correctamente

oflag = direct, dsync omite el caché de escritura y escribe directamente en el disco, sincronizando IO

[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

Leer evaluación de desempeño

De la misma manera, podemos obtener el rendimiento de lectura. En el comando dd, cuanto mayor es el recuento, más cerca de la situación real (continuación IO)

[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 artículos originales · 69 alabanzas · 270,000+ visitas

Supongo que te gusta

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