Plotando a cadeia de espera / espera de um processo

4

Muitas vezes, quero saber por que um processo no meio de um pipeline está parado e não está ocupado com o processamento de dados. Meu método atual é:

  1. encontre o pid de interesse
  2. sudo strace -pt pid para obter o syscall e objeto de bloqueio (fd, filho, futex, etc.)
  3. pressione Ctrl c para desanexar strace
  4. procure o objeto apropriado em /proc/pid
  5. grep /proc/ ou use lsof para encontrar a outra extremidade do canal ou processo sendo aguardado em
  6. repita de # 1 com o novo pid

Este é um processo bastante lento que combina muitas ferramentas que não funcionam bem juntas ( strace em particular é difícil de automatizar). Existe uma ferramenta que faça esse loop para mim e plote a cadeia de espera de um processo ou, pelo menos, torne uma iteração menos difícil?

Linux 3.2, Ubuntu LTS 12, x64, no VirtualBox, se for importante.

    
por BCoates 05.09.2012 / 21:25

1 resposta

1

a maioria dos ps s agora inclui uma opção de árvore, ou um utilitário relacionado a nome muito apropriado, ptree .

Como meu sistema de trabalho atual não tem ptree, atualmente uso

ps fauw 

Eu acho que também tive um

ps taux (t making more sense than f)

Finalmente, alguns ps têm opções para incluir também um encadeamento de programas na view.

Embora esta não seja a solução automatizada que você (e eu) desejamos, minha experiência é que surge uma lista de 'suspeitos prováveis' em árvores de processo, e apenas examinando a árvore, você pode adivinhar onde problema é.

IHTH

    
por 06.09.2012 / 00:51