คำตอบก่อนหน้านี้น่าสนใจมาก
หลังจาก googling ฉันพบวิชาที่เกี่ยวข้อง:
ในลิงค์สุดท้ายสคริปต์ไพ ธ อนไม่ทำงานเมื่อโฮสต์ของคุณมีรหัสทางกายภาพมากมาย ฉันพยายามแก้ไขโดยมีเงื่อนไขแตกต่างกันในตอนท้าย:
การเปลี่ยนแปลง:
if p > 0:
ถึง
if p % 2 == 1:
แต่มันไม่ทำงานตามที่คาดไว้ตามข้อความก่อนหน้า โดยวิธีการที่คุณสามารถทำสิ่งที่ครอบคลุมมากกว่า:
grep . /sys/devices/system/cpu/cpu{,1}?/topology/thread_siblings | tr : \\\t | sed -r 's,^,\s\s\s\s,'
ด้วย:
for file in /sys/devices/system/cpu/cpu[0-9]*/topology/thread_siblings_list; do echo -n "$file "; cat $file; done |sort -k2 -n
[ ... ]
สิ่งที่น่าสนใจในโฮสต์หลายคอร์ที่มีการเปิดใช้งานไฮเปอร์เธรดคือการกระจายโลจิคัลคอร์บนฮาร์ดแวร์
ตัวอย่างเช่นบนหนึ่งในคอมพิวเตอร์ของฉัน (48 ตรรกะหลัก, 2 ตัวประมวลผลทางกายภาพ, 24 (12 * 2) 'แกนกลางจริง' (เช่นนั้นยังมี 24 แกนเสมือนจริง):
for file in /sys/devices/system/cpu/cpu[0-9]*/topology/thread_siblings_list; do echo -n "$file "; cat $file; done |sort -k2 -n
/sys/devices/system/cpu/cpu0/topology/thread_siblings_list 0,24
/sys/devices/system/cpu/cpu24/topology/thread_siblings_list 0,24
/sys/devices/system/cpu/cpu1/topology/thread_siblings_list 1,25
/sys/devices/system/cpu/cpu25/topology/thread_siblings_list 1,25
/sys/devices/system/cpu/cpu26/topology/thread_siblings_list 2,26
/sys/devices/system/cpu/cpu2/topology/thread_siblings_list 2,26
/sys/devices/system/cpu/cpu27/topology/thread_siblings_list 3,27
/sys/devices/system/cpu/cpu3/topology/thread_siblings_list 3,27
/sys/devices/system/cpu/cpu28/topology/thread_siblings_list 4,28
/sys/devices/system/cpu/cpu4/topology/thread_siblings_list 4,28
/sys/devices/system/cpu/cpu29/topology/thread_siblings_list 5,29
/sys/devices/system/cpu/cpu5/topology/thread_siblings_list 5,29
/sys/devices/system/cpu/cpu30/topology/thread_siblings_list 6,30
/sys/devices/system/cpu/cpu6/topology/thread_siblings_list 6,30
/sys/devices/system/cpu/cpu31/topology/thread_siblings_list 7,31
/sys/devices/system/cpu/cpu7/topology/thread_siblings_list 7,31
/sys/devices/system/cpu/cpu32/topology/thread_siblings_list 8,32
/sys/devices/system/cpu/cpu8/topology/thread_siblings_list 8,32
/sys/devices/system/cpu/cpu33/topology/thread_siblings_list 9,33
/sys/devices/system/cpu/cpu9/topology/thread_siblings_list 9,33
/sys/devices/system/cpu/cpu10/topology/thread_siblings_list 10,34
/sys/devices/system/cpu/cpu34/topology/thread_siblings_list 10,34
/sys/devices/system/cpu/cpu11/topology/thread_siblings_list 11,35
/sys/devices/system/cpu/cpu35/topology/thread_siblings_list 11,35
/sys/devices/system/cpu/cpu12/topology/thread_siblings_list 12,36
/sys/devices/system/cpu/cpu36/topology/thread_siblings_list 12,36
/sys/devices/system/cpu/cpu13/topology/thread_siblings_list 13,37
/sys/devices/system/cpu/cpu37/topology/thread_siblings_list 13,37
/sys/devices/system/cpu/cpu14/topology/thread_siblings_list 14,38
/sys/devices/system/cpu/cpu38/topology/thread_siblings_list 14,38
/sys/devices/system/cpu/cpu15/topology/thread_siblings_list 15,39
/sys/devices/system/cpu/cpu39/topology/thread_siblings_list 15,39
/sys/devices/system/cpu/cpu16/topology/thread_siblings_list 16,40
/sys/devices/system/cpu/cpu40/topology/thread_siblings_list 16,40
/sys/devices/system/cpu/cpu17/topology/thread_siblings_list 17,41
/sys/devices/system/cpu/cpu41/topology/thread_siblings_list 17,41
/sys/devices/system/cpu/cpu18/topology/thread_siblings_list 18,42
/sys/devices/system/cpu/cpu42/topology/thread_siblings_list 18,42
/sys/devices/system/cpu/cpu19/topology/thread_siblings_list 19,43
/sys/devices/system/cpu/cpu43/topology/thread_siblings_list 19,43
/sys/devices/system/cpu/cpu20/topology/thread_siblings_list 20,44
/sys/devices/system/cpu/cpu44/topology/thread_siblings_list 20,44
/sys/devices/system/cpu/cpu21/topology/thread_siblings_list 21,45
/sys/devices/system/cpu/cpu45/topology/thread_siblings_list 21,45
/sys/devices/system/cpu/cpu22/topology/thread_siblings_list 22,46
/sys/devices/system/cpu/cpu46/topology/thread_siblings_list 22,46
/sys/devices/system/cpu/cpu23/topology/thread_siblings_list 23,47
/sys/devices/system/cpu/cpu47/topology/thread_siblings_list 23,47
มันหมายถึง cpu0 และ cpu24 แบ่งปัน "ที่อยู่" ฮาร์ดแวร์ทางกายภาพเดียวกัน สิ่งเดียวกันสำหรับ cpu1 และ cpu25 ...
ดังนั้นโดยทั่วไปถ้าฉันต้องการปิดการใช้งานไฮเปอร์เธรดจากระบบปฏิบัติการ linux ของฉันฉันควรใส่ '0' ลงใน cpu {24..47} / ออนไลน์ด้วย
for fake_cpu in {24..47}; do echo 0 > /sys/devices/system/cpu/cpu$fake_cpu/online;done
คุณจะสังเกตเห็นว่าความน่าสนใจของระบบของฉันคือการระบุจำนวนแกน
ht
ตั้งค่าสถานะบ่งชี้ว่า CPU สนับสนุนหลายเธรด (HTT) เท่านั้น - ไม่ใช่ว่าเปิดใช้งานหรือไม่ ถึงอย่างนั้นมันก็ไม่สามารถไว้ใจได้เสมอไปเช่นมันบ่งบอกอย่างไม่ถูกต้องว่า i5 i5-6500 รองรับ HTT: ark.intel.com/content/www/us/en/ark/products/88184/ …