Prestazioni USB / monitor del traffico?


18

Prima di tutto, ho trovato una domanda simile ma non risolve davvero il mio problema. Sto cercando di scoprire se il bus USB per un dispositivo che sto usando è il collo di bottiglia nel mio programma.

Come posso monitorare un bus USB (simile a come funziona gnome-system-monitor) per mostrare l'utilizzo del bus? Fondamentalmente voglio identificare quando il bus viene "massimizzato". Immagino che quello che sto cercando sia un'interfaccia per usbmon, poiché sembra che farebbe ciò di cui ho bisogno.

Ciò è avvenuto testando USRP e GNU Radio. Sto incontrando una situazione in cui sembra che il bus USB possa essere un fattore limitante, quindi faccio la domanda più generale sul monitoraggio delle prestazioni USB.


1
Mentre WireShark e USBmon ottengono il traffico, ho bisogno di qualcosa che possa darmi più facilmente un'idea di throughput e simili.
Mr. Shickadance,

Vedi il bus USB raggiungere il suo massimo teorico? Hai confrontato il traffico che ricevi con i benchmark del tuo hardware? Il throughput massimo dipende in genere dal dispositivo collegato e non dal bus di sistema, quindi per testarlo correttamente è necessario un hardware appositamente realizzato a tale scopo.
forcefsck

Risposte:


4

Dato che usbmon fornisce la lunghezza di ogni pacchetto trasferito, mi avvicinerei a questo scrivendo un programma rapido per analizzare il 0ufile (che ha i dati per tutti i dispositivi USB). Prenderebbe il bus USB e i numeri dei dispositivi, quindi mantenere un totale di il campo della lunghezza del pacchetto in entrambe le direzioni per ciascun dispositivo.

Questo ti darà quindi la quantità di dati trasferiti per dispositivo, in ogni direzione. Se lo stampi una volta al secondo, avrai una buona idea della produttività di ciascun dispositivo. Nota che non includerà alcun overhead USB, ma se confronti le cifre con un dispositivo in grado di saturare la larghezza di banda disponibile, saprai se ti stai avvicinando al limite.


3
Speravo in uno strumento preesistente, ma suppongo che sarà sufficiente.
Mr. Shickadance,

10

Usa usbtop , offre una buona panoramica di quali dispositivi utilizzano la larghezza di 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

2
Grazie per avermi indicato usbtop. Sembra utile Ecco come installarlo: unix.stackexchange.com/a/489268/114401 .
Gabriel Staples,

1
Su Ubuntu 19.04 è nei repository ufficiali, vale a dire semplicemente apt install usbtop.
Luator,

4

1. usbtop:

Come sottolinea sebas , usbtop sembra fornire un certo livello minimo di informazioni utili (anche se potrebbe essere molto meglio), quindi lo consiglio.

inserisci qui la descrizione dell'immagine

Ecco come installarlo:

  1. Clona il repository git:

    git clone https://github.com/aguinet/usbtop.git 
    
  2. Passare alla directory appena creata da git clone:

    cd usbtop
    
  3. Installa dipendenze:

    sudo apt update 
    sudo apt install libboost-dev libpcap-dev libboost-thread-dev libboost-system-dev 
    
  4. Crea la directory di build locale e cd in essa:

    mkdir _build && cd _build 
    
  5. Esegui cmake per prepararti a compilare usbtop dal sorgente:

    cmake -DCMAKE_BUILD_TYPE=Release .. 
    
  6. Crea usbtop dalla fonte:

    make 
    
  7. Installa usbtop:

    sudo make install 
    
  8. Carica il modulo kernel usbmon per aprire l'accesso ai bus USB (penso che sia quello che fa, ma so che è necessario):

    sudo modprobe usbmon 
    
  9. Esegui usbtop (se non funziona, utilizzare sudo usbtopinvece):

    usbtop 
    

Se ho perso qualcosa fammi sapere nei commenti.

Installa riferimenti:

2. Aggiornamento: puoi anche usare iostatinvece:

sudo apt install sysstat

Eseguire a intervalli di 1 secondo con:

iostat -d 1

OPPURE con intervalli di 0,1 secondi con:

watch -n 0.1 iostat

Esempio di output di iostat -d 1:

inserisci qui la descrizione dell'immagine

Riferimenti:

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

Letture addizionali:

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

Relazionato:



0

Usando htop, ho premuto F2per Setup, selezionato colonne, aggiunto IO_READ_RATE, IO_WRITE_RATEo IO_RATE, e sono stato in grado di vedere la velocità con cui i processi stavano leggendo o scrivendo da e su dischi.


Questa domanda riguarda il traffico USB, non il traffico su disco (ad esempio quanta larghezza di banda utilizza una webcam USB).
Malvineous
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.