web-dev-qa-db-ja.com

保留中のシグナルとは何ですか?

実行中のプロセスの限界を見ると、

Max pending signals       15725
  • これは何ですか?
  • 忙しいサービスの実用的な値を決定するにはどうすればよいですか?

一般的に、それぞれの制限について説明しているページが見つからないようです。自明なものもあれば(オープンファイルの最大数)、そうでないものもあります(最大msgqueueサイズ)。

9

manual page of sigpendingによれば:

sigpending()は、呼び出しスレッドへの配信が保留されているシグナルのセット(つまり、ブロックされている間に発生したシグナル)を返します。

つまり、プロセスがD(無停電スリープ)状態から出るまで待機しているシグナル(sigterm、sigkill、sigstopなど)を意味します。通常、プロセスはI/Oを待機しているときにその状態になります。その睡眠は中断できません。 sigkill(kill -9)も実行できず、カーネルはプロセスが起動するまで待機します(シグナルの配信は非常に長い間保留されています)。

他の不明確な値については、limits.confの-​​ manual page を確認します。

6
chaos

プロセス制限はsetrlimit(2)によって制御されます

したがって、そのマンページを調べることができます。

RLIMIT_SIGPENDING(Linux 2.6.8以降)

呼び出しプロセスの実際のユーザーIDのキューに入れることができるシグナル数の制限を指定します。この制限を確認する目的で、標準信号とリアルタイム信号の両方がカウントされます。ただし、この制限はsigqueue(3)にのみ適用されます。 kill(2)を使用して、プロセスにまだキューイングされていないシグナルの1つのインスタンスをキューイングすることは常に可能です。

一般に、syscallsのマンページを調べると、最も詳細な情報を入手できます。 CはUNIX/Linuxの母国語です。

0
b166er