อันยิ่งใหญ่strace
ได้ทำให้ฉันผิดหวัง เป็นไปได้อย่างไร?
time foo
แสดงให้เห็นว่าfoo
ใช้เวลาหลายวินาทีในการเรียกใช้ ("ของจริง") แต่ใช้เวลา cpu เล็กน้อยทั้งใน userspace ("ผู้ใช้") และในเคอร์เนล ("sys") สำหรับผู้อยากรู้อยากเห็นfoo
มีการกำหนดไว้ด้านล่าง
ดังนั้นจึงใช้เวลาส่วนใหญ่รออย่างอื่นไม่ดำเนินการตามคำสั่งของ CPU โดยปกติแล้วฉันจะเห็นว่ามันกำลังรออยู่strace
- นั่นคือสิ่งที่การโทรของระบบถูกปิดกั้นเป็นเวลานาน น่าเสียดายที่วิธีนี้ใช้ไม่ได้ผล
strace -ttt -T -C -w foo
แสดงการเรียกระบบการประทับเวลาและสรุปเวลา (จริง) ที่ใช้ในการโทรของระบบ แต่กระบวนการนี้แสดงให้เห็นว่าการใช้เวลาเล็กน้อยโดยรวม (จริง) ในการโทรของระบบ
foo
journalctl -b -u dev-hugepages.mount
เป็นจริง ยกเว้นว่าฉันต้องเปลี่ยนอาร์กิวเมนต์สุดท้ายเป็นหน่วย systemd ที่แตกต่างกันในแต่ละครั้งเพื่อทำซ้ำสิ่งนี้ กล่าวอีกนัยหนึ่งความล่าช้าที่ฉันกำลังตรวจสอบเกิดขึ้นในครั้งแรกที่ฉันพยายามรับบันทึกสำหรับหน่วย systemd ใดหน่วยหนึ่ง แก้ไข : หลังจากตอบคำถามหลักผมยังตระหนักถึงเหตุผลที่ผมมีปัญหานี้ซ้ำล่าช้า
เวลาที่ใช้ในกระบวนการนี้เป็นปัญหาเฉพาะดูเหมือนว่ามันจะไม่เกิดขึ้นในทุกระบบ https://github.com/systemd/systemd/issues/7963
journalctl
ใช้เพียงกระบวนการเดียวเท่านั้น ฉันมีความรู้สึกjournalctl
ใช้เธรดพิเศษหนึ่งชุดไม่ว่าด้วยเหตุผลใด - iirc มีการโทรแบบโคลนเดียว () ฉันคิดว่านี่หมายความว่าคุณมีความถูกต้องทางเทคนิค แต่ก็ไม่เกี่ยวข้องกับคำถาม time
ดูกระบวนการโดยรวมและแสดงให้เห็นว่ากระบวนการโดยรวมค่อนข้างง่วงนอน (บล็อกบางอย่าง) strace
แสดงการนอนหลับไม่เพียงพอ มันไม่สำคัญว่าเธรดที่สองกำลังหลับอยู่เธรดหลักจะต้องง่วงมากเพื่ออธิบายtime
ผลลัพธ์