จำนวนตัวประมวลผลใน / proc / cpuinfo


26

ในขณะที่ฉันเรียนรู้เกี่ยวกับการโหลดซีพียูฉันก็รู้ว่ามันขึ้นอยู่กับจำนวนของคอร์ ถ้าฉันมี 2 คอร์โหลด 2 จะให้ 100% ของการใช้ cpu

ดังนั้นฉันจึงพยายามค้นหา cores (ฉันรู้อยู่แล้วว่าระบบมี 2 คอร์, 4 เธรดดังนั้น 2 คอร์เสมือนตรวจสอบที่นี่เกี่ยวกับโปรเซสเซอร์ ) ดังนั้นฉันวิ่งcat /proc/cpuinfo ซึ่งให้ฉัน

processor   : 0
vendor_id   : GenuineIntel
cpu family  : 6
model       : 69
model name  : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping    : 1
microcode   : 0x17
cpu MHz     : 774.000
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2
apicid      : 0
initial apicid  : 0
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips    : 3591.40
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 1
vendor_id   : GenuineIntel
cpu family  : 6
model       : 69
model name  : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping    : 1
microcode   : 0x17
cpu MHz     : 1600.000
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2
apicid      : 1
initial apicid  : 1
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips    : 3591.40
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 2
vendor_id   : GenuineIntel
cpu family  : 6
model       : 69
model name  : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping    : 1
microcode   : 0x17
cpu MHz     : 800.000
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 1
cpu cores   : 2
apicid      : 2
initial apicid  : 2
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips    : 3591.40
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

processor   : 3
vendor_id   : GenuineIntel
cpu family  : 6
model       : 69
model name  : Intel(R) Core(TM) i7-4500U CPU @ 1.80GHz
stepping    : 1
microcode   : 0x17
cpu MHz     : 774.000
cache size  : 4096 KB
physical id : 0
siblings    : 4
core id     : 1
cpu cores   : 2
apicid      : 3
initial apicid  : 3
fpu     : yes
fpu_exception   : yes
cpuid level : 13
wp      : yes
flags       : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat epb xsaveopt pln pts dtherm tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
bogomips    : 3591.40
clflush size    : 64
cache_alignment : 64
address sizes   : 39 bits physical, 48 bits virtual
power management:

ตอนนี้ฉันสับสนอย่างสิ้นเชิง มันแสดงให้เห็นถึงโปรเซสเซอร์ 4 ตัวพร้อมกับ 2 cpu cores ทุกคนสามารถอธิบายผลลัพธ์นี้ได้หรือไม่

เมื่อโหลด cpu ของฉันคือ 3.70, โหลดสูงสุดนี้คืออะไร? ยังคงอยู่ในเวลานั้น CPU อยู่ที่ <50%

แล้วเทอร์โบบูสต์ล่ะ? แกนทั้งหมดมีการเพิ่มพลังเทอร์โบหรือมีอยู่จริงหรือไม่?

มีวิธีใดบ้างใน Ubuntu ที่จะรับความถี่ cpu ปัจจุบันเพื่อดูว่าโปรเซสเซอร์นั้นใช้เทอร์โบบูสต์หรือไม่?

โหลดได้ถึง 3.70 ประมาณ 100% แต่การใช้งาน CPU ไม่ได้ 100% เพราะเวลาตอบสนองของ IO นี่ไม่ได้หมายความว่าอุปกรณ์ IO จะมีความเร็วสูงสุด แต่อุปกรณ์ io จะไม่ว่าง 100% ซึ่งบางครั้งมีผลต่อแอปพลิเคชันที่ใช้ IO ex: เพลงอาจแตกหัก


2
การทำเกลียวมากเกินไปคือสาเหตุที่คุณเห็น 4 แทน 2
Derobert

1
ทั้งเอกสารและ cpuinfo บอกคุณว่าคุณมีซีพียูสองคอร์ โปรเซสเซอร์ 0 และ 1 อยู่บนแกน 0 ในขณะที่โปรเซสเซอร์ 2 และ 3 อยู่บนแกน 1 (ดูที่บรรทัดcore id) physical idช่วยให้คุณชิป (ฉันเดา) นี่คือ 0 สำหรับโปรเซสเซอร์ทั้งหมดดังนั้นคุณจึงมีเพียงชิปเดียว
lgeorget

