O que são sinais pendentes?

9

Ao analisar os limites de um processo em execução, vejo

Max pending signals       15725
  • O que é isso?
  • Como posso determinar um valor sensato para um serviço ocupado?

Geralmente, não consigo encontrar uma página que explique o que é cada limite. Alguns são bem autoexplicativos (max arquivos abertos), alguns menos (max msgqueue size).

    
por Bart van Heukelom 21.04.2015 / 13:56

2 respostas

6

De acordo com a página de manual de sigpending :

sigpending() returns the set of signals that are pending for delivery to the calling thread (i.e., the signals which have been raised while blocked).

Então, significa os sinais (sigterm, sigkill, sigstop, ...) que estão aguardando até que o processo saia do estado D (sleep ininterrompível). Normalmente, um processo está nesse estado quando está esperando por E / S. Esse sono não pode ser interrompido. Mesmo sigkill ( kill -9 ) não pode e o kernel aguarda até que o processo seja ativado (o sinal está pendente para entrega por tanto tempo).

Para os outros valores não claros, eu daria uma olhada na página de manual de limits.conf .

    
por 21.04.2015 / 14:33
0

Os limites do processo são controlados por setrlimit (2)

Então, você pode ver a página do manpage:

RLIMIT_SIGPENDING (Since Linux 2.6.8)

Specifies the limit on the number of signals that may be queued for the real user ID of the calling process. Both standard and real-time signals are counted for the purpose of checking this limit. However, the limit is enforced only for sigqueue(3); it is always possible to use kill(2) to queue one instance of any of the signals that are not already queued to the process.

Geralmente, você pode obter as informações mais detalhadas quando olha para as páginas de trabalho do syscalls. C é a língua materna do UNIX / Linux.

    
por 21.05.2015 / 11:14