Moniteur de performances / trafic USB?

18

Tout d'abord, j'ai trouvé une question similaire mais cela ne résout pas vraiment mon problème. J'essaie de découvrir si le bus USB d'un appareil que j'utilise est le goulot d'étranglement de mon programme.

Comment puis-je surveiller un bus USB (similaire au fonctionnement de gnome-system-monitor) pour montrer l'utilisation du bus? Fondamentalement, je veux identifier le moment où le bus est au maximum. Je suppose que ce que je recherche, c'est une interface pour usbmon, car cela semble faire ce dont j'ai besoin.

Cela vient du test de l'USRP et de la radio GNU. Je me heurte à une situation où il semble que le bus USB pourrait être un facteur limitant, alors je pose la question plus générale de la surveillance des performances USB.

M. Shickadance
la source
1
Bien que Wirehark et usbmon obtiennent le trafic, j'ai besoin de quelque chose qui puisse plus facilement me donner une idée du débit et autres.
M. Shickadance
Voyez-vous le bus USB atteindre son maximum théorique? Avez-vous comparé le trafic que vous obtenez avec les références de votre matériel? Le débit maximum dépend généralement de l'appareil connecté et non du bus système, donc pour le tester correctement, vous aurez besoin de matériel spécialement conçu à cet effet.
forcefsck

Réponses:

4

Puisque usbmon fournit la longueur de chaque paquet transféré, j'aborderais cela en écrivant un programme rapide pour analyser le 0ufichier (qui contient des données pour tous les périphériques USB.) Il choisirait le bus USB et les numéros de périphérique, puis garderait un total de le champ de longueur de paquet dans les deux directions pour chaque périphérique.

Cela vous donnera alors la quantité de données transférées par appareil, dans chaque direction. Si vous l'imprimez une fois par seconde, vous aurez une assez bonne idée du débit de chaque appareil. Notez qu'il n'inclura aucune surcharge USB, mais si vous comparez les chiffres à un appareil capable de saturer la bande passante disponible, vous saurez si vous vous rapprochez de la limite.

Malvineous
la source
3
J'espérais un outil préexistant, mais je suppose que ce sera suffisant.
M. Shickadance
10

Utilisez usbtop , cela donne un bon aperçu des appareils qui utilisent la bande passante:

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
la source
2
Merci de m'avoir indiqué usbtop. Cela semble utile. Voici comment l'installer: unix.stackexchange.com/a/489268/114401 .
Gabriel Staples
1
Sur Ubuntu 19.04, il est dans les dépôts officiels, c'est-à-dire simplement apt install usbtop.
luator
4

1. usbtop:

Comme le souligne sebas , usbtop semble donner un certain niveau minimum d'informations utiles (bien qu'il puisse être bien meilleur), donc je le recommande.

entrez la description de l'image ici

Voici comment l'installer:

  1. Clonez le dépôt git:

    git clone https://github.com/aguinet/usbtop.git 
    
  2. Accédez au répertoire qui vient d'être créé à partir de git clone:

    cd usbtop
    
  3. Installer les dépendances:

    sudo apt update 
    sudo apt install libboost-dev libpcap-dev libboost-thread-dev libboost-system-dev 
    
  4. Créez un répertoire de construction local et un cd dedans:

    mkdir _build && cd _build 
    
  5. Exécutez cmake pour vous préparer à construire usbtop à partir de la source:

    cmake -DCMAKE_BUILD_TYPE=Release .. 
    
  6. Construisez usbtop à partir de la source:

    make 
    
  7. Installez usbtop:

    sudo make install 
    
  8. Chargez le module du noyau usbmon pour ouvrir l'accès aux bus USB (je pense que c'est ce que cela fait, mais je sais que c'est nécessaire):

    sudo modprobe usbmon 
    
  9. Exécutez usbtop (si cela ne fonctionne pas, utilisez sudo usbtopplutôt):

    usbtop 
    

Si j'ai raté quelque chose, faites-le moi savoir dans les commentaires.

Installer les références:

2. Mise à jour: vous pouvez également utiliser à la iostatplace:

sudo apt install sysstat

Exécuter à intervalles d'une seconde avec:

iostat -d 1

OU à intervalles de 0,1 seconde avec:

watch -n 0.1 iostat

Exemple de sortie de iostat -d 1:

entrez la description de l'image ici

Les références:

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

Lecture supplémentaire:

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

En relation:

Gabriel Staples
la source
0

En utilisant htop, je pressais F2pour Setup, les colonnes sélectionnées, ajouté IO_READ_RATE, IO_WRITE_RATEou IO_RATE, et j'ai pu voir la vitesse à laquelle les processus ont été lire ou d' écrire et de disques.

nyxee
la source
Cette question concerne le trafic USB, pas le trafic de disque (par exemple, la quantité de bande passante
utilisée par