ตัวประมวลผลโหลดอะไรถึง 100% ... 2 หรือ 4
Madhurendra Sachan

โปรเซสเซอร์คืออะไรที่นี่?
Madhurendra Sachan

โปรดทราบว่าคำจำกัดความของเธรดของ Intel ("A เธรดหรือเธรดของการดำเนินการเป็นคำศัพท์ทางซอฟต์แวร์สำหรับลำดับขั้นตอนการสั่งพื้นฐานที่สามารถส่งผ่านหรือประมวลผลโดยซีพียูแกนเดียว ") อาจทำให้คิดว่ามี 2 คอร์ และ 4 เธรดตามที่ระบุในข้อมูลจำเพาะ 2x4 = 8 เธรดกำลังทำงาน ในความเป็นจริงคุณมี 4 เธรดทั้งหมดและ 2 คอร์มีลักษณะเป็น 4 คำจำกัดความของเทคโนโลยีIntel® Hyper-Threading ชัดเจนยิ่งขึ้น: "มอบการประมวลผลสองเธรดต่อฟิสิคัลคอร์ " และอธิบายได้ดีกว่าที่ระบบของคุณเห็นโปรเซสเซอร์ 4 ตัว / พี่น้อง ของ 2 cpu cores ติดตั้งหนึ่งชิป
XavierStuvw

คำตอบ:


35

คำว่า "CPU", "processor" และ "core" ถูกนำมาใช้ในรูปแบบที่ค่อนข้างสับสน พวกเขาอ้างถึงสถาปัตยกรรมโปรเซสเซอร์ คอร์เป็นหน่วยที่เล็กที่สุดที่ใช้โพรเซสเซอร์ทั่วไป ตัวประมวลผลคือชุดประกอบของแกนประมวลผล (ในบางระบบ ARM ตัวประมวลผลคือชุดประกอบของกลุ่มซึ่งตัวเองเป็นกลุ่มชุดของแกนประมวลผล) ชิปสามารถมีโปรเซสเซอร์หนึ่งตัวหรือมากกว่า (x86 ชิปมีโปรเซสเซอร์เดียวในแง่ของการประมวลผลคำนี้)

การทำไฮเปอร์เธรดหมายความว่าบางส่วนของคอร์ทำซ้ำ แกนที่มีไฮเปอร์เธรดบางครั้งแสดงเป็นชุดประกอบของ "แกนประมวลผลเสมือน" สองอัน - ไม่ได้หมายความว่าแต่ละแกนเป็นเสมือน แต่พหูพจน์นั้นเสมือนจริงเพราะแกนเหล่านี้ไม่ใช่แกนแยกจริง ๆ และบางครั้งพวกเขาจะต้องรอในขณะที่แกนอื่น ๆ การใช้ประโยชน์จากส่วนที่ใช้ร่วมกัน

เท่าที่เกี่ยวข้องกับซอฟต์แวร์มีเพียงแนวคิดเดียวที่มีประโยชน์เกือบทุกที่: แนวคิดของการดำเนินการแบบคู่ขนาน ดังนั้นในคู่มือซอฟต์แวร์ส่วนใหญ่คำว่าCPUและโปรเซสเซอร์ถูกใช้เพื่อหมายถึงฮาร์ดแวร์ชิ้นใดชิ้นหนึ่งที่เรียกใช้งานรหัสโปรแกรม ในแง่ของฮาร์ดแวร์นี่หมายถึงหนึ่งคอร์หรือหนึ่งคอร์เสมือนที่มีไฮเปอร์เธรด

ดังนั้นtopจะแสดงซีพียู 4 ตัวให้คุณเพราะคุณสามารถมี 4 เธรดที่ทำงานในเวลาเดียวกัน /proc/cpuinfoมี 4 รายการหนึ่งรายการสำหรับแต่ละ CPU (ในแง่นั้น) processorตัวเลข (ซึ่งเป็นหมายเลขของรายการใน) ตรงกับเหล่านี้ 4 กระทู้cpuNUMBER/sys/devices/system/cpu

