มันหมายความว่าอย่างไรเมื่อกระบวนการ“ เวลา” หยุดทำงานด้านบน


11

ฉันจะดูว่าทำไมเราถึงได้รับการแจ้งเตือนการแลกเปลี่ยนที่สำคัญและฉันจะพบสิ่งต่อไปนี้:

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  SWAP COMMAND
14683 user1     30  10 16.0g 772m  744 S  0.3  0.3 277:24.87 6.5g MATLAB
14576 user1     30  10 8125m 1.1g  736 S  0.3  0.4 261:16.73 4.1g MATLAB

โดยที่คอลัมน์ TIME + ถูกตรึงสำหรับกระบวนการเหล่านั้น

คำถามของฉันคือในข้างต้นสิ่งนี้หมายความว่าอย่างไร

ตามที่ฉันเข้าใจเวลาหยุดทำงานหมายความว่าเป็นกระบวนการที่หยุดอยู่ชั่วคราว / ไม่ได้รับการประมวลผลโดย CPU อย่างไรก็ตามตัวอย่างข้างต้นแสดงให้เห็นถึงการใช้งาน CPU 0.3% ดังนั้นแม้จะมีขนาดเล็กมาก แต่คอลัมน์เวลาไม่ควรเพิ่มขึ้นต่อไป

กระบวนการเหล่านี้ "เสร็จสิ้น" หรือไม่? ในกรณีใดพวกเขาทำความสะอาดอย่างไร ผู้ใช้ที่เริ่มต้นพวกเขาจำเป็นต้องยอมรับพวกเขาหรือบางสิ่งบางอย่างสำหรับทรัพยากรเหล่านั้นที่จะเป็นอิสระ?


1
ที่ 0.3% นั่นคือ 1 เซนติวินาทีทุก 3/4 วินาที คุณรอนานพอไหม?
Stéphane Chazelas

1
การเปิดเผยที่เหลือเชื่อ: การเพิ่มเวลาถูกคำนวณเป็นเปอร์เซ็นต์ของการใช้ CPU หรือไม่ ว้าว. ถ้าเป็น CPU 100% นั่นจะเท่ากับเรียลไทม์หรือไม่
CptSupermrkt

5
TIME เป็นเวลาสะสมของ CPU (CPU ใด ๆ ) ที่ใช้ในการรันเธรดใด ๆ ในกระบวนการตั้งแต่เริ่มต้น ดังนั้นจึงสามารถทำงานได้เร็วกว่าเวลาจริงหากคุณมีแกนประมวลผลหลายคอร์และกระบวนการทำงานแบบมัลติเธรด
Stéphane Chazelas

คำตอบ:


10

หากคุณใช้งานปลอมเช่นsleep 120จากนั้นดูในhtopคุณจะสังเกตเห็นว่าสถานะของมันคือS"SLEEP" และกระบวนการTIMEยังคงอยู่ที่ 0: 00.00 ในช่วงเวลา

นั่นเป็นเพราะกระบวนการนั้นใช้เวลา 0 CPU ซึ่งเป็นจุดประสงค์ของTIMEคอลัมน์ ติดตามจำนวนเวลา CPU ที่กระบวนการที่กำหนดใช้

              เอสเอส # 1

จำนวนนี้อาจสร้างความสับสนในบางครั้งหากกระบวนการสามารถทำงานบนหลายคอร์ของ CPU เนื่องจากดูเหมือนว่าจะสามารถใช้เวลามากกว่าที่มีอยู่ สิ่งที่เกิดขึ้นคือถ้าคุณมีจำนวนแกน X จำนวนเวลาของคุณจะแสดงเป็น X * TIME


4

เหตุผลที่คุณอาจได้รับความแตกต่างเช่นนั้นเป็นเพราะคอลัมน์ TIME + ไม่ได้คำนึงถึงเวลา CPU ที่ใช้โดยลูกที่วางไข่ที่ตายแล้วของกระบวนการที่ระบุไว้ .. ดังนั้นฉันคิดว่าบรรทัดที่คุณแสดงบ่งบอกถึงแอปพลิเคชัน วางไข่เด็ก ๆ ที่กำลังจะตายเกือบจะในทันที ..

So, the CPU usage is due to spawned children which do not count in the TIME+ column. คุณสามารถเปลี่ยนเวลาในการทำคะแนนสะสมผ่านสวิตช์ 'S'

แต่ฉันคิดว่าคุณกำลังดูตัวบ่งชี้ที่ไม่ถูกต้องสำหรับสิ่งที่คุณต้องการตรวจสอบ

strace -p <pid> เป็นเพื่อนของคุณที่นี่และจะช่วยให้คุณมองเข้าไปในกระบวนการทำงานและสิ่งที่กำลังทำ

Strace มีตัวเลือกมากมาย ตัวเลือกที่น่าสนใจบางอย่าง ได้แก่ -f, -ff, -i, v, ฯลฯ Strace เป็นเครื่องมือที่มีประโยชน์มากที่สุดดังนั้นควรทำman straceและมองหาตัวเลือกที่จะช่วยให้คุณแก้ปัญหาเช่นนี้

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