ฉันอยากจะรู้ว่าการส่งออกของลินุกซ์ที่ใช้ Red-Hat สามารถตีความแตกต่างกันโดยลินุกซ์ที่ใช้ Debian
เพื่อทำให้คำถามมีความเฉพาะเจาะจงมากขึ้นสิ่งที่ฉันเป็นคือทำความเข้าใจว่า "ค่าเฉลี่ยการโหลด" จากบรรทัดแรกของtop
คำสั่งในระบบ Red-Hat ถูกตีความและวิธีการตรวจสอบโดยรหัส ro เอกสารอย่างเป็นทางการ
[มีหลายวิธีในการเข้าถึงหัวข้อนี้ซึ่งทั้งหมดเป็นคำตอบที่ยอมรับได้สำหรับคำถาม]
แนวทางหนึ่งที่เป็นไปได้คือค้นหาว่าข้อมูลนี้ได้รับการบันทึกไว้ที่ใด
อีกอันหนึ่งก็คือการค้นหารุ่นของรหัสที่top
สร้างขึ้นจากการแจกจ่ายเฉพาะและรุ่นที่ฉันกำลังทำงานอยู่
เอาต์พุตคำสั่งที่ฉันได้รับคือ:
top - 13:08:34 up 1:19, 2 users, load average: 0.02, 0.00, 0.00
Tasks: 183 total, 1 running, 182 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 96.8%id, 2.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3922520k total, 788956k used, 3133564k free, 120720k buffers
Swap: 2097148k total, 0k used, 2097148k free, 344216k cached
ในกรณีนี้ฉันจะตีความค่าเฉลี่ยการโหลดได้อย่างไร
ฉันมีการจัดการเพื่อค้นหาว่าโหลดเฉลี่ยประมาณนาทีสุดท้ายจากแหล่งเอกสารหนึ่งและมันควรจะตีความหลังจากถูกคูณด้วย 100 โดยแหล่งเอกสารอื่น
ดังนั้นคำถามคือ:
โหลด 0.02% หรือ 2% หรือไม่
แหล่งที่มาเอกสารและเวอร์ชัน:
1) ดาวดวงแรกที่มี
TOP(1) Linux User’s Manual TOP(1)
NAME
top - display Linux tasks
ที่มา: man top
ในการแจกจ่าย RedHat ของฉัน
Ubuntu ยังมีรุ่นที่มี "งาน" ที่ไม่ได้อธิบายค่าเฉลี่ยการโหลดใน:
http://manpages.ubuntu.com/manpages/precise/man1/top.1.html
2) อันที่สองเริ่มต้นด้วย
TOP(1) User Commands TOP(1)
NAME top
top - display Linux processes
ที่มา:
http://man7.org/linux/man-pages/man1/top.1.htm
3) อันนี้เริ่มต้นด้วย:
TOP(1)
NAME
top - display and update information about the top cpu processes
แหล่งที่มา: http://www.unixtop.org/man.shtml
อันแรกสามารถเห็นได้man top
ในRHEL
หรือในonline ubuntu documentation
และมันไม่มีคำอธิบายใด ๆ สำหรับรูปแบบผลลัพธ์ (หรือเกี่ยวกับค่าเฉลี่ยการโหลดที่ฉันสนใจ) .
ข้อที่สองมีคำอธิบายสั้น ๆ ชี้ให้เห็นว่าค่าเฉลี่ยของการโหลดเกี่ยวข้องกับ 1 นาทีที่ผ่านมา แต่ไม่มีอะไรเกี่ยวกับการตีความค่าของมัน!
ฉันพูดโดยตรงจากแหล่งที่สอง:
2a ค่าเฉลี่ย UPTIME และ LOAD
ส่วนนี้ประกอบด้วยบรรทัดเดียวที่มี:
ชื่อโปรแกรมหรือหน้าต่างขึ้นอยู่กับ
เวลาและระยะเวลาปัจจุบันของโหมดการแสดงผลตั้งแต่การบู๊ตครั้งสุดท้าย
จำนวนผู้ใช้ทั้งหมดที่
ระบบโหลด avg ในช่วง 1, 5 และ 15 นาที
ดังนั้นหากคำอธิบายนี้ถูกต้องแน่นอนมันก็เพียงพอที่จะเข้าใจว่าค่าเฉลี่ยการโหลดประมาณ 1 นาทีสุดท้าย
แต่มันไม่ได้อธิบายรูปแบบของตัวเลข
ในคำอธิบายที่สามมันบอกว่า:
เมื่อระบุหมายเลขสำหรับค่าเฉลี่ยของการโหลดควรจะคูณด้วย 100
คำอธิบายนี้แสดงให้เห็นว่า 0.02 หมายถึง 2% และไม่ 0.02% แต่ถูกต้องหรือไม่ นอกจากนี้มันถูกต้องสำหรับการแจกแจงทั้งหมดของ linux และการใช้งานที่แตกต่างกันของtop
?
เพื่อหาคำตอบสำหรับคำถามนี้ฉันพยายามอ่านรหัสโดยค้นหาทางออนไลน์ แต่ฉันพบว่าอย่างน้อยก็มีสองเวอร์ชั่นที่แตกต่างกันซึ่งtop
เกี่ยวข้องกับ RHEL! builtin-top.c
และ top.c
refactored ทั้งสองลิขสิทธิ์โดย Red-Hat ตามที่แจ้งไว้ในตอนต้นของรหัสและดูเหมือนว่าตรรกะที่ RHEL ใช้หนึ่งในนั้น
http://lxr.free-electrons.com/source/tools/perf/builtin-top.c
http://lxr.free-electrons.com/source/tools/perools/perf/util/top.c
ดังนั้นก่อนที่จะเจาะลึกลงไปในรหัสที่มากฉันต้องการความคิดเห็นเกี่ยวกับที่จะมุ่งเน้นไปที่รูปแบบความเข้าใจที่ถูกต้องเกี่ยวกับวิธีการตีความโหลดซีพียู?
จากข้อมูลที่ให้ไว้ในคำตอบด้านล่างนอกเหนือจากการค้นหาส่วนตัวแล้วฉันพบว่า:
1 - สิ่งtop
ที่ฉันกำลังใช้อยู่มีอยู่ในแพ็คเกจ procps-3.2.8 top -v
ซึ่งสามารถตรวจสอบได้โดยใช้
2 - ในเวอร์ชั่นprocps-3.2.8
ที่ฉันดาวน์โหลดจากเว็บไซต์ทางการดูเหมือนว่าเครื่องมือuptime
จะรับข้อมูลจากprocfs
ไฟล์/proc/loadavg
โดยตรง (ไม่ใช่การใช้ฟังก์ชัน linux getloadavg()
)
3 - ตอนนี้สำหรับคำสั่งก็ยังไม่ได้ใช้ฟังก์ชั่นtop
getloadavg()
ฉันพยายามที่จะตรวจสอบว่าสิ่งที่top
ทำจริงเช่นเดียวกับuptime
เครื่องมือเพื่อแสดงค่าเฉลี่ยของโหลด มันจริงเรียกuptime
ฟังก์ชั่นของเครื่องมือที่ได้รับข้อมูลจากไฟล์procfs
ดังนั้นทุกอย่างชี้ไปที่ไฟล์! ดังนั้นในการสร้างความเข้าใจที่ถูกต้องเกี่ยวกับการผลิตโดยหนึ่งจะต้องอ่านรหัสเคอร์เนลเพื่อดูวิธีการเขียนไฟล์ นอกจากนี้ยังมีบทความดีชี้ให้เห็นในหนึ่งในคำตอบที่ให้คนธรรมดาของคำคำอธิบายในสามของค่านิยมของ
ดังนั้นแม้ว่าความจริงที่ว่าคำตอบทั้งหมดมีประโยชน์และเป็นประโยชน์เท่า ๆ กัน แต่ฉันจะทำเครื่องหมายคำที่ชี้ไปที่บทความ
http://www.linuxjournal.com//article/9001ว่า "คำตอบ" สำหรับคำถามของฉัน ขอบคุณสำหรับการสนับสนุนของคุณ!/proc/loadavg
/proc/loadavg
load average
top
loadavg
loadavg
นอกจากนี้จากคำถามการทำความเข้าใจค่าเฉลี่ยสูงสุดและโหลดฉันพบลิงก์ไปยังซอร์สโค้ดของเคอร์เนลที่ชี้ไปยังจุดที่loadavg
ถูกคำนวณ ดูเหมือนว่ามีความคิดเห็นมากมายที่อธิบายถึงวิธีการทำงานรหัสนี้เป็นส่วนหนึ่งด้วยC
!
ลิงก์ไปยังรหัสคือhttp://lxr.free-electrons.com/source/kernel/sched/loadavg.c
อีกครั้งฉันไม่ได้พยายามที่จะมีส่วนร่วมในการลอกเลียนแบบใด ๆ ฉันแค่เพิ่มสิ่งนี้เพื่อความสมบูรณ์ ดังนั้นฉันซ้ำแล้วซ้ำอีกว่าการเชื่อมโยงไปยังรหัสเคอร์เนลถูกพบจากคำตอบข้อใดข้อหนึ่งในการทำความเข้าใจค่าเฉลี่ยการโหลดสูงสุด ...
top -v
)