/proc/cpuinfo เป็นหนึ่งในไม่กี่แห่งที่คุณได้รับข้อมูลเกี่ยวกับฮาร์ดแวร์ที่ใช้เธรดการดำเนินการเหล่านี้:

physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2

หมายความว่าcpu0เป็นหนึ่งใน 4 เธรดภายในฟิสิคัลคอมโพเนนต์ (ตัวประมวลผล) หมายเลข 0 และที่อยู่ในคอร์ 0 จาก 2 ในโปรเซสเซอร์นี้


คำอธิบายที่ดีคุณซ้าย 3 คำถามOnce my cpu load was 3.70, Is this maximum load? Still at that time cpu was at <50%., What about turbo boost ? Are all cores are turbo boosted or only physical ?และHow to check frequency.
Madhurendra สาจันทร์

@MADTerry โปรแกรมใดรายงานว่า "โหลด cpu เท่ากับ 3.70" ในแง่อะไรกันแน่ คุณหมายถึงค่าเฉลี่ยโหลดหรือไม่ คุณหมายถึงอะไรโดย“ cpu อยู่ที่ <50%” เกี่ยวกับ Turbo Boost ฉันไม่คุ้นเคยกับสิ่งนั้น แต่ฉันไม่เห็นว่าทำไมพวกเขาถึงไม่ได้รับการสนับสนุน แกนประมวลผลทั้งหมดเป็นแบบกายภาพยกเว้นว่าคุณกำลังทำงานในเครื่องเสมือน: ตามที่ฉันอธิบายในคำตอบของฉันใน“ แกนเสมือน” มันไม่ใช่แกนที่เป็นเสมือน แต่เป็นการแยกจากกัน
Gilles 'หยุดชั่วร้าย'

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

ฉันยังจะยืนยันว่าในแง่ของซอฟแวร์ระดับสูงคุณมีความสนใจค่อนข้างในกระบวนการ (ดูtop, uptime) หน่วยฮาร์ดแวร์ใดที่เกี่ยวข้องกับกระบวนการในท้ายที่สุดเป็นเรื่องของซอฟต์แวร์ระดับต่ำ (การรวบรวมระบบปฏิบัติการ) รายงาน cpuinfo สรุปข้อเท็จจริงที่ว่าแต่ละตัวประมวลผลทางกายภาพ (หนึ่งในหลาย ๆ ซีพียูบนตาย) สามารถขยายอำนาจการคำนวณโดยใช้เทคโนโลยี feats เช่นมัลติเธรด มันจะคำนึงถึง 'อะไร' ที่สามารถดูแลกระบวนการหนึ่งครั้งในฐานะโปรเซสเซอร์ ในมุมมองทางบัญชีของ cpuinfo ความสามารถของอุปกรณ์จะนำไปสู่การนับรวมของ "โปรเซสเซอร์"
XavierStuvw

13

เพียงตอบคำถามแรกของคุณ ในผลลัพธ์ของcat /proc/cpuinfoคุณสามารถดูข้อมูลต่อไปนี้: -

physical id : 0
siblings    : 4
core id     : 0
cpu cores   : 2

คุณสามารถเห็นจำนวนของและsiblings is 4 เป็น 2 คือจำนวนแกนประมวลผลทั้งหมดในโปรเซสเซอร์ซึ่งสามารถตรวจสอบได้จากข้อมูลจำเพาะที่ระบุใน URL ของ intel ที่คุณให้ ในทำนองเดียวกันเป็นจำนวนที่กำหนดโดยจำนวนเธรดที่จัดทำโดย HTT ของ Intelcpu cores is 2cpu coressiblings

ในทำนองเดียวกันสำหรับรหัสทางกายภาพ0ซึ่งระบุว่ามีเพียงหนึ่งชิปโปรเซสเซอร์และสำหรับรหัสแกนคุณจะเห็น0 and 1ว่ามี 2 คอร์ในโปรเซสเซอร์

อัปเดต: การเพิ่มคำตอบให้กับคำถามอื่น

