¿Un concentrador USB afecta el rendimiento?

24

Tengo dos dispositivos Quiero el máximo rendimiento y la latencia con ( MIDI tambores y el teclado MIDI por ejemplo).

¿Conectar ambos al mismo puerto USB a través de un concentrador limitaría efectivamente la velocidad máxima de transferencia de datos a 1/2 para cada uno de ellos?

Supongo que sí, pero no sabía si los concentradores USB tenían un protocolo de reconocimiento de manos y prioridad disponible (por ejemplo, deje que el dispositivo con el búfer de datos más largo se comunique primero).

SwimBikeRun
fuente

Respuestas:

17

Sí. Todos los dispositivos conectados a través de un concentrador USB comparten el ancho de banda disponible para ese concentrador. Sin embargo, no específicamente al 50% cada uno. Tienes 480 Mbit / s para trabajar por concentrador USB 2.0 en la computadora . ¿Qué quiero decir con eso? Bueno, su computadora tiene concentradores USB integrados. Sí, no todos los puertos son una entidad individual. En la mayoría de los casos, cuando ve dos puertos USB apilados uno encima del otro, están en un concentrador juntos internamente.

Esto también se aplica con dos puertos uno al lado del otro en las computadoras portátiles. Por lo tanto, no piense que solo puede conectar dos concentradores en los puertos USB que están uno al lado del otro y tener MUCHOS puertos USB para conectar dispositivos de alta velocidad de transferencia de datos.

Lo que REALMENTE debe hacer es observar las tasas de transferencia de datos esperadas de los dispositivos que desea conectar. Esperaría que las baterías MIDI se consideren una velocidad de transferencia baja, mientras que el teclado será una velocidad de transferencia baja o media. Esto se compararía con algo como una tarjeta de sonido USB ... que no querría compartir un concentrador con nada más.

Con un concentrador con alimentación, cada dispositivo obtendrá la potencia que necesita, mientras que con un concentrador sin alimentación, todos los dispositivos comparten la potencia que el puerto USB del host pueda suministrar. Entonces, hay que tener en cuenta también.

Lo más probable es que ya lo sepas, pero para problemas de latencia, los controladores ASIO4ALL solucionarán la mayoría, si no todos, los problemas potenciales. Solo pongo eso ahí afuera.

Bon Gart
fuente
+1 para ASIO4ALL. Lo usé para matar mi retraso en Rocksmith. ¡Qué maravilla saber la comunidad de Rocksmith sobre esto!
Camelbrush
¿Está seguro de que un controlador de audio USB sufrirá un cuello de botella de rendimiento si no tiene un controlador USB completo para sí mismo? Creo que deberían estar diseñados para funcionar en hubs, al menos para audio de 2 canales.
jiggunjer
28

En realidad, me sorprende que la primera respuesta sea aceptada y votada sin ningún hecho que respalde la declaración, ya que probablemente sea una equivocada. Tanto la batería MIDI como el teclado MIDI son dispositivos de baja velocidad, por lo que consumirán menos del 1% del ancho de banda de un concentrador de alta velocidad como máximo (2 * 1 Mbit / s / 480 Mbit / s * 100% = 0.4% )

De hecho, la presencia del concentrador introducirá una latencia, que es del orden de decenas de microsegundos para concentradores de baja velocidad o cientos de nanosegundos para concentradores de alta velocidad. En el último caso, esta latencia desaparecerá una vez que agregue la latencia introducida por el software MIDI.

Además, el protocolo USB admite las prioridades de transferencias (consulte Transferencias de interrupción ), lo que permitirá que los dispositivos MIDI coexistan incluso con un disco duro o un escáner en el mismo bus sin mucho efecto en su velocidad de transferencia o latencia. Sin embargo, no haré ninguna declaración ya que no estoy familiarizado con los dispositivos MIDI en particular.

Dmitry Grigoryev
fuente
15

La respuesta breve es que realmente desea un concentrador Multi-TT para esta aplicación, donde 2 o más de sus dispositivos USB tienen una probabilidad de 12 Mbit / seg. Busque "Multi-TT" en Amazon, Newegg u otros sitios para encontrar estos centros.

Desafortunadamente, este importante detalle técnico rara vez se menciona. La mayoría de los hubs usan un diseño Single-TT más barato. Los buenos TT múltiples rara vez se anuncian con esta característica, ni siquiera están marcados en el paquete. Lamentablemente, la mayoría de las personas probablemente nunca hayan escuchado los TT, por lo que los especialistas en marketing no se molestan en decirte qué diseño usan sus centros.

