Jakie są oczekujące sygnały?

9

Widzę, kiedy patrzę na granice uruchomionego procesu

Max pending signals       15725
  • Co to jest?
  • Jak ustalić rozsądną wartość dla zajętej usługi?

Zasadniczo nie mogę znaleźć strony, która wyjaśnia, jaki jest każdy limit. Niektóre są dość zrozumiałe (maks. Liczba otwartych plików), niektóre mniej (maksymalny rozmiar msgqueue).

Bart van Heukelom
źródło
Na prawie aktualnym Arch Linuxie, jądro 3.14.37-1-lts, zsh, rozumiem sigpending 31603. Dlaczego te limity są tak dziwnymi liczbami (tj. Nie potęgą 2)?
Bruce Ediger,

Odpowiedzi:

6

Według strony podręcznika z sigpending:

sigpending () zwraca zestaw sygnałów, które oczekują na dostarczenie do wątku wywołującego (tj. sygnały, które zostały podniesione podczas blokowania).

Oznacza to sygnały (sigterm, sigkill, sigstop, ...), które czekają, aż proces wyjdzie ze stanu D(nieprzerwanego snu). Zwykle proces jest w tym stanie, gdy czeka na operacje we / wy. Ten sen nie może być przerwany. Nawet sigkill ( kill -9) nie może i jądro czeka, aż proces się obudzi (sygnał czeka na dostarczenie tak długo).

Dla innych wartości niejasnych, chciałbym spojrzeć na stronie podręcznika z limits.conf.

chaos
źródło
To ręczne stronach sigqueuei setrlimitże naprawdę należy przyjrzeć.
JdeBP
0

Ograniczenia procesu są kontrolowane przez setrlimit (2)

Możesz więc zajrzeć na jego stronę:

RLIMIT_SIGPENDING (od Linuksa 2.6.8)

Określa limit liczby sygnałów, które mogą być ustawione w kolejce dla rzeczywistego identyfikatora użytkownika procesu wywołującego. W celu sprawdzenia tego limitu liczone są zarówno sygnały standardowe, jak i sygnały w czasie rzeczywistym. Limit ten jest jednak egzekwowany tylko dla sigqueue (3); zawsze można użyć funkcji kill (2), aby ustawić w kolejce jedno wystąpienie dowolnego sygnału, który nie jest jeszcze w kolejce do procesu.

Zasadniczo najbardziej szczegółowe informacje można uzyskać, przeglądając strony podręczników systemowych. C jest językiem ojczystym UNIX / Linux.

b166er
źródło