¿Cómo optimizo el rendimiento de eSATA en Linux?

¿Cómo optimizo el rendimiento de eSATA en Linux?

Experimento un rendimiento eSATA muy lento. Alrededor de 5 mb/s en un disco que maneja fácilmente 150-200 mb/s. ¿Necesito habilitar alguna configuración o módulo para acelerarlo? El disco es un disco de 4 TB y la computadora es un HP MicroServer. El núcleo es 3.2.0-4-amd64.

Actualizar:

La distribución es Debian Lenny.

He medido usando dd if=/dev/zero of=/mnt/foo y if=/mnt/somebigfile.tar.gz of=/dev/null. He probado varios tamaños de bloque para dd, así como para oflag=direct e iflag=direct.

Tanto la lectura como la escritura son lentas. Sin embargo, lo que más me preocupa son las escrituras, ya que se suponía que este disco se usaría para realizar copias de seguridad...

Actualizar:

He realizado algunas pruebas de rendimiento más con dd. Aquí están los resultados:

(root@corvina) (14-08-17 22:40:29) (P:0 L:2) [0]
~ # alias drop-all-caches                         [R0 J0 L:0.70 1.13 1.35 U:3+11:29 pts/4 2122H]
drop-all-caches='sync ; echo 3 > /proc/sys/vm/drop_caches'
(root@corvina) (14-08-17 22:40:39) (P:0 L:2) [0]
~ # hdparm -Tt /dev/sda                           [R0 J0 L:0.60 1.10 1.33 U:3+11:29 pts/4 2123H]

/dev/sda:
 Timing cached reads:   2970 MB in  2.00 seconds = 1484.76 MB/sec
 Timing buffered disk reads: 528 MB in  3.01 seconds = 175.37 MB/sec
(root@corvina) (14-08-17 22:40:59) (P:0 L:2) [0]
~ # drop-all-caches; time dd if=/dev/zero of=/mnt/zero.dat bs=8k count=100k; time sync
102400+0 records in
102400+0 records out
838860800 bytes (839 MB) copied, 1,35067 s, 621 MB/s
dd if=/dev/zero of=/mnt/zero.dat bs=8k count=100k  0,03s user 1,32s system 91% cpu 1,485 total
sync  0,00s user 0,01s system 0% cpu 8,002 total
(root@corvina) (14-08-17 22:41:57) (P:0 L:2) [0]
~ # rm -vf /mnt/zero.dat                          [R0 J0 L:0.57 0.93 1.25 U:3+11:30 pts/4 2125H]
removed `/mnt/zero.dat'
(root@corvina) (14-08-17 22:42:28) (P:0 L:2) [0]
~ # drop-all-caches; time dd if=/dev/zero of=/mnt/zero.dat bs=8k count=1000k; time sync
1024000+0 records in
1024000+0 records out
8388608000 bytes (8,4 GB) copied, 68,5064 s, 122 MB/s
dd if=/dev/zero of=/mnt/zero.dat bs=8k count=1000k  0,41s user 22,31s system 33% cpu 1:08,58 total
sync  0,00s user 0,01s system 0% cpu 14,465 total
(root@corvina) (14-08-17 22:43:52) (P:0 L:2) [0]
~ # drop-all-caches; time dd if=/dev/zero of=/mnt/zero.dat bs=8k count=1000k oflag=direct; time sync
1024000+0 records in
1024000+0 records out
8388608000 bytes (8,4 GB) copied, 184,3 s, 45,5 MB/s
dd if=/dev/zero of=/mnt/zero.dat bs=8k count=1000k oflag=direct  0,79s user 109,24s system 59% cpu 3:04,62 total
sync  0,00s user 0,01s system 2% cpu 0,289 total
(root@corvina) (14-08-17 22:47:59) (P:0 L:2) [0]
~ # drop-all-caches; time dd of=/dev/null if=/mnt/zero.dat                                       16384000+0 records in
16384000+0 records out
8388608000 bytes (8,4 GB) copied, 82,3752 s, 102 MB/s
dd of=/dev/null if=/mnt/zero.dat  8,13s user 33,21s system 50% cpu 1:22,44 total
(root@corvina) (14-08-17 22:49:58) (P:0 L:2) [0]
~ # drop-all-caches; time dd of=/dev/null if=/mnt/zero.dat bs=8k
1024000+0 records in
1024000+0 records out
8388608000 bytes (8,4 GB) copied, 82,0298 s, 102 MB/s
dd of=/dev/null if=/mnt/zero.dat bs=8k  0,76s user 19,02s system 24% cpu 1:22,18 total
(root@corvina) (14-08-17 22:51:31) (P:0 L:2) [0]
~ # drop-all-caches; time dd of=/dev/null if=/mnt/zero.dat bs=8k iflag=direct
1024000+0 records in
1024000+0 records out
8388608000 bytes (8,4 GB) copied, 157,355 s, 53,3 MB/s
dd of=/dev/null if=/mnt/zero.dat bs=8k iflag=direct  0,88s user 85,48s system 54% cpu 2:37,42 total

Estos números no se parecen en nada a los que obtuve antes. Ya es bastante tarde aquí, así que tengo que irme a dormir. Espero poder investigar esto más a fondo el martes.

Respuesta1

Primero comience probando su rendimiento

  • Usando la terminal, puedes usar: sudo hdparm -Tt /dev/sda(donde /dev/sda es tu disco)
  • Para hacer una prueba de escritura: dd if=/dev/zero of=/mnt/yourdisk/output.tmp bs=8k count=100k(monte su disco en /mnt/yourdisk)
  • Y una prueba de lectura: dd if=/mnt/yourdisk/output.tmp of=/dev/null bs=8k(primero cree el archivo usando la prueba de escritura y monte el disco)
  • Además, si desea utilizar la GUI y tiene Gnome, puede utilizar gnome-disks(más información sobre ese proyecto)

Encuentra el eslabón más débil

prefiero usarencimapara analizar lo que está sucediendo en su sistema e identificar cuellos de botella. Lea/escriba en la unidad eSATA (ver arriba) y al mismo tiempo observe la parte superior (presione dmientras ejecuta la parte superior para ver la información relacionada con el disco). ¿Que esta pasando ahí? ¿Puede proporcionar una captura de pantalla?

Mejorar el rendimiento de eSATA

Aquí hay algunos consejos generales (con la información que usted proporcionó, no puedo ser más específico. Proporcione más información sobre su cadena de hardware si desea consejos más específicos):

  • Obtener los controladores adecuados para su hardware (e)SATA
  • Algunas distribuciones de Linux proporcionan scsitools(Sitio del proyecto), que también puede resultar muy útil.
  • ¿Su BIOS tiene alguna opción para su puerto eSATA, comoModo IDE o AHCI.

información relacionada