Puede verificar si su hub tiene esta característica utilizando el Administrador de dispositivos de Windows. Busque las palabras "Hub tiene múltiples TT" en la pestaña Avanzado.

Captura de pantalla del Administrador de dispositivos

En Linux, el tipo de concentrador se puede verificar con "lsusb -v | grep TT". No conozco ninguna forma simple de verificar Macintosh, excepto la utilidad "USB Prober" que Apple publica en sus herramientas de desarrollo de Xcode.

TT significa Transaction Translator. Los detalles son complejos y están completamente documentados en el capítulo 11 de la especificación USB, que es una descarga gratuita desde www.usb.org. Pero en pocas palabras, el TT convierte entre 480 MBit / seg de su PC a las velocidades más lentas de 12 o 1.5 MBit / seg.

Normalmente, cuando toca esos instrumentos musicales, sus controladores generan mensajes MIDI y los empaquetan en memorias intermedias, que esperan el momento en que su PC solicita los datos. Cuando su PC se conecta directamente, envía un mensaje llamado token IN a su instrumento. Su instrumento puede responder al token IN de dos maneras, ya sea un paquete de DATOS o un token NAK para indicar que no hay datos. Su PC envía esos tokens IN muy rápidamente, por lo que el resultado es una entrega casi instantánea de sus eventos musicales como mensajes MIDI.

Sin embargo, cuando su dispositivo MIDI de 12 MBit / seg se conecta a través de un HUB USB 2.0, se produce una comunicación muy diferente, todo a 480 MBit / seg. Su PC realmente se comunica con el Transaction Translator en el hub. Envía 2 mensajes. Primero, el mensaje SSPLIT (Iniciar transacción dividida) se envía al TT. Si el TT no está ocupado, envía un acuse de recibo. Luego, el TT transmite el token IN a su teclado MIDI a la velocidad más lenta de 12 MBit / seg. Mientras tanto, su PC puede comunicarse con otros dispositivos a 480 Mbit / seg. Su teclado MIDI no puede decir si el token IN vino directamente de su PC o del TT de un concentrador. Hace exactamente lo mismo que si estuviera conectado a su PC. El TT dentro del hub recibe la respuesta NAK o DATA. Mientras esto está en progreso, su PC comienza a enviar mensajes CSPLIT (Transacción dividida completa) al TT del concentrador. El TT responde con un token especial de NYET si el TT todavía está ocupado comunicándose a 12 Mbit / seg, o el NAK o DATA desde su teclado.

Si tiene un teclado MIDI y un tambor MIDI conectados, ¿qué sucede si su PC desea enviar un mensaje SSPLIT para pedirle al TT que se comunique con los tambores, pero el TT ya está ocupado comunicándose con el teclado? Con un solo TT, el concentrador puede responder a NYET a una nueva solicitud SSPLIT, porque está ocupado realizando IN + DATA a 12 MBit / seg. ¡Definitivamente no quieres ese escenario!

Varios concentradores TT tienen un TT dedicado en cada puerto descendente (en el que conecta los dispositivos). Con múltiples TT, el concentrador siempre puede aceptar una solicitud SSPLIT, incluso cuando los otros TT están ocupados comunicándose con otros dispositivos aguas abajo. Con solo un TT, su PC puede terminar esperando, incluso a través de un ancho de banda de 480 MBit / seg, porque el concentrador tiene una capacidad limitada para convertir más de 1 mensaje a la vez entre las diferentes velocidades.

Esta descripción pasó por alto muchos problemas importantes de temporización USB que manejan los TT, pero el punto importante es que los concentradores USB 2.0 pueden usar dos diseños claramente diferentes. Realmente quieres evitar los hubs Single-TT más baratos.

Las velocidades de USB 3.0 y 3.1 se mencionaron en otras partes de estas respuestas. Pero los TT en el hub nunca se convierten entre las velocidades de 5 o 10 gigabits y las velocidades de 480, 12 o 1.5. En cambio, los concentradores USB 3.0 y 3.1 funcionan como un par de concentradores. Las señales gigabit tienen sus propios pines dedicados en los conectores USB más nuevos, que se conectan a un concentrador que funciona solo a 5 o 10 Gbit / seg. La comunicación simultánea de 480 Mbit / seg se produce en los pines originales, por lo que los dispositivos de 12 y 1,5 MBit / seg se convierten a 480 Mbit / seg por TT, pero nunca a 5 o 10 Gbit / seg.

