“ INFO: task XXX ถูกบล็อกนานกว่า 120 วินาที” หมายถึงอะไรบน Linux?


14

ฉันมีข้อความนี้ในบันทึกเคอร์เนลของฉัน: INFO: task XXX blocked for more than 120 seconds. ฉันต้องการทราบความหมายทางเทคนิค: เคอร์เนลแสดงข้อความเกี่ยวกับงานภายใต้เงื่อนไขใด

สำหรับบันทึกงานที่ถูกบล็อกของฉันคือmultipathdแต่ฉันก็สนใจในความหมายทั่วไปของข้อผิดพลาดนี้

คำตอบ:


13

หากภารกิจถูกบล็อกจะรอให้ทรัพยากรกลับมาใช้งานได้อีกครั้ง

ในกรณีของคุณมีปัญหา IO หรือความขัดแย้งในพื้นที่ดิสก์ หรือโหลดระบบของคุณสูงมากจนมีพลังงาน CPU ไม่เพียงพอที่จะทำงานให้เสร็จทันเวลา

ฉันเห็นข้อผิดพลาดนี้จาก cron หากพยายามเริ่มงานในเวลาที่ยุ่งมาก


คุณจะเจาะจงมากขึ้นได้ไหม? "บล็อก" หมายถึง "ต่อเนื่องในสถานะไม่หยุดชะงัก" หรือไม่?
Totor

@Totor ในบริบทนี้กำลังรอทรัพยากร ดังนั้น io อื่น ๆ จึงไม่สามารถขัดจังหวะได้
นิลส์

7

โดยพื้นฐานแล้วการบันทึกนี้จะถูกทริกเกอร์หากตัวกำหนดตารางเวลาของ CPU ไม่ได้เปลี่ยนเป็นกระบวนการในระยะเวลาที่กำหนดและกระบวนการไม่ได้รับการยกเว้น

ข้อยกเว้นเป็นกรณีพิเศษที่ไม่ได้เปลี่ยนกระบวนการ แต่ไม่ควรบันทึก ฉันไม่เข้าใจเงื่อนไขสำหรับข้อยกเว้นอย่างชัดเจน FWIW ความคิดเห็นเกี่ยวกับเคสในโค้ดคือ:

Also, skip vfork and any other user process that freezer should skip.

Also, when a freshly created task is scheduled once, changes
its state to TASK_UNINTERRUPTIBLE without having ever been
switched out once, it musn't be checked.

http://lxr.free-electrons.com/source/kernel/hung_task.c#L75

สำหรับสาเหตุที่งานอาจไม่ได้ถูกจัดกำหนดการไว้เป็นเวลานานมันอยู่ในสถานะ TASK_UNINTERRUPTABLE ('D') อย่างต่อเนื่องจะเป็นโอกาสหนึ่ง แต่ฉันไม่รู้ว่าคนอื่นจะมีอะไร


อาจเป็นข้อผิดพลาดที่เกี่ยวข้อง: Linux 3.14-3.17 บนตัวประมวลผล Haswell - กระบวนการสามารถวางบน futex_wait - groups.google.com/d/msg/mechanical-sympathy/QbmpZxp6C64/…
rakslice
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.