การเขียนบันทึกการใช้งาน CPU / RAM ในช่วงระยะเวลาหนึ่งเพื่อจัดทำไฟล์บน CentOS


8

ฉันกำลังมองหาแอปพลิเคชันหรือบรรทัดของรหัสที่จะให้ฉันสังเกตกระบวนการบันทึกข้อมูลในตัวแปรจำนวนหนึ่งจากนั้นใส่ข้อมูลที่รวบรวมไว้ในไฟล์

ฉันได้ลองกับหลากหลายรูปแบบtopแต่ก็ไม่มีโชค ฉันใช้เซิร์ฟเวอร์เสมือน CentOS หลายแห่ง VM เป็น RAM ขนาด 2GB, โปรเซสเซอร์ 2 ตัว

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

ฉันกำลังทดสอบเซิร์ฟเวอร์และฉันต้องการให้มีข้อมูลเพื่อสร้างสถิติ

คำตอบ:


11

มาตรฐานpsก็เพียงพอแล้ว

while true; do ps o pcpu,rsz -p $pid | tail -n1 >>usage.log; sleep $interval; done

ผลลัพธ์:

0.0  3352
0.3 31640
0.4 36924
0.5 36052
...

เขตข้อมูลแรกคือการใช้งาน CPU ใน% ที่สองคือการใช้หน่วยความจำกายภาพในหน่วย kbytes


ที่สมบูรณ์แบบฉันได้ทำสคริปต์ยาวเพื่อทำความสะอาดข้อมูลทั้งหมดจากการส่งออกแบทช์ แต่วิธีที่ดีกว่าง่ายและมีประสิทธิภาพฉันขอขอบคุณมาก!
keponk

ในตอนท้ายผมเก็บไว้ใช้สคริปต์ของฉันตั้งแต่ PS ให้ฉันเฉลี่ยโหลดซึ่งเป็นปกติเช่นเดียวกับ CPU% แต่ไม่ได้เป็นกฎข้อมูลเพิ่มเติมในเรื่องนี้อย่างรวดเร็วค้นหา google
keponk

1
% CPU ที่นี่ไม่ได้เป็น% ที่ใช้ในช่วงเวลานั้น แต่เปอร์เซ็นต์เฉลี่ยของเวลาทำงานทั้งหมดของโปรแกรม ฉันเชื่อว่านี่เป็นสิ่งที่ทำให้เข้าใจผิด
Will Sewell

2

หากคุณสนใจเวลาที่แม่นยำและต้องการ CPU เป็นเปอร์เซ็นต์:

watch --precise -n 1 'top -b -n 1 -p [PID] | tail -n 1 | awk "{print \$9}" >> [PID].log'

1

ฉันขอแนะนำ/sadcsar


มันไม่ได้เป็นระบบกว้างเท่านั้น
whitequark

@whitequark: sarมันขึ้นอยู่กับรุ่นของ บางรุ่นใช้คนอื่นใช้sar -x PID pidstat -p PID
หยุดชั่วคราวจนกว่าจะมีการแจ้งให้ทราบต่อไป

ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
saji89

0

คุณกำลังพยายามสังเกตว่าเวลา cpu ที่กระบวนการใดต้องการ

ฉันจะแนะนำเครื่องมือ stat CPU สำหรับ CentOS หรือไม่ แต่สิ่งนี้ทำให้ทั้งระบบไม่ใช่แค่กระบวนการเดียว

กระบวนการใดกระบวนการหนึ่งจะแสดงเวลา CPU ในเอาต์พุตของ ps:

$ ps -ef | egrep blah
root     13988 11152  0 Dec16 ?        00:00:05 sshd: xxx [priv]
xxx      14024 13988  0 Dec16 ?        00:06:00 sshd: xxx@pts/0
xxx      14032 14024  0 Dec16 pts/0    07:00:00 -bash
root      1194   679  0 Apr24 ?        2-05:15:14 [kswapd0]
root      1195   679  0 Apr24 ?        2-06:35:49 [kswapd1]
  • 00:00:00 คือ cpu ชั่วโมง / นาที / วินาที มันจะสะสม
  • คุณจะต้องมีสิทธิ์ในการดูสิ่งนี้หากผู้ใช้ไม่ใช่คุณ
  • เมื่อค่านี้สูงกว่าวันรูปแบบจะเปลี่ยนไป เหนือมัน 2 วัน รูทีนการวิเคราะห์คำของคุณจะต้องจัดการสิ่งนี้

เมื่อถึงจุดนี้ให้แยกวิเคราะห์ผลลัพธ์ด้วย Python ทำงานคณิตศาสตร์วันที่กับมันและคุณเป็นทอง


0

คำสั่งต่อไปนี้รับค่าเฉลี่ยของการใช้ CPU และหน่วยความจำทุก 40 วินาทีสำหรับกระบวนการเฉพาะ (pid)

pidstat 40 -ru -p <pid>

เอาต์พุตสำหรับเคสของฉัน (สองบรรทัดแรกสำหรับการใช้ CPU, สองบรรทัดสำหรับหน่วยความจำ):

02:15:07 PM       PID    %usr %system  %guest    %CPU   CPU  Command
02:15:47 PM     24563    0.65    0.07    0.00    0.73     3  java

02:15:07 PM       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
02:15:47 PM     24563      6.95      0.00 13047972 2123268   6.52  java
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.