Histórico de criação / destruição de processo / thread ou razão no Mac OS X

0

Estou vendo um comportamento estranho no meu Mac (Yosemite 10.10.4). O número de segmentos dispara e depois volta a descer novamente. Às vezes, ele permanece extremamente alto, excedendo, portanto, maxproc e levando a fork: Resource temporarily unavailable mensagens, mesmo depois de aumentá-lo para 2048.

Tendo em conta que os threads contam para maxproc , gostaria de monitorizar de onde vem esta thread thrashing .

top , htop e glances apenas oferecem instantâneos, mas eu preciso de um registro de registro de data e hora da criação e destruição de encadeamentos , incluindo propriedade e paternidade , para identificar com precisão o problema.

Alguma idéia?

EDIT 1: removi minha referência ao Google Chrome como um possível suspeito, para manter a questão focada no histórico de threads ou no livro de registros.

    
por raulk 14.01.2016 / 14:42

2 respostas

1

Consegui obter algumas informações graças à ferramenta execsnoop . Descrição da página man:

execsnoop prints details of new processes as they are executed. Details such as UID, PID and argument listing are printed out.

Exemplo de saída:

[raul@~/bitbar$] sudo execsnoop -v
STRTIME                UID    PID   PPID ARGS
2016 Jan 14 17:56:09     0      1      0 launchd
2016 Jan 14 17:56:09   501  90311      1 influxd
2016 Jan 14 17:56:16   501  90312    321 kcc
2016 Jan 14 17:56:16     0      1      0 launchd
2016 Jan 14 17:56:16     0  90313      1 kcm
2016 Jan 14 17:56:19     0      1      0 launchd
2016 Jan 14 17:56:19   501  90314      1 influxd

execsnoop usa o DTrace , e encontrei este ótimo post com alguns outros scripts / ferramentas: .

Nos kernels Mac OS X (Darwin) e * nix, os threads são representados como processos, e é por isso que a contagem é direcionada para os limites ulimit e sysctl .

    
por 14.01.2016 / 18:59
-2

do mac: fork: recurso temporariamente indisponível

resolva referenciando a pasta em que o script ou o utilitário está localizado.

por exemplo: da pasta que você precisa para executar o script ou utilitário:

/ usr / local / opt / dart / libexec / bin / pub ativado global stephand

    
por 07.09.2016 / 18:46