Що таке очікувані сигнали?


9

Дивлячись на межі запущеного процесу, я бачу

Max pending signals       15725
  • Що це?
  • Як я можу визначити розумне значення для зайнятої послуги?

Як правило, я не можу знайти сторінку, яка пояснює, що таке обмеження. Деякі з них досить зрозумілі (максимум відкритих файлів), а інші менш (макс. Розмір msgqueue).


На майже оновленому Arch linux, ядрі 3.14.37-1-lts, zsh, я отримую sigpending 31603. Чому ці межі такі дивні числа (тобто не сила 2)?
Брюс Едігер

Відповіді:


6

Згідно довідкової сторінці по sigpending:

sigpending () повертає набір сигналів, які очікують на доставку в викликовий потік (тобто сигнали, підняті під час блокування).

Отже, маються на увазі сигнали (sigterm, sigkill, sigstop, ...), які чекають, поки процес вийде зі стану D(безперебійного сну). Зазвичай процес знаходиться в такому стані, коли він чекає вводу / виводу. Цей сон не можна перервати. Навіть sigkill ( kill -9) не може, і ядро ​​чекає, поки процес прокинеться (сигнал очікує на доставку так довго).

Щодо інших незрозумілих значень, я б ознайомився на сторінці керівництва з limits.conf.


Це сторінок керівництва sigqueueі setrlimitщо ви дійсно повинні дивитися.
JdeBP

0

Ліміти процесу контролюються setrlimit (2)

Таким чином, ви можете переглянути його сторінку:

RLIMIT_SIGPENDING (З Linux 2.6.8)

Вказує обмеження на кількість сигналів, які можуть стояти в черзі для реального ідентифікатора користувача процесу виклику. З метою перевірки цієї межі як стандартні, так і сигнали в режимі реального часу підраховуються. Однак обмеження застосовується лише для знаку (3); завжди можна використовувати kill (2) для встановлення черги на один екземпляр будь-якого з сигналів, які вже не в черзі до процесу.

Як правило, ви можете отримати найдокладнішу інформацію, вивчаючи набори системних дзвінків. C - рідна мова UNIX / Linux.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.