Продуктивність USB / монітор руху


18

Перш за все, я знайшов подібне питання, але воно насправді не вирішує мою проблему. Я намагаюся виявити, чи є шиною USB для пристрою, яким я користуюся, вузьким місцем у моїй програмі.

Як я можу контролювати шину USB (подібно до того, як працює монітор системи gnome) для показу використання шини? В основному, я хочу визначити, коли шина "максується". Я здогадуюсь, що я шукаю - це якийсь інтерфейс для usbmon, тому що, здається, він би робив те, що мені потрібно.

Це стало результатом тестування радіо USRP та GNU. Я стикаюся з ситуацією, коли виявляється, що шина USB може бути обмежуючим фактором, тому я задаю більш загальне питання моніторингу продуктивності USB.


1
У той час як проводка і 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:

Як зазначає sebas , usbtop, здається, дає певний мінімальний рівень корисної інформації (хоча це може бути набагато краще), тому я рекомендую це.

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

Ось як його встановити:

  1. Клоніруйте git repo:

    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.