Rendimiento USB / monitor de tráfico?

18

En primer lugar, encontré una pregunta similar , pero en realidad no resuelve mi problema. Estoy tratando de descubrir si el bus USB para un dispositivo que estoy usando es el cuello de botella en mi programa.

¿Cómo puedo monitorear un bus USB (similar a cómo funciona gnome-system-monitor) para mostrar la utilización del bus? Básicamente, quiero identificar cuándo se está 'maximizando' el bus. Supongo que lo que estoy buscando es alguna interfaz para usbmon, ya que parece que haría lo que necesito.

Esto se produjo al probar la Radio USRP y GNU. Me encuentro con una situación en la que parece que el bus USB podría ser un factor limitante, por lo que hago una pregunta más general sobre la supervisión del rendimiento de USB.

Sr. Shickadance
fuente
1
Si bien Wirehark y Usbmon obtienen el tráfico, necesito algo que pueda darme más fácilmente una idea del rendimiento y tal.
Sr. Shickadance
¿Ves el bus usb alcanzando su máximo teórico? ¿Comparó el tráfico que obtiene con los puntos de referencia de su hardware? El rendimiento máximo generalmente depende del dispositivo conectado y no del bus del sistema, por lo que para probarlo adecuadamente necesitará algún hardware específicamente diseñado para ese propósito.
forcefsck

Respuestas:

4

Como usbmon proporciona la longitud de cada paquete transferido, abordaría esto escribiendo un programa rápido para analizar el 0uarchivo (que tiene datos para todos los dispositivos USB). Escogería el bus USB y los números de dispositivo, y luego mantendría un total acumulado de el campo de longitud del paquete en ambas direcciones para cada dispositivo.

Esto le dará la cantidad de datos transferidos por dispositivo, en cada dirección. Si lo imprime una vez por segundo, tendrá una idea bastante clara del rendimiento de cada dispositivo. Tenga en cuenta que no incluirá ninguna sobrecarga USB, pero si compara las cifras con un dispositivo que puede saturar el ancho de banda disponible, sabrá si se está acercando al límite.

Malvinoso
fuente
3
Esperaba una herramienta preexistente, pero supongo que será suficiente.
Sr. Shickadance
10

Use usbtop , da una buena descripción de qué dispositivos están usando cuánto ancho de banda:

Bus ID 1 (USB bus number 1) To device   From device
  Device ID 1 :             0.00 kb/s   0.00 kb/s
  Device ID 2 :             0.00 kb/s   0.00 kb/s
Bus ID 2 (USB bus number 2) To device   From device
  Device ID 1 :             0.00 kb/s   0.00 kb/s
  Device ID 4 :             141.73 kb/s 13777.68 kb/s
  Device ID 5 :             9.98 kb/s   11.24 kb/s
  Device ID 6 :             0.00 kb/s   0.00 kb/s
  Device ID 7 :             0.00 kb/s   0.00 kb/s
  Device ID 8 :             141.71 kb/s 15257.26 kb/s
sebas
fuente
2
Gracias por señalarme usbtop. Se ve útil. Aquí se explica cómo instalarlo: unix.stackexchange.com/a/489268/114401 .
Gabriel Staples
1
En Ubuntu 19.04 está en los repositorios oficiales, es decir, simplemente apt install usbtop.
luator
4

1. usbtop:

Como señala sebas , usbtop parece dar un cierto nivel mínimo de información útil (aunque podría ser mucho mejor), por lo que lo recomiendo.

ingrese la descripción de la imagen aquí

Aquí se explica cómo instalarlo:

  1. Clonar el repositorio git:

    git clone https://github.com/aguinet/usbtop.git 
    
  2. Navegue al directorio que acaba de crearse desde git clone:

    cd usbtop
    
  3. Instalar dependencias:

    sudo apt update 
    sudo apt install libboost-dev libpcap-dev libboost-thread-dev libboost-system-dev 
    
  4. Cree un directorio de compilación local y cd en él:

    mkdir _build && cd _build 
    
  5. Ejecute cmake para prepararse para construir usbtop desde la fuente:

    cmake -DCMAKE_BUILD_TYPE=Release .. 
    
  6. Construir usbtop desde la fuente:

    make 
    
  7. Instalar usbtop:

    sudo make install 
    
  8. Cargue el módulo del kernel usbmon para abrir el acceso a los buses USB (creo que esto es lo que hace, pero sé que es obligatorio):

    sudo modprobe usbmon 
    
  9. Ejecute usbtop (si esto no funciona, use sudo usbtopen su lugar):

    usbtop 
    

Si me perdí algo, házmelo saber en los comentarios.

Instalar referencias:

2. Actualización: también puedes usar iostat:

sudo apt install sysstat

Corre a intervalos de 1 segundo con:

iostat -d 1

O con intervalos de 0.1 segundos con:

watch -n 0.1 iostat

Salida de muestra de iostat -d 1:

ingrese la descripción de la imagen aquí

Referencias

/ubuntu/3561/how-do-i-monitor-disk-activity-on-a-specific-drive

Lectura adicional:

https://www.znetlive.com/blog/monitor-disk-io-windows-linux/

Relacionado:

Gabriel Staples
fuente
0

Utilizando htop, presioné F2para Setup, seleccioné columnas, agregué IO_READ_RATE, IO_WRITE_RATEo IO_RATE, y pude ver la velocidad a la que los procesos leían o escribían desde y hacia los discos.

nyxee
fuente
Sin embargo, esta pregunta es sobre el tráfico USB, no el tráfico del disco (por ejemplo, cuánto ancho de banda utiliza una cámara web USB)
Malvineous