Apa itu sinyal yang tertunda?

9

Ketika melihat batas-batas proses yang berjalan, saya melihat

Max pending signals       15725
  • Apa ini?
  • Bagaimana saya bisa menentukan nilai yang masuk akal untuk layanan yang sibuk?

Secara umum, sepertinya saya tidak dapat menemukan halaman yang menjelaskan apa batas masing-masing. Beberapa cukup jelas (maks file terbuka), beberapa kurang begitu (ukuran pesan maksimum).

Bart van Heukelom
sumber
Pada Arch linux yang hampir terbaru, kernel 3.14.37-1-lts, zsh, saya mengerti sigpending 31603. Mengapa batas-batas ini nomor aneh seperti itu (yaitu bukan kekuatan 2)?
Bruce Ediger

Jawaban:

6

Menurut halaman pengguna dari sigpending:

sigpending () mengembalikan set sinyal yang menunggu untuk pengiriman ke utas panggilan (yaitu, sinyal yang telah dinaikkan saat diblokir).

Jadi, itu berarti sinyal (sigterm, sigkill, sigstop, ...) yang menunggu sampai proses keluar dari keadaan D(tidur tidak terputus). Biasanya suatu proses dalam keadaan itu ketika sedang menunggu I / O. Tidur itu tidak bisa diganggu. Bahkan sigkill ( kill -9) tidak dapat dan kernel menunggu sampai proses bangun (sinyal menunggu pengiriman begitu lama).

Untuk nilai-nilai tidak jelas lainnya, saya akan lihat di halaman panduan dari limits.conf.

kekacauan
sumber
Ini adalah halaman manual untuk sigqueuedan setrlimitAnda benar-benar harus melihatnya.
JdeBP
0

Batas proses dikendalikan oleh setrlimit (2)

Jadi, Anda dapat melihat halaman manualnya:

RLIMIT_SIGPENDING (Sejak Linux 2.6.8)

Menentukan batas jumlah sinyal yang dapat antri untuk ID pengguna sebenarnya dari proses panggilan. Kedua sinyal standar dan waktu-nyata dihitung untuk tujuan memeriksa batas ini. Namun, batas ini diberlakukan hanya untuk sigqueue (3); selalu dimungkinkan untuk menggunakan kill (2) untuk mengantri satu instance dari setiap sinyal yang belum antri ke proses.

Secara umum, Anda bisa mendapatkan informasi paling detail saat Anda melihat halaman manual syscalls. C adalah bahasa ibu dari UNIX / Linux.

b166er
sumber