Como obter (do terminal) o número total de encadeamentos (por processo e total para todos os processos)

25

Eu tentei pesquisá-lo, mas não consigo encontrá-lo. Eu estou procurando:

  1. número de segmentos no processo X

  2. número total de segmentos em execução no momento

por NoSenseEtAl 19.12.2011 / 15:16

4 respostas

38

Para obter o número de threads para um determinado pid:

ps -o nlwp <pid>

Para obter a soma de todos os segmentos em execução no sistema:

ps -eo nlwp | tail -n +2 | awk '{ num_threads +=  } END { print num_threads }'
    
por jcollado 19.12.2011 / 15:41
6

Para encontrar o número de encadeamentos que executam um único processo, é possível ver /proc/<pid>/status . Deve listar o número de threads como um dos campos.

    
por anaken78 28.02.2014 / 01:15
2

Estou baseando essa resposta em torno de ps axms . ps é uma ótima ferramenta para listar o que está sendo executado.

Se você quiser filtrar isso por um processo, pode tentar algo assim:

echo $(( 'ps axms | grep firefox | wc -l'  - 1))

Nós subtraímos 1 porque o grep será exibido nessa lista.

Para todos os tópicos em geral, isso deve funcionar:

echo $(( 'ps axms | wc -l'  - 1))

Nós subtraimos um dessa vez porque há uma linha de cabeçalho.

    
por Oli 19.12.2011 / 15:31
1

Para obter o número total de threads (pequenas partes de um processo em execução simultaneamente) de um, você pode usar o comando ps -o nlwp <pid> . Ele funciona o tempo todo. Mas se você preferir tentar ver através de um arquivo. Você provavelmente deve olhar para os arquivos que foram criados para cada processo do sistema. Lá você pode obter os detalhes finais do processo. Para cada processo, existe uma pasta criada em /proc/<pid> , e você pode ver todos os outros detalhes também.

    
por Laksith 21.09.2015 / 09:02