บน Linux จะรู้ได้อย่างไรว่ามีกี่คอร์ของเครื่องที่ทำงานอยู่?


14

บน Linux จะรู้ได้อย่างไรว่ามีกี่คอร์ของเครื่องที่ทำงานอยู่? ฉันคิดว่าการทดสอบนี้จะใช้กับ Android ได้เช่นกัน ฉันต้องรู้ว่ามีแกนมากกว่าหนึ่งแกนหรือไม่ สงสัยว่าการทดสอบนี้โดยให้กระบวนการสร้างหลายเธรด เป็นไปได้ไหมที่เธรดจะสืบค้นโปรเซสเซอร์ที่เปิดอยู่? วิธีนี้สามารถบอกได้ว่าจะใช้หลายคอร์ภายใต้ภาระหนักหรือไม่ ไม่แน่ใจว่าฉันอยู่ในเส้นทางที่ถูกต้องหรือไม่


1
โดย "active" ฉันถือว่าคุณหมายถึงจำนวนคอร์ที่ใช้อยู่ในปัจจุบัน หรือคุณหมายถึงจำนวนคอร์ที่ระบบมี
มิเคล

ใช่ฉันต้องการจะบอกว่ามีการใช้งานจำนวนเท่าไหร่ในขณะนี้

คำตอบ:


19

คุณสามารถใช้topเพื่อแสดงรายการการใช้ประโยชน์ของแต่ละคอร์ กด 1 หากจำเป็นเพื่อแยกแถว CPU เป็นแถวแยกสำหรับแต่ละแกน

คุณยังสามารถเพิ่มคอลัมน์ที่แสดงคอร์ที่ใช้ล่าสุดสำหรับแต่ละกระบวนการได้ กด f เพื่อแสดงรายการฟิลด์จากนั้นกด j เพื่อเปิดใช้งานคอลัมน์ "P" จากนั้นกดเว้นวรรคเพื่อกลับสู่มุมมองสด


ดังนั้นบางทีฉันควรเขียนและรันโปรแกรมที่วางไข่หลายเธรดแล้วรันคำสั่ง 'top' ในคอนโซล?
likejudo

ฉันคิดว่าควรจะทำงาน เพียงแค่กด H เมื่อคุณอยู่ในtopรายการหัวข้อแยก หรือคุณสามารถเขียนโปรแกรมด้วยการวนซ้ำไม่สิ้นสุดและรันหลายครั้ง
Brian

บอกเด็ก ๆ ว่าฉันเขียนโปรแกรมเพื่อวางไข่ 100 เธรดแต่ละชุดมีการคำนวณที่ยาวและเข้มข้น ถ้าฉันเขียนมันใน Java (Android) มีการรับประกันหรือไม่ว่า JVM / KVM จะรันเธรดบนคอร์ที่แตกต่างกันและรันบนคอร์ทั้งหมดหรือไม่?
likejudo

1
ฉันไม่รู้ - นั่นไม่ใช่สิ่งที่การทดสอบของคุณควรจะคิดออกหรือ
Brian

ฉันต้องการทดสอบโปรแกรมที่ระบุว่าจะ จำกัด จำนวนแกนประมวลผลที่ใช้งานอยู่ ฉันจะค้นหาเพิ่มเติม ขอบคุณ!
likejudo

6

psมีเขตข้อมูลที่เรียกว่าpsrตัวประมวลผลที่ทำงานอยู่

ดังนั้นคุณสามารถใช้สิ่งที่ชอบ:

ps -e -o psr= | sort | uniq | wc -l

โปรดทราบว่าการใช้งานpsเช่นนี้แน่นอนจะทำให้มีแกนหลักอย่างน้อยหนึ่งแกน

น่าจะดีกว่าคือใช้สิ่งนี้:

tmp=/tmp/ps.$$
ps -e -o psr= > /tmp/ps.$$
sort -u "$tmp" | wc -l
rm "$tmp"

ด้วยวิธีนี้sortและwcไม่เพิ่มจำนวน


ถ้าระบบมี 16 คอร์และไม่มีใครใช้บางส่วน?

จากนั้นจะพิมพ์ 0 เนื่องจากไม่มีการใช้งานใด ๆ ฉันคิดว่านั่นเป็นคำถามที่ขอ
มิเคล

ไม่เห็นความคิดเห็นใหม่สำหรับคำถาม

1
แน่นอนว่าด้วยการวิ่งpsเรากำลังทำให้ใช้งานได้อย่างน้อย 1 คอร์ ;-)
มิเคล

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

3
htop

คำสั่งนี้ใช้งานได้ดีทั้งใน Ubuntu และ Centos และแสดงกราฟิกจำนวน CPU และวิธีการใช้งานแบบกราฟิก

สำหรับ centos:

yum install htop

สำหรับอูบุนตู:

apt-get install htop

2

ลองทำสิ่งต่อไปนี้:

cat /proc/cpuinfo

นี่คือลิงค์ไปยังตัวอย่าง Android Java


1
โดย "แอ็คทีฟ" ฉันถือว่า Anil หมายถึงจำนวนคอร์ที่ใช้งานอยู่ในปัจจุบันและจำนวนที่ไม่ได้ใช้งานนั่นคือการประมาณว่าระบบยุ่งแค่ไหน /proc/cpuinfoเพียงแค่บอกให้คุณทราบว่าระบบมีแกนประมวลผลกี่แกนและถึงแม้คุณจะต้องทำมากกว่าที่cat /proc/cpuinfoจะเป็น HyperThreading
มิเคล

ตกลง - ไม่ชัดเจน แต่คุณพูดถูก
อาเมียร์อัฟกานี

0

คุณสามารถใช้ cat / sys / อุปกรณ์ / ระบบ / cpu / เป็นไปได้หรือ cat / sys / อุปกรณ์ / system / cpu / ออนไลน์ ความเป็นไปได้ส่วนใหญ่ในกรณีที่คุณแยกซีพียูเพื่อเรียกใช้โปรแกรมบางอย่าง

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