Eu encontrei esse comportamento estranho ontem em um de nossos servidores. ps
, pgrep
e htop
(na inicialização) eram muito lentos. strace ps
mostrou que read('/proc/$pid/cmdline
) levou alguns segundos em alguns processos. Por que isso aconteceu?
Algumas observações:
unlink
e symlink
operações em arquivos também no NFS, em paralelo while true; do cat /proc/$pid/status; sleep .1; done
, cat
retornou imediatamente se State
é S
ou R
, mas demorou vários segundos quando State
é D
Fiz algumas pesquisas no Google e encontrei algumas respostas de SO sugerindo que quando State
é D
, a leitura de /proc/$pid/cmdline
seria interrompida. Isso é verdade? E como isso funciona? Por que /proc/$pid/cmdline
, que foi definido antes do início do programa, foi afetado pelo que estava fazendo depois disso?