แล้วเทอร์โบบูสต์ล่ะ? แกนทั้งหมดถูกเพิ่มพลังเทอร์โบหรือมีอยู่จริงหรือไม่?

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

Any method in ubuntu to get current cpu freq. if processor is on turbo boost or not.

lscpuเทอร์โบหรือไม่ว่าคุณสามารถดูรายละเอียดความถี่ในการส่งออกของ และสำหรับผลลัพธ์ที่ได้รับการกลั่น: -

lscpu | grep Hz

คำตอบสั้น ๆ และรวดเร็ว แต่คุณสามารถอธิบายเหลือ 3 ได้อย่างไร
Madhurendra Sachan

@ MadTerry ขอบคุณ แต่คนอื่น ๆ ที่ฉันไม่ชัดเจนจะทำวิจัยและแก้ไขคำตอบของฉัน ในขณะเดียวกันให้ดูว่ามีคนอื่นปรากฏขึ้นหรือไม่
beginer

1
+1 สำหรับlscpuคำสั่ง
Arda

8

คุณสามารถลองในเทอร์มินัล:

sudo lscpu

สิ่งนี้จะให้ภาพรวมของคุณสมบัติทางกายภาพของซีพียูของคุณ สำหรับเทอร์โบบูสต์หรือไม่นี่เป็นการควบคุมฮาร์ดแวร์อย่างแท้จริงมากกว่าระบบปฏิบัติการของตัวเองดังนั้นหาก Intel มีไดรเวอร์เฉพาะสำหรับ Linux ที่สามารถปรับความเร็วโปรเซสเซอร์ของคุณได้จะไม่มีผู้นำที่แข็งแกร่งในการตรวจสอบสถานะเทอร์โบบูสต์ (เว้นแต่จะมีรหัสคำสั่งสำหรับ ตรวจสอบฟอรัมอื่น ๆ หากมีเบาะแสเกี่ยวกับคำถามของคุณ)

สำหรับฉันนี่คือสิ่งที่ฉันได้รับเมื่อฉันพิมพ์คำสั่งด้านบน AMD ของฉันบอกว่ามันเป็น quad core แต่ core ที่อยู่ในรายการของฉันอยู่ที่นี่เพียง 2 โดยมี 2 เธรดต่อคอร์ (เพิ่มได้ถึง 4 คอร์) ฉันใช้หน่วยประมวลผล AMD A10 APU 5750m

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    2
Core(s) per socket:    2
Socket(s):             1
NUMA node(s):          1
Vendor ID:             AuthenticAMD
CPU family:            21
Model:                 19
Stepping:              1
CPU MHz:               2500.000
BogoMIPS:              4990.51
Virtualization:        AMD-V
L1d cache:             16K
L1i cache:             64K
L2 cache:              2048K
NUMA node0 CPU(s):     0-3

0

โหลดระบบและ cpu% เป็นสองวิธีที่แตกต่างกันในการวัดการใช้พลังงาน cpu ของคุณ

  • โหลดระบบ: จำนวนกระบวนการต่อซีพียูอยู่ในสถานะ "พร้อม" - เฉลี่ยในบางช่วงเวลา มากถึง 1 * cpu (ในกรณีของคุณสูงสุด 4) ระบบถือเป็นเกือบจะไม่ได้ใช้งาน (เปรียบเทียบกับซุปเปอร์มาร์เก็ตที่ลูกค้าเฉลี่ยเพียงคนเดียวรอการชำระเงินทุกครั้ง) คุณอาจไม่เห็นความล่าช้าสูงสุด 2 * cpu (ในกรณีของคุณ 8)
  • cpu%: เวลาที่ cpus ทำงานจริงโดยใช้กระบวนการ มันเหมือนกับมุมมองของพนักงานเก็บเงินหรือมากกว่าหัวหน้างานของพวกเขาพวกเขาต้องการให้พวกเขายุ่งตลอดเวลา

มาตรการทั้งสองเกี่ยวข้องกัน แต่ไม่เหมือนกัน


ฉันไม่ได้ถามสิ่งที่แตกต่าง ฉันอ่านแล้วในบทความ อย่างไรก็ตามคำตอบของคุณขัดแย้งกับคำตอบของ Gilles
Madhurendra Sachan

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