まず第一に、私は similar 質問を見つけましたが、それは私の問題を本当に解決しません。使用しているデバイスのUSBバスがプログラムのボトルネックであるかどうかを確認しようとしています。
USBのバスを監視して(gnome-system-monitorの動作と同様)、バスの使用率を表示するにはどうすればよいですか?基本的に私はバスがいつ「満杯」になっているのかを特定したいと思います。私が探しているのは、私が必要としているように見えるusbmonのインターフェースだと思います。
これはUSRPとGNUラジオをテストしたことから来ました。USBバスが制限要因であると思われる状況に遭遇しているので、USBパフォーマンスモニタリングのより一般的な質問をします。
sbmon は転送される各パケットの長さを提供するため、0u
ファイル(すべてのUSBデバイスのデータが含まれています)を解析する簡単なプログラムを作成することで、これにアプローチします。 USBバスとデバイス番号。次に、各デバイスの両方向のパケット長フィールドの現在の合計を保持します。
これにより、デバイスごとに、各方向に転送されるデータ量がわかります。 1秒に1回印刷すると、各デバイスのスループットがかなりわかります。 USBオーバーヘッドは含まれませんが、使用可能な帯域幅を飽和させることができるデバイスと数値を比較すると、制限に近づいているかどうかがわかります。
sbtop を使用すると、どのデバイスがどのくらいの帯域幅を使用しているかの概要がわかります。
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が指摘する と同様に、 usbtop は、特定の最小レベルの有用な情報を提供するようです(ただし、それははるかに良いかもしれません)、それで私はそれをお勧めします。
Gitリポジトリのクローンを作成します。
git clone https://github.com/aguinet/usbtop.git
git clone
から作成したディレクトリに移動します。
cd usbtop
依存関係をインストールします。
Sudo apt update
Sudo apt install libboost-dev libpcap-dev libboost-thread-dev libboost-system-dev
ローカルビルドディレクトリを作成し、そこにcdします。
mkdir _build && cd _build
Cmakeを実行して、ソースからusbtopをビルドする準備をします。
cmake -DCMAKE_BUILD_TYPE=Release ..
ソースからusbtopをビルドします。
make
Usbtopをインストールします。
Sudo make install
Usbmonカーネルモジュールをロードして、USBバスへのアクセスを開きます(これは実際にそうなっていると思いますが、必要であることはわかっています)。
Sudo modprobe usbmon
Usbtopを実行します(これが機能しない場合は、代わりにSudo usbtop
を使用してください)。
usbtop
何かを見逃した場合は、コメントでお知らせください。
iostat
を使用することもできます。Sudo apt install sysstat
1秒間隔で実行:
iostat -d 1
または、0.1秒間隔で:
watch -n 0.1 iostat
iostat -d 1
の出力例:
https://askubuntu.com/questions/3561/how-do-i-monitor-disk-activity-on-a-specific-drive
https://www.znetlive.com/blog/monitor-disk-io-windows-linux/
USBデバイスからスループットを取得するために、シェルスクリプトのペアを作成しました。誰かがそれを何を使うべきかは、この post で見つけることができます。
htop
を使用してF2
for Setup
、選択された列、追加されたIO_READ_RATE
、IO_WRITE_RATE
またはIO_RATE
、そして私はプロセスがディスクを読み書きする速度を見ることができました。