Encontrei um bom monitor que permite registrar uma variedade de dados de tempo de execução de um único processo. Estou procurando um equivalente que faça o mesmo para o uso da largura de banda. Idealmente, o comando deve ser parecido bwmon --pid 1 --log init.log
. Existe tal? Ele pode ser executado sem privilégios de administrador?
monitoring
bandwidth
tshepang
fonte
fonte
Respostas:
algo para você começar (apenas no caso de você querer escrever):
comentários:
stat --printf="%N\n" /proc/PID/exe | cut -d ' ' -f 3
fonte
nc
par cliente / servidor no host local, enviando um byte por segundo e observei/proc/<listening-nc-pid>/net/dev
. Então eu corri um segundonc
par, enviando na taxa máxima. O arquivo que eu estava assistindo muito obviamente contava os dados do segundo par junto com os do primeiro par. Executando no Linux 2.6.32.function strftime never defined
; foi corrigido com a instalação do gawk ./proc/<pid>/net/dev
e/proc/net/dev
tem o mesmo conteúdo aqui. Portanto, o scipt relata apenas o tráfego para eth0, não para o processo especificado.eth0
, como visto pelo processo. Ele não conta os dados enviados pelo processo através dessa interface.Se você estiver satisfeito com a largura de banda de E / S geral usada (ou se o seu programa tiver quase inteiramente E / S de rede), você poderá assistir ao
/proc/<pid>/io
arquivo. Você deseja os camposrchar
ewchar
. Você pode subtrairread_bytes
ewrite_bytes
, uma vez que eles representam leituras e gravações na camada de armazenamento. Consulte a seção 3.3 de http://www.kernel.org/doc/Documentation/filesystems/proc.txt .Se você precisar de mais resolução ... talvez possa usar esse script usando script
lsof
estrace
, embora seja doloroso acertar todos os casos de canto. A idéia básica é a de analisar a saída destrace -p <pid>
, agarrando o primeiro parâmetro (= o descritor de arquivo) eo valor de retorno (= número de bytes) deread()
,write()
,send()
, erecv()
chamadas ( NOTA existem várias syscalls para ouvir; refúgio I' rastreado todos eles). Descartar valores negativos; eles indicam erros. Uselsof -p <pid>
para descobrir quais descritores de arquivo são soquetes TCP / UDP e adicione as contagens por fd. Essa estratégia não exige raiz, desde que você seja o proprietário do processo que está inspecionando, mas seria realmente complicado escrever, muito menos escrever bem.fonte
tente nethogs :
fonte