Cosa sono i segnali in sospeso?


9

Quando guardo i limiti di un processo in esecuzione, vedo

Max pending signals       15725
  • Cos'è questo?
  • Come posso determinare un valore ragionevole per un servizio impegnato?

In generale, non riesco a trovare una pagina che spieghi quale sia ogni limite. Alcuni sono piuttosto autoesplicativi (max file aperti), altri meno (dimensione max msgqueue).


Su un Arch Linux quasi aggiornato, kernel 3.14.37-1-lts, zsh, ho capito sigpending 31603. Perché questi limiti sono numeri così strani (cioè non una potenza di 2)?
Bruce Ediger,

Risposte:


6

Secondo la pagina di manuale di sigpending:

sigpending () restituisce il set di segnali in attesa di consegna al thread chiamante (ovvero, i segnali che sono stati generati mentre erano bloccati).

Quindi, si intende i segnali (sigterm, sigkill, sigstop, ...) che attendono che il processo esca dallo stato D(ininterrotto sleep). Di solito un processo si trova in quello stato quando è in attesa di I / O. Quel sonno non può essere interrotto. Anche sigkill ( kill -9) non può e il kernel attende fino a quando il processo non si sveglia (il segnale è in attesa di consegna così a lungo).

Per gli altri valori poco chiari, darei un'occhiata nella pagina del manuale di limits.conf.


Sono le pagine di manuale per sigqueuee setrlimitche dovresti davvero guardare.
JdeBP,

0

I limiti di processo sono controllati da setrlimit (2)

Quindi puoi guardare nella sua manpage:

RLIMIT_SIGPENDING (da Linux 2.6.8)

Specifica il limite sul numero di segnali che possono essere messi in coda per l'ID utente reale del processo di chiamata. Sia i segnali standard che quelli in tempo reale vengono conteggiati ai fini della verifica di questo limite. Tuttavia, il limite viene applicato solo per sigqueue (3); è sempre possibile usare kill (2) per mettere in coda un'istanza di uno qualsiasi dei segnali che non sono già in coda al processo.

In generale, è possibile ottenere le informazioni più dettagliate quando si guardano le manpage di syscalls. C è la lingua madre di UNIX / Linux.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.