También se menciona en otra parte "baja velocidad", que técnicamente significa 1.5 Mbit / seg en la jerga USB, pero puede significar 1.5 o 12 Mbit / seg en una conversación informal. 12 Mbit / seg se llama "velocidad máxima" en la terminología USB. El protocolo USB MIDI, que técnicamente es parte de la "Especificación de clase de audio", utiliza el protocolo "masivo" ( no el protocolo de interrupción, como se afirma en otra respuesta). La especificación USB no permite el protocolo de transferencia masiva para una velocidad de 1.5 Mbit / seg. Entonces, a menos que un dispositivo MIDI USB viole la velocidad del USB, siempre será de al menos 12 Mbit / seg. USB MIDI puede tener una velocidad de 480 Mbit / seg, en cuyo caso los TT no se aplican. Pero la gran mayoría de los productos MIDI USB actuales todavía tienen una velocidad de 12 Mbit / seg.

Por lo tanto, realmente desea asegurarse de que sus concentradores USB sean del tipo Multi-TT, si planea maximizar el rendimiento.

Paul Stoffregen
fuente
¿Cómo obtiene esa vista que muestra los dispositivos que consumen ancho de banda en su imagen? Mis propiedades ni siquiera tienen esa pestaña.
user5389726598465
3

Siendo realistas, compartir un solo puerto USB utilizando un concentrador para expandir cuántos dispositivos conectas probablemente no importará demasiado, incluso si usas todos los dispositivos conectados simultáneamente. La mayoría de los dispositivos no utilizarán gran parte de la transferencia de datos a la vez. Es aún menos preocupante si está utilizando puertos USB 3.0 o 3.1, que son 10 y 20 veces más rápidos que 2.0, respectivamente, pero también pueden enviar y recibir datos al mismo tiempo, proporcionar más potencia y funcionarán con 2.0 dispositivos.

Como se indicó, siempre que se ejecute suficiente energía a través de todos los dispositivos conectados al puerto, no deberían ocurrir problemas.

Xiro
fuente
1

Solo mi caso como ejemplo de HUB USB 3.0 que se ralentiza cuando más de un dispositivo está conectado a él.

Tengo dos conjuntos idénticos de: SataIII a USB3.1 Gen2 Tipo C con un SSD de 480 GB.

Si pongo el SSD en un puerto SataIII, el comando dd de Linux se lee a más de 500MiB / s.

Si coloco el SSD en el gabinete SataIII a USB 3.1 Gen2 Tipo C, el comando dd de Linux lee a cerca de 413MiB / s, sin importar cuál de los dos conjuntos use.

Lo extraño ocurre cuando conecto los dos gabinetes USB 3.0 y le pido a Linux que lea desde ambos (no importa si la banda LVM, RAID0 o dos comandos dd concurrentes), solo se lee a 2x150 = 300 MiB / s.

Entonces, cuando ambos están enchufados, pierdo cerca de 413-300 = 113MiB / s de velocidad.

En otras palabras:

  • Un SSD en USB 3 HUB, obtengo 413MiB / s de lectura
  • Dos SSD en USB 3 HUB, obtengo 150 + 150 = 300MiB / s de lectura
  • Lectura esperada (por SSD) cuando dos SSD en el concentrador USB 3 estarían a menos de 413/2 = 206MiB / s pero solo tienen alrededor de 150MiB / s cada uno, no> 200MiB / s como se supondría.

Comienzo a pensar que el problema está en el protocolo USB 3 Hub para alternar el ancho de banda de datos a ambas unidades, agrega una gran sobrecarga.

Por lo tanto, puedo confirmar que el concentrador USB 3 que tengo en mis manos ralentiza un SSD mucho más que el ancho de banda máximo, cuando hay más de uno conectado al mismo tiempo.

Además, probé con un SSD y una memoria USB 3.0 muy lenta (menos de 50MiB / s), la velocidad de lectura combinada del Hub USB 3 baja a 263MiB / s, por lo que puedo confirmar que la lectura combinada suelta es de alrededor de 100MiB / s si conecto cualquier otro dispositivo de almacenamiento USB.

