สัญญาณที่รอการอนุมัติคืออะไร?


9

เมื่อดูที่ขีด จำกัด ของกระบวนการทำงานฉันเห็น

Max pending signals       15725
  • นี่คืออะไร?
  • ฉันจะกำหนดมูลค่าที่เหมาะสมสำหรับบริการไม่ว่างได้อย่างไร

โดยทั่วไปแล้วฉันไม่สามารถค้นหาหน้าเว็บที่อธิบายว่าแต่ละขีด จำกัด คืออะไร บางไฟล์เป็นแบบอธิบายตัวเอง (ไฟล์เปิดสูงสุด) บางไฟล์อาจน้อยกว่า (ขนาดสูงสุด msgqueue)


ในเกือบ up-to-วัน Arch ลินุกซ์เคอร์เนล 3.14.37-1-LTS, zsh sigpending 31603ฉันได้รับ เหตุใดข้อ จำกัด เหล่านี้จึงเป็นตัวเลขแปลก ๆ (เช่นไม่ใช่กำลัง 2)
Bruce Ediger

คำตอบ:


6

ตามคู่มือหน้าของsigpending:

sigpending () ส่งคืนชุดสัญญาณที่ค้างอยู่เพื่อส่งไปยังเธรดการโทร (เช่นสัญญาณที่ถูกยกขณะบล็อก)

ดังนั้นมันหมายถึงสัญญาณ (sigterm, sigkill, sigstop, ... ) ที่กำลังรอจนกว่ากระบวนการจะออกจากสถานะD(uninterruptible sleep) โดยปกติกระบวนการจะอยู่ในสถานะนั้นเมื่อกำลังรอ I / O การนอนหลับนั้นไม่สามารถถูกขัดจังหวะ แม้แต่ sigkill ( kill -9) ไม่สามารถทำได้และเคอร์เนลจะรอจนกระทั่งกระบวนการกลับมาทำงานอีกครั้ง (สัญญาณอยู่ระหว่างรอการส่งมอบนาน)

สำหรับค่าที่ไม่ชัดเจนอื่น ๆ ผมจะใช้เวลาดูในส่วนหน้าคู่มือlimits.confของ


มันเป็นหน้าคู่มือสำหรับsigqueueและsetrlimitที่คุณควรจะดู
JdeBP

0

ข้อ จำกัด กระบวนการถูกควบคุมโดย setrlimit (2)

ดังนั้นคุณสามารถดู manpage ของมัน:

RLIMIT_SIGPENDING (ตั้งแต่ Linux 2.6.8)

ระบุขีด จำกัด จำนวนสัญญาณที่อาจถูกจัดคิวสำหรับ ID ผู้ใช้จริงของกระบวนการเรียก ทั้งสัญญาณมาตรฐานและเรียลไทม์จะถูกนับเพื่อจุดประสงค์ในการตรวจสอบขีด จำกัด นี้ อย่างไรก็ตามมีการบังคับใช้ข้อ จำกัด สำหรับ sigqueue (3) เท่านั้น เป็นไปได้เสมอที่จะใช้ kill (2) เพื่อเข้าคิวหนึ่งอินสแตนซ์ของสัญญาณใด ๆ ที่ยังไม่ได้จัดคิวกับกระบวนการ

โดยทั่วไปแล้วคุณสามารถรับข้อมูลรายละเอียดมากที่สุดเมื่อคุณดู manages ของ syscalls C เป็นภาษาแม่ของ UNIX / Linux

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.