Monitor de desempenho / tráfego USB?

18

Antes de tudo, encontrei uma pergunta semelhante, mas isso realmente não resolve o meu problema. Estou tentando descobrir se o barramento USB para um dispositivo que estou usando é o gargalo do meu programa.

Como posso monitorar um barramento USB (semelhante ao funcionamento do gnome-system-monitor) para mostrar a utilização do barramento? Basicamente, quero identificar quando o ônibus está sendo 'estourado'. Eu acho que o que estou procurando é alguma interface para usbmon, pois parece que faria o que eu preciso.

Isso aconteceu ao testar o USRP e o GNU Radio. Estou enfrentando uma situação em que parece que o barramento USB pode ser um fator limitante, por isso faço a pergunta mais geral sobre o monitoramento do desempenho do USB.

Mr. Shickadance
fonte
1
Enquanto o wireshark e o usbmon obtêm o tráfego, preciso de algo que possa mais facilmente me dar uma idéia da taxa de transferência e tal.
Shickadance
Você vê o barramento usb atingindo seu máximo teórico? Você comparou o tráfego recebido com os benchmarks do seu hardware? A taxa de transferência máxima geralmente depende do dispositivo conectado e não do barramento do sistema; portanto, para testá-lo corretamente, você precisará de algum hardware feito especificamente para esse fim.
forcefsck

Respostas:

4

Como o usbmon fornece o tamanho de cada pacote transferido, eu abordaria isso escrevendo um programa rápido para analisar o 0uarquivo (que possui dados para todos os dispositivos USB). Ele selecionaria os números de barramento e dispositivo USB e manteria um total de o campo de comprimento do pacote nas duas direções para cada dispositivo.

Isso fornecerá a quantidade de dados transferidos por dispositivo, em cada direção. Se você imprimir uma vez por segundo, terá uma boa idéia da taxa de transferência de cada dispositivo. Observe que ele não inclui nenhuma sobrecarga de USB, mas se você comparar as figuras com um dispositivo capaz de saturar a largura de banda disponível, saberá se está chegando perto do limite.

Malvineous
fonte
3
Eu esperava uma ferramenta pré-existente, mas acho que isso será suficiente.
Shickadance
10

Use usbtop , fornece uma boa visão geral de quais dispositivos estão usando quanta largura de banda:

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
fonte
2
Obrigado por me indicar usbtop. Parece útil. Veja como instalá-lo: unix.stackexchange.com/a/489268/114401 .
Gabriel Staples
1
No Ubuntu 19.04, ele está nos repositórios oficiais, ou seja, simplesmente apt install usbtop.
luator
4

1. usbtop:

Como sebas aponta , o usbtop parece fornecer um certo nível mínimo de informações úteis (embora possa ser muito melhor), por isso recomendo.

insira a descrição da imagem aqui

Veja como instalá-lo:

  1. Clone o repositório git:

    git clone https://github.com/aguinet/usbtop.git 
    
  2. Navegue para o diretório que acabou de ser criado em git clone:

    cd usbtop
    
  3. Instale dependências:

    sudo apt update 
    sudo apt install libboost-dev libpcap-dev libboost-thread-dev libboost-system-dev 
    
  4. Crie o diretório de compilação local e cd nele:

    mkdir _build && cd _build 
    
  5. Execute o cmake para se preparar para construir o usbtop a partir da fonte:

    cmake -DCMAKE_BUILD_TYPE=Release .. 
    
  6. Crie o usbtop a partir da fonte:

    make 
    
  7. Instale o usbtop:

    sudo make install 
    
  8. Carregue o módulo do kernel usbmon para abrir o acesso aos barramentos USB (acho que é isso que faz, mas sei que é necessário):

    sudo modprobe usbmon 
    
  9. Execute o usbtop (se isso não funcionar, use sudo usbtop):

    usbtop 
    

Se eu perdi alguma coisa, deixe-me saber nos comentários.

Referências de instalação:

2. Atualização: Você também pode usar iostat:

sudo apt install sysstat

Execute em intervalos de 1 segundo com:

iostat -d 1

OU com intervalos de 0,1 segundo com:

watch -n 0.1 iostat

Saída de amostra de iostat -d 1:

insira a descrição da imagem aqui

Referências:

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

Leitura adicional:

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

Palavras-chave:

Gabriel Staples
fonte
0

Usando htop, eu pressionei F2para Setup, colunas selecionadas, acrescentou IO_READ_RATE, IO_WRITE_RATEou IO_RATE, e eu era capaz de ver a velocidade com que os processos foram ler ou escrever de e para os discos.

nyxee
fonte
Esta pergunta é sobre embora o tráfego USB, não o tráfego de disco (por exemplo, o quanto de banda uma webcam USB usos.)
Malvineous