Y más, y lo que es peor, conecto un mouse (o un teclado), y la velocidad de lectura de SSD también está cerca de 313MiB / s, desconecto el mouse / teclado y la velocidad de lectura de SSD vuelve a 413MiB / s, así que nuevamente cerca de 100MiB / s la velocidad de lectura se perdió solo porque un mouse está conectado (y se está usando); Si no me muevo, la velocidad de lectura del mouse vuelve a 413MiB / s.

Entonces, el HUB está causando una caída masiva de la velocidad de lectura (cerca de 100MiB / s) en la velocidad de transferencia combinada cuando no solo un dispositivo está conectado (y está siendo usado), sin importar qué otro tipo de dispositivo conecto, tan pronto como tiene más de uno funcionando al mismo tiempo, obtengo una velocidad de lectura combinada cercana a 100MiB / s más baja que cuando uso solo un dispositivo al mismo tiempo.

También lo había probado con tres dispositivos: SSD + Mouse + Teclado, todavía pierdo bastante cerca de la misma velocidad, aproximadamente 100MiB / s.

Si leo de un solo SSD, pero tengo ambos conectados, también obtengo cerca de 413MiB / s.

El precio del USB 3.0 Hub era de unos 20 €, no era barato.

Conclusión: USB HUB 3.0 libera mucha velocidad de transferencia de MiB / s cuando más de un dispositivo está conectado (y transfiriendo) al mismo tiempo, ¡quién sabe por qué! tal vez porque divide la transferencia de tiempo por la cantidad de dispositivos (bastante trabajo) o tal vez porque tiene una gran sobrecarga en dispositivos de ciclismo, etc.

Espero que esto ayude a alguien a identificar el problema, todas las pruebas se realizaron bajo Linux Live SystemRescueCD (última versión) con el comando dd con estado = progreso, tamaño de bloque de un megabyte y recuento igual a mil (lectura de un total de 1GiB), dispositivo de destino / dev / nulo

Estoy planeando (cuándo / si seré rico) comprar otro HUB USB 3.x, esta vez un 3.1 Gen 2 para verificar si sucede lo mismo o si esa marca tiene un algoritmo de firmware deficiente.

Laura
fuente
Los SSD son muy diferentes de los dispositivos en la pregunta. Cada SSD está tratando de transferir datos a más del ancho de banda del puerto USB 3. Entonces pierde mucho ancho de banda solo en colisiones.
Fixer1234
1

Cuando uso una conexión directa entre mi computadora portátil, que tiene un disco duro de 750 GB a 5400 rpm, y mis discos duros externos de 8 GB, las tasas de transferencia son mucho más lentas que cuando uso un concentrador USB. Por ejemplo, recientemente copié y pegué cuatro películas que sumaban aproximadamente 120 GB de datos. Aquí está lo que pasó.

  1. Primero, copié las cuatro películas que agregaban hasta 120 GB de datos en el disco duro de mi computadora portátil y luego las pegué en el disco duro externo de 8 GB. La transferencia tardó aproximadamente 80 minutos, ya que la velocidad de transferencia de datos fue de solo 30 mb. La tasa de transferencia de datos tenía picos que iban desde 20mbs a 35mbs.

  2. En segundo lugar, conecté el otro disco duro externo de 8 GB que es exactamente el mismo modelo. Esta vez utilicé el concentrador USB 3.0 de 4 puertos. Esta vez, la velocidad de transferencia de datos fue mucho más rápida, a veces más de 90mbs. La tasa de transferencia de datos tenía picos que oscilaban entre 50mbs y más de 90mbs. La transferencia de datos solo tardó 30 minutos.

  3. En tercer lugar, como experimento, conecté los dos discos duros externos de 8 GB al mismo tiempo a través del concentrador USB 3.0. Copié las cuatro películas con los 120 GB de datos de un disco duro al otro. Esta vez la transferencia fue aún más rápida que nunca. La velocidad de transferencia de datos fue de aproximadamente 150 mb, y no hubo picos en absoluto en la velocidad de transferencia. Era una línea constante de 150 mb todo el tiempo.

He hecho experimentos con otras grandes transferencias de datos. Por alguna razón, la conexión directa USB 3.0 a un disco duro externo es mucho más lenta que cuando se trata de un concentrador USB 3.0. ... ¿Alguien sabe a que se debe esto?

mike_mgoblue
fuente