รับสถิติ cpu ต่อเธรด


17

ฉันสนใจในการใช้งาน cpu ปัจจุบัน - อย่างแม่นยำ cpu% และรอ% - สำหรับแต่ละเธรดในแอปพลิเคชันเฉพาะ เป็นไปได้ไหมที่จะรับข้อมูลจากที่อื่น?

ฉันรู้ว่าtopสามารถแยกข้อมูลต่อเธรดจริง (อันที่มี pid) แต่ไม่แสดงการแบ่งใช้การใช้งานระบบ / ผู้ใช้ / รอ cpu สำหรับแต่ละรายการ ฉันต้องการบันทึกวิธีการบางอย่างเช่นกัน คุณรู้จักแอพ (หรือ apis) ที่สามารถทำได้หรือไม่?

คำตอบ:


4

ฉันมองเข้าไปในSystemTap เครื่องมือนี้จะให้สิ่งที่คุณต้องการอย่างแน่นอน นอกจากนี้ตัวอย่างของโปรไฟล์กระทู้; ไม่ทราบว่ามีทุกอย่างที่คุณต้องการหรือไม่ แต่คุณสามารถแก้ไขได้



12

เปอร์เซ็นต์ของการใช้ cpu ต่อเธรดที่คุณสามารถรับด้วยpsคำสั่ง:

 ps -emo %cpu,pid,user,args

วิธีที่คำนวณได้อธิบายไว้ในps manpage:

ปัจจุบันเป็นเวลา CPU ที่ใช้หารด้วยเวลาที่กระบวนการทำงาน (อัตราส่วน cputime / realtime) ซึ่งแสดงเป็นเปอร์เซ็นต์


ฉันสนใจทั้งเวลาซีพียูและเวลารอ io ป.ล. ไม่สามารถจัดการกับที่สองอย่างน่าเสียดาย
viraptor

หมายเหตุถึงตัวเอง: แทนที่ -e โดย -C java และ pid โดย spid สำหรับ
id ของ

2
หมายเหตุเพิ่มเติมเพื่อตนเอง: ps -To pcpu,tid -C java | sort -r -k1 | moreสำหรับหัวข้อ hog ในแอป java ps --sort=pcpuไม่ประสบความสำเร็จ ดีกว่าพึ่งพาเชลล์สำหรับส่วนการเรียงลำดับ
kellogs

มีประโยชน์มาก @kellogs ขอบคุณ ฉันจะเพิ่ม-nหรือ-gเรียงลำดับดังนั้นตัวอย่างเช่น "10" จะปรากฏเหนือ "2"
EM0

0

อาจจะดูที่ htop คุณสามารถกำหนดค่าค่อนข้างมากกับมัน


โชคไม่ดีที่มันไม่สามารถแยกซีพียูกับผู้ใช้ / ระบบ / เวลารอสำหรับเธรดเฉพาะ - สำหรับเครื่องทั้งหมด
viraptor

ใช่ แต่ฉันจะทำยังไงต่อ
rmobis

0

คุณลอง sar หรือไม่? สามารถดึงข้อมูลจำนวนมากแม้ในระดับ pid



0

ฉันสะดุดกับสิ่งนี้ในระบบฝังตัวที่เราไม่มีเครื่องมือแฟนซีเพื่อดูสิ่งนี้

สำหรับสิ่งนี้ฉันได้ใช้cpuacct cgroupและวางแต่ละเธรดในโฟลเดอร์ของตัวเอง วิธีนี้ฉันสามารถวัดการใช้งานของพวกเขาได้

ลำดับชั้นมีลักษณะเช่นนี้:

my-app.service
|-tid1
|-tid2
|-tid3

จากนั้นฉันก็เปลี่ยนเป็น

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