USB производительность / монитор трафика?


18

Прежде всего, я нашел похожий вопрос, но он не решает мою проблему. Я пытаюсь выяснить, является ли узкополосным местом в моей программе является шина USB для устройства, которое я использую.

Как я могу контролировать шину USB (аналогично тому, как работает gnome-system-monitor), чтобы показать использование шины? По сути, я хочу определить, когда автобус «разгоняется». Я думаю, что я ищу какой-то интерфейс для usbmon, так как кажется, что он будет делать то, что мне нужно.

Это произошло из-за тестирования USRP и GNU Radio. Я сталкиваюсь с ситуацией, когда кажется, что шина USB может быть ограничивающим фактором, поэтому я задаю более общий вопрос о мониторинге производительности USB.


1
В то время как wireshark и usbmon получают трафик, мне нужно что-то, что может легко дать мне представление о пропускной способности и тому подобное.
Мистер Шикаданс

Вы видите, что usb-шина достигает своего теоретического максимума? Вы сравнивали трафик, который вы получаете с тестами вашего оборудования? Максимальная пропускная способность обычно зависит от подключенного устройства, а не от системной шины, поэтому для правильной проверки вам понадобится оборудование, специально предназначенное для этой цели.
forcefsck

Ответы:


4

Так как usbmon предоставляет длину каждого передаваемого пакета, я бы подошел к этому, написав быструю программу для анализа 0uфайла (который содержит данные для всех USB-устройств). Он будет выбирать шину USB и номера устройств, а затем сохранять итоговую сумму: поле длины пакета в обоих направлениях для каждого устройства.

Это даст вам количество данных, передаваемых на устройство, в каждом направлении. Если вы напечатаете его раз в секунду, вы получите довольно хорошее представление о пропускной способности каждого устройства. Обратите внимание, что он не будет включать какие-либо издержки USB, но если вы сравните цифры с устройством, способным насытить доступную полосу пропускания, вы поймете, приближаетесь ли вы к пределу.


3
Я надеялся на уже существующий инструмент, но, полагаю, этого будет достаточно.
Мистер Шикаданс

10

Используйте usbtop , он дает хороший обзор того, какие устройства используют сколько пропускной способности:

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
Спасибо за указание на меня usbtop. Это выглядит полезным. Вот как это сделать: unix.stackexchange.com/a/489268/114401 .
Габриэль Стейплс

1
На Ubuntu 19.04 он есть в официальных репозиториях, т.е. просто apt install usbtop.
Луатор

4

1. usbtop:

Как указывает Себас , usbtop, похоже, дает определенный минимальный уровень полезной информации (хотя это может быть намного лучше), поэтому я рекомендую его.

введите описание изображения здесь

Вот как это установить:

  1. Клонировать репозиторий git:

    git clone https://github.com/aguinet/usbtop.git 
    
  2. Перейдите в каталог, который только что был создан из git clone:

    cd usbtop
    
  3. Установить зависимости:

    sudo apt update 
    sudo apt install libboost-dev libpcap-dev libboost-thread-dev libboost-system-dev 
    
  4. Создайте локальный каталог сборки и CD в нем:

    mkdir _build && cd _build 
    
  5. Запустите cmake, чтобы подготовить сборку usbtop из исходного кода:

    cmake -DCMAKE_BUILD_TYPE=Release .. 
    
  6. Сборка usbtop из источника:

    make 
    
  7. Установите usbtop:

    sudo make install 
    
  8. Загрузите модуль ядра usbmon, чтобы открыть доступ к шинам USB (я думаю, это то, что нужно, но я знаю, что это необходимо):

    sudo modprobe usbmon 
    
  9. Запустите usbtop (если это не работает, используйте sudo usbtopвместо этого):

    usbtop 
    

Если я что-то пропустил, дайте мне знать в комментариях.

Установить ссылки:

2. Обновление: вы также можете использовать iostatвместо:

sudo apt install sysstat

Запуск с интервалом в 1 секунду с:

iostat -d 1

ИЛИ с интервалом 0,1 с:

watch -n 0.1 iostat

Пример вывода iostat -d 1:

введите описание изображения здесь

Ссылки:

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

Дополнительное чтение:

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

Связанный:


2

Я написал пару сценариев оболочки для получения пропускной способности USB-устройства. Если кто-то, что его использовать, вы можете найти его в этом посте .



Сценарии основаны на том, usbmonчто нужно устанавливать / компилировать (?) Вручную.
Джек Миллер

0

Используя htop, я нажал F2для Setupвыбранных столбцов, добавил IO_READ_RATE, IO_WRITE_RATEили IO_RATE, и я смог увидеть скорость, с которой процессы читали или записывали с и на диски.


Этот вопрос касается трафика USB, а не дискового трафика (например, какой пропускной способности использует веб-камера USB).
Malvineous
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.