Zuallererst habe ich eine ähnliche Frage gefunden, aber sie löst mein Problem nicht wirklich. Ich versuche herauszufinden, ob der USB-Bus für ein Gerät, das ich verwende, der Engpass in meinem Programm ist.
Wie kann ich einen USB-Bus überwachen (ähnlich wie der Gnome-System-Monitor funktioniert), um die Busauslastung anzuzeigen? Grundsätzlich möchte ich feststellen, wann der Bus "voll" ist. Ich vermute, was ich suche, ist eine Schnittstelle für USBMON, da dies so aussieht, als würde es tun, was ich brauche.
Dies ist auf das Testen von USRP und GNU Radio zurückzuführen. Ich stoße auf eine Situation, in der der USB-Bus ein begrenzender Faktor sein könnte. Daher stelle ich die allgemeinere Frage nach der Überwachung der USB-Leistung.
usb
performance
monitoring
Mr. Shickadance
quelle
quelle
Antworten:
Da usbmon die Länge jedes übertragenen Pakets angibt , würde ich ein schnelles Programm schreiben, um die
0u
Datei (die Daten für alle USB-Geräte enthält) zu analysieren . Es würde den USB-Bus und die Gerätenummern heraussuchen und dann eine laufende Summe von das Paketlängenfeld in beide Richtungen für jedes Gerät.Dadurch erhalten Sie die Datenmenge, die pro Gerät in jede Richtung übertragen wird. Wenn Sie es einmal pro Sekunde drucken, erhalten Sie eine ziemlich gute Vorstellung vom Durchsatz der einzelnen Geräte. Beachten Sie, dass es keinen USB-Overhead enthält. Wenn Sie jedoch die Zahlen mit einem Gerät vergleichen, das die verfügbare Bandbreite auslasten kann, wissen Sie, ob Sie sich dem Grenzwert nähern.
quelle
Mit usbtop erhalten Sie einen guten Überblick darüber, welche Geräte wie viel Bandbreite verwenden:
quelle
usbtop
. Es sieht nützlich aus. So installieren Sie es: unix.stackexchange.com/a/489268/114401 .apt install usbtop
.1. usbtop:
Als sebas weist darauf hin , usbtop scheint ein gewisses Mindestmaß an nützlichen Informationen zu geben (obwohl es viel besser sein könnte), so dass ich es empfehlen.
So installieren Sie es:
Klonen Sie das Git-Repo:
Navigieren Sie zu dem Verzeichnis, aus dem Sie gerade erstellt haben
git clone
:Abhängigkeiten installieren:
Erstellen Sie ein lokales Build-Verzeichnis & CD hinein:
Führen Sie cmake aus, um sich darauf vorzubereiten, usbtop von der Quelle aus zu erstellen:
Erstellen Sie usbtop aus dem Quellcode:
Installieren Sie usbtop:
Laden Sie das usbmon-Kernelmodul, um auf USB-Busse zugreifen zu können (ich denke, dies ist das, was das tut, aber ich weiß, dass es erforderlich ist):
Führen Sie usbtop aus (wenn dies nicht funktioniert, verwenden Sie
sudo usbtop
stattdessen):Wenn ich etwas verpasst habe, lass es mich in den Kommentaren wissen.
Referenzen installieren:
2. Update: Sie können
iostat
stattdessen auch Folgendes verwenden:Laufen Sie im Abstand von 1 Sekunde mit:
ODER im Abstand von 0,1 Sekunden mit:
Beispielausgabe von
iostat -d 1
:Verweise:
/ubuntu/3561/how-do-i-monitor-disk-activity-on-a-specific-drive
Zusätzliche Lektüre:
https://www.znetlive.com/blog/monitor-disk-io-windows-linux/
Verbunden:
quelle
Ich habe ein paar Shell-Skripte geschrieben, um den Durchsatz von einem USB-Gerät zu erhalten. Wenn jemand was damit anfängt, findet man es in diesem Beitrag .
quelle
usbmon
welche manuell installiert / kompiliert werden müssen (?).Mit
htop
, drückte ichF2
aufSetup
, wählte Spalten aus, fügte hinzuIO_READ_RATE
,IO_WRITE_RATE
oderIO_RATE
, und ich war in der Lage, die Geschwindigkeit zu sehen, mit der Prozesse von und auf Datenträger lesen oder schreiben.quelle