วิธีอ่านข้อมูลการใช้งาน CPU ของ Stock


114

บน Ice Cream Sandwich ตัวเลือกในตัวเลือกสำหรับนักพัฒนาคือ "แสดงการใช้งาน CPU" ซึ่งจะเพิ่มการซ้อนทับบนหน้าจอ (ดูภาพหน้าจอด้านล่าง)

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

ใส่คำอธิบายภาพที่นี่


1
เรามีอะไรที่คล้ายกับสิ่งนี้สำหรับ RAM หรือไม่?
Behnam

2
"ค่าเฉลี่ยโหลด" 3 ของฉันอยู่ที่ประมาณ 9.0 แถบสีเขียวและสีแดงแทบจะมองไม่เห็นโดยมีความกว้างของหน้าจอประมาณ 5% ในเกมที่เน้นกราฟิกโดยที่ "ค่าเฉลี่ยการโหลด" แตะประมาณ 10.0 โทรศัพท์ของฉันเป็น Quadcore และแบตเตอรี่มีอายุการใช้งานยาวนาน ฉันคิดว่าคำตอบที่นี่ไม่สมบูรณ์
จอห์น

2
@Campiador นี่จะช้าไปประมาณ 1 ปี แต่สำหรับ RAM คุณสามารถเรียกใช้ c: \> adb shell vmstat <ENTER> เพื่อตรวจสอบข้อมูลเกี่ยวกับหน่วยความจำ ซีดีไปยัง android-sdk-windows \ platform-tools \ สำหรับ adb ของคุณ
raddevus

คำตอบ:


78

นี่ควรเป็นค่าเฉลี่ยการโหลด Unix Wikipediaมีบทความดีๆเกี่ยวกับเรื่องนี้

ตัวเลขแสดงภาระเฉลี่ยของ CPU ในช่วงเวลาที่ต่างกัน จากซ้ายไปขวา: นาทีสุดท้าย / ห้านาทีสุดท้าย / สิบห้านาทีสุดท้าย


2
จากเว็บไซต์นักพัฒนา: แสดงการใช้งาน CPU แสดงตัววัด CPU ที่ด้านบนสุดของหน้าจอเพื่อแสดงจำนวน CPU ที่ใช้งาน แถบสีแดงด้านบนแสดงการใช้งาน CPU โดยรวมและแถบสีเขียวด้านล่างจะแสดงเวลาของ CPU ที่ใช้ในการประกอบหน้าจอ หมายเหตุ: คุณไม่สามารถปิดคุณสมบัตินี้ได้เมื่อเปิดใช้งานโดยไม่ต้องรีสตาร์ทโปรแกรมจำลอง developer.android.com/tools/debugging/debugging-devtools.html
Rolf ツ

45
"สีเขียวคือเวลาในพื้นที่ผู้ใช้สีแดงคือเวลาในเคอร์เนลสีน้ำเงินคือเวลาขัดจังหวะ io" - Dianne Hackborn groups.google.com/forum/?fromgroups=#!topic/android-platform/…
บ.

1
มีหนึ่งแท่งต่อคอร์หรือไม่? ฉันเห็นแค่ 2 แท่ง แต่มีอุปกรณ์ควอดคอร์ นั่นหมายความว่าฉันไม่ได้ใช้คอร์ทั้งหมดใช่หรือไม่?
Ken

5
@Ken: แถบคือโหลดเฉลี่ยของ CPU ทั้งหมดไม่ใช่แกน แถบด้านบนแสดงการใช้งาน CPU ของระบบปฏิบัติการและโปรแกรมทั้งหมดและแถบอื่น ๆ จะแสดงการใช้งาน CPU ของโปรแกรมเฉพาะ ไม่ต้องกังวล Android ใช้ทุกคอร์
nkr

1
ฉันสับสนเล็กน้อย Dianne Hackborn พูดว่า: Green = userspace, Red = Kernel, Blue = interrupt แต่ในเว็บไซต์ของนักพัฒนาจะระบุว่า: red = การใช้งาน CPU โดยรวม, Green = ประกอบหน้าจอ ฟังดูไม่เหมือนกันใช่มั้ย?
Tobias Reich

10

จนถึงตอนนี้นี่เป็นแหล่งข้อมูลที่เป็นประโยชน์ที่สุดที่ฉันสามารถหาได้ เห็นได้ชัดว่าตัวเลขไม่ได้แสดงค่าเฉลี่ยการโหลดซ้ำเป็น%: http://forum.xda-developers.com/showthread.php?t=1495763


3
โหลดเฉลี่ยไม่เคยเป็น%
Sparr

3

ดังที่คำตอบอื่น ๆ ได้ชี้ให้เห็นในระบบ UNIX ตัวเลขแสดงถึงค่าเฉลี่ยโหลดของ CPUในช่วง 1/5/15 นาที แต่บน Linux (และตามมาด้วย Android) สิ่งที่แสดงถึงเป็นสิ่งที่แตกต่างออกไป

หลังจากเคอร์เนลแพทช์ย้อนหลังไปถึงปี 1993 ( บทความเชิงลึกที่ยอดเยี่ยมเกี่ยวกับเรื่องนี้ ) ใน Linux จำนวนโหลดเฉลี่ยไม่ได้แสดงถึงCPUอย่างเคร่งครัดอีกต่อไปโหลด: เนื่องจากบัญชีการคำนวณไม่เพียง แต่สำหรับกระบวนการที่ถูกผูกไว้กับ CPU เท่านั้น แต่ยังรวมถึงกระบวนการที่อยู่ในสถานะการรอแบบไม่ต่อเนื่องเป้าหมายเดิมคือการพิจารณากระบวนการที่ถูกผูกไว้ของ I / O ด้วยวิธีนี้เพื่อแสดงถึง "โหลดระบบ" มากกว่าเพียงแค่โหลด CPU . ปัญหาคือตั้งแต่ปี 1993 การใช้สถานะเครื่องสำรองได้เพิ่มขึ้นในเคอร์เนลของ Linux และโดยทั่วไปแล้วจะไม่แสดงถึงกระบวนการผูก I / O อีกต่อไป ปัญหาดังกล่าวทวีความรุนแรงยิ่งขึ้นโดยนักพัฒนา Linux บางตัวที่ใช้เครื่องสำรองไฟรอเป็นการรอที่ง่ายดายเพื่อหลีกเลี่ยงการรองรับสัญญาณในการนำไปใช้งาน เป็นผลให้ใน Linux (และ Android) เราสามารถเห็นตัวเลขค่าเฉลี่ยการโหลดสูงที่เบ้ซึ่งไม่ได้แสดงถึงโหลดจริงอย่างเป็นกลาง มีรายงานผู้ใช้ Android เกี่ยวกับค่าเฉลี่ยการโหลดสูงที่ไม่สมเหตุสมผลซึ่งตรงกันข้ามกับการใช้งาน CPU ที่ต่ำ ตัวอย่างเช่น, โทรศัพท์ Android เครื่องเก่าของฉัน (ที่มี CPU 2 คอร์) โดยปกติจะแสดงโหลดเฉลี่ย ~ 12 เมื่อระบบและซีพียูไม่ได้ใช้งาน ดังนั้นจำนวนโหลดเฉลี่ยใน Linux (Android) จึงไม่ได้เป็นเมตริกประสิทธิภาพที่เชื่อถือได้


2

ข้อมูลเพิ่มเติมเกี่ยวกับ "load average" ที่แสดงการโหลด CPU ในช่วง 1 นาที 5 นาทีและ 15 นาที

Linux, Mac และระบบอื่น ๆ ที่คล้าย Unix จะแสดงตัวเลข“ load average” ตัวเลขเหล่านี้จะบอกคุณว่า CPU ดิสก์และทรัพยากรอื่น ๆ ของระบบของคุณยุ่งแค่ไหน พวกเขาไม่ได้อธิบายตนเองในตอนแรก แต่สามารถทำความคุ้นเคยกับพวกเขาได้ง่าย

WIKI: example, one can interpret a load average of "1.73 0.60 7.98" on a single-CPU system as:

during the last minute, the system was overloaded by 73% on average (1.73 runnable processes, so that 0.73 processes had to wait for a turn for a single CPU system on average).
during the last 5 minutes, the CPU was idling 40% of the time on average.
during the last 15 minutes, the system was overloaded 698% on average (7.98 runnable processes, so that 6.98 processes had to wait for a turn for a single CPU system on average) if dual core mean: 798% - 200% = 598%. 

คุณอาจมีระบบที่มีซีพียูหลายตัวหรือซีพียูแบบมัลติคอร์ ตัวเลขค่าเฉลี่ยโหลดทำงานแตกต่างกันเล็กน้อยในระบบดังกล่าว ตัวอย่างเช่นหากคุณมีค่าเฉลี่ยการโหลดอยู่ที่ 2 ในระบบ CPU เดี่ยวนั่นหมายความว่าระบบของคุณมีภาระงานมากเกินไป 100 เปอร์เซ็นต์ตลอดระยะเวลาหนึ่งกระบวนการหนึ่งกำลังใช้ CPU ในขณะที่อีกกระบวนการหนึ่งกำลังรออยู่ ในระบบที่มีซีพียูสองตัวจะเป็นการใช้งานที่สมบูรณ์ - กระบวนการที่ต่างกันสองกระบวนการใช้ซีพียูสองตัวที่ต่างกันตลอดเวลา ในระบบที่มีซีพียูสี่ตัวจะเป็นการใช้งานครึ่งหนึ่ง - สองกระบวนการใช้ซีพียูสองตัวในขณะที่ซีพียูสองตัวไม่ได้ใช้งาน

ในการทำความเข้าใจเกี่ยวกับจำนวนโหลดโดยเฉลี่ยคุณจำเป็นต้องทราบว่าระบบของคุณมี CPU กี่ตัว ค่าเฉลี่ยการโหลด 6.03 จะบ่งชี้ว่าระบบที่มีซีพียูตัวเดียวมีการโอเวอร์โหลดอย่างมาก แต่ก็ใช้ได้ดีในคอมพิวเตอร์ที่มี 8 ซีพียู

ข้อมูลเพิ่มเติม: ลิงค์


1

จากหนังสือแอพ Android ประสิทธิภาพสูง (หน้า 157):

  • สิ่งที่เราเห็นนั้นเทียบเท่ากับคำสั่งadb shell dumpsys cpuinfo
  • ตัวเลขกำลังแสดงการโหลดของ CPUในช่วง 1 นาที 5 นาทีและ 15 นาที (จากด้านซ้าย)
  • สีแสดงเวลาที่ CPU ใช้ในพื้นที่ผู้ใช้ (สีเขียว) เคอร์เนล (สีแดง) และการขัดจังหวะ IO (สีน้ำเงิน)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.