USB performance/traffic monitor?
Use usbtop, it gives a nice overview of what devices are using how much bandwidth:
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
Since usbmon provides the length of each packet transferred, I would approach this by writing a quick program to parse the 0u
file (which has data for all USB devices.) It would pick out the USB bus and device numbers, then keep a running total of the packet length field in both directions for each device.
This will then give you the amount of data transferred per device, in each direction. If you print it once a second you'll get a pretty good idea of each device's throughput. Note that it won't include any USB overhead, but if you compare the figures to a device that is able to saturate the available bandwidth you'll know whether you're getting close to the limit.
1. usbtop:
As sebas points out, usbtop seems to give a certain minimum level of useful information (although it could be much better), so I recommend it.
Here's how to install it:
Clone the git repo:
git clone https://github.com/aguinet/usbtop.git
Navigate to the directory that just got created from
git clone
:cd usbtop
Install dependencies:
sudo apt update sudo apt install libboost-dev libpcap-dev libboost-thread-dev libboost-system-dev cmake
Create local build directory & cd into it:
mkdir _build && cd _build
Run cmake to prepare to build usbtop from source:
cmake -DCMAKE_BUILD_TYPE=Release ..
Build usbtop from source:
make
Install usbtop:
sudo make install
Load the usbmon kernel module to open access to USB buses (I think this is what that does, but I know it's required):
sudo modprobe usbmon
Run usbtop (if this doesn't work, use
sudo usbtop
instead):usbtop
If I missed anything let me know in the comments.
Install References:
- https://github.com/aguinet/usbtop/blob/master/INSTALL
- https://github.com/aguinet/usbtop/issues/3#issuecomment-274325720
2. Update: You can also use iostat
instead:
sudo apt install sysstat
Run at 1-second intervals with:
iostat -d 1
OR with 0.1-second intervals with:
watch -n 0.1 iostat
Sample output of iostat -d 1
:
References:
https://askubuntu.com/questions/3561/how-do-i-monitor-disk-activity-on-a-specific-drive
Additional reading:
https://www.znetlive.com/blog/monitor-disk-io-windows-linux/
Related:
- https://askubuntu.com/questions/276669/how-to-monitor-disk-activity
- https://askubuntu.com/questions/436354/how-to-check-the-disk-activity-of-my-hard-drive
- https://askubuntu.com/questions/87035/how-to-check-hard-disk-performance