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


9

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

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

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


ほぼ最新のArch linux、カーネル3.14.37-1-lts、zshでは、私はsigpending 31603。これらの制限がなぜ奇妙な数であるのですか(2の累乗ではないのですか)
Bruce Ediger 2015

回答:


6

マニュアルページによるとsigpending

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

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

他の不明瞭な値については、私は中を見かかるマニュアルページのをlimits.conf


それはのマニュアルページでsigqueueありsetrlimit、あなたが本当に見ているべきものです。
JdeBP 2015

0

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

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

RLIMIT_SIGPENDING(Linux 2.6.8以降)

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.