Monitor wydajności / ruchu USB?

18

Przede wszystkim znalazłem podobne pytanie, ale tak naprawdę to nie rozwiązuje mojego problemu. Próbuję dowiedzieć się, czy szyna USB dla urządzenia, którego używam, stanowi wąskie gardło w moim programie.

Jak mogę monitorować magistralę USB (podobnie jak działa gnome-system-monitor), aby pokazać wykorzystanie magistrali? Zasadniczo chcę ustalić, kiedy autobus jest „maksymalizowany”. Wydaje mi się, że szukam interfejsu dla usbmon, ponieważ wygląda na to, że zrobiłby to, czego potrzebuję.

Wynikało to z testowania USRP i GNU Radio. Wpadam na sytuację, w której wydaje się, że magistrala USB może być czynnikiem ograniczającym, więc zadaję bardziej ogólne pytanie dotyczące monitorowania wydajności USB.

Pan Shickadance
źródło
1
Podczas gdy wireshark i usbmon uzyskują ruch, potrzebuję czegoś, co może łatwiej dać mi wyobrażenie o przepustowości i tym podobne.
Pan Shickadance,
Czy widzisz, że autobus USB osiąga teoretyczne maksimum? Czy porównałeś ruch z wynikami twojego sprzętu? Maksymalna przepustowość zależy zwykle od podłączonego urządzenia, a nie magistrali systemowej, więc aby go poprawnie przetestować, potrzebujesz sprzętu specjalnie do tego celu przeznaczonego.
forcefsck,

Odpowiedzi:

4

Ponieważ usbmon podaje długość każdego przesyłanego pakietu, podchodzę do tego pisząc szybki program do analizy 0upliku (który zawiera dane dla wszystkich urządzeń USB). Wybiera numery magistrali USB i numery urządzeń, a następnie utrzymuje bieżącą sumę pole długości pakietu w obu kierunkach dla każdego urządzenia.

To da ci ilość danych przesłanych na urządzenie, w każdym kierunku. Jeśli wydrukujesz go raz na sekundę, uzyskasz całkiem niezły obraz wydajności każdego urządzenia. Pamiętaj, że nie obejmie to żadnego obciążenia USB, ale jeśli porównasz liczby z urządzeniem, które jest w stanie nasycić dostępną przepustowość, będziesz wiedział, czy zbliżasz się do limitu.

Malvineous
źródło
3
Miałem nadzieję na istniejące narzędzie, ale przypuszczam, że to wystarczy.
Pan Shickadance,
10

Użyj usbtop , daje ładny przegląd tego, jakie urządzenia używają przepustowości:

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
źródło
2
Dzięki za wskazanie mnie do usbtop. Wygląda na użyteczne. Oto jak go zainstalować: unix.stackexchange.com/a/489268/114401 .
Gabriel Staples,
1
Na Ubuntu 19.04 znajduje się w oficjalnych repozytoriach, czyli po prostu apt install usbtop.
luator
4

1. usbtop:

Jak wskazuje Seba , usbtop wydaje się dawać pewien minimalny poziom użytecznych informacji (chociaż może być znacznie lepszy), więc polecam.

wprowadź opis zdjęcia tutaj

Oto jak go zainstalować:

  1. Sklonuj repozytorium git:

    git clone https://github.com/aguinet/usbtop.git 
    
  2. Przejdź do katalogu, który właśnie został utworzony z git clone:

    cd usbtop
    
  3. Zainstaluj zależności:

    sudo apt update 
    sudo apt install libboost-dev libpcap-dev libboost-thread-dev libboost-system-dev 
    
  4. Utwórz lokalny katalog kompilacji i włóż do niego cd:

    mkdir _build && cd _build 
    
  5. Uruchom cmake, aby przygotować się do zbudowania usbtop ze źródła:

    cmake -DCMAKE_BUILD_TYPE=Release .. 
    
  6. Zbuduj usbtop ze źródła:

    make 
    
  7. Zainstaluj usbtop:

    sudo make install 
    
  8. Załaduj moduł jądra usbmon, aby otworzyć dostęp do magistrali USB (myślę, że tak właśnie działa, ale wiem, że jest wymagany):

    sudo modprobe usbmon 
    
  9. Uruchom usbtop (jeśli to nie działa, użyj sudo usbtopzamiast tego):

    usbtop 
    

Jeśli coś przeoczyłem, daj mi znać w komentarzach.

Zainstaluj referencje:

2. Aktualizacja: Możesz również użyć iostatzamiast tego:

sudo apt install sysstat

Uruchom w odstępach 1-sekundowych z:

iostat -d 1

LUB w odstępach 0,1 sekundy z:

watch -n 0.1 iostat

Przykładowa wydajność iostat -d 1:

wprowadź opis zdjęcia tutaj

Bibliografia:

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

Dodatkowe czytanie:

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

Związane z:

Gabriel Staples
źródło
0

Korzystanie htop, Nacisnąłem F2na Setup, wybranych kolumn, dodane IO_READ_RATE, IO_WRITE_RATElub IO_RATE, i udało mi się zobaczyć prędkość, przy której procesy zostały odczytywania lub zapisywania zi do dysków.

nyxee
źródło
To pytanie dotyczy ruchu USB, a nie dysku (np. Ile przepustowości wykorzystuje kamera internetowa USB).
Malvineous,