สคริปต์เพื่อปิดใช้งานไฮเปอร์เธรดในเครื่องเริ่มต้น ...
หากต้องการปิดใช้งานไฮเปอร์เธรดฉันใส่สคริปต์ไว้ในเครื่อง /etc/rc.local มันไม่ได้สะอาดสะอ้าน แต่ติดตั้งง่ายไม่ขึ้นอยู่กับสถาปัตยกรรม cpu และควรทำงานกับการแจกจ่าย linux ที่ทันสมัย
nano /etc/rc.local
# place this near the end before the "exit 0"
for CPU in /sys/devices/system/cpu/cpu[0-9]*; do
CPUID=$(basename $CPU)
echo "CPU: $CPUID";
if test -e $CPU/online; then
echo "1" > $CPU/online;
fi;
COREID="$(cat $CPU/topology/core_id)";
eval "COREENABLE=\"\${core${COREID}enable}\"";
if ${COREENABLE:-true}; then
echo "${CPU} core=${CORE} -> enable"
eval "core${COREID}enable='false'";
else
echo "$CPU core=${CORE} -> disable";
echo "0" > "$CPU/online";
fi;
done;
มันทำงานอย่างไร
ข้อมูลเคอร์เนล Linux และการควบคุมสามารถเข้าถึงได้เป็นไฟล์ในไดเรกทอรี / sys ในการกระจายลินุกซ์ที่ทันสมัย ตัวอย่างเช่น:
/ sys / devices / system / cpu / cpu3
มีข้อมูลเคอร์เนลและการควบคุมสำหรับ cpu โลจิคัล 3
cat / sys / อุปกรณ์ / ระบบ / cpu / cpu3 / topology / core_id
จะแสดงหมายเลขหลักของ cpu โลจิคัลนี้เป็นของ
echo "0"> / sys / อุปกรณ์ / system / cpu / cpu3 / online
อนุญาตให้ปิดการใช้งาน cpu โลจิคัล 3
ทำไมถึงใช้งานได้
ฉันไม่รู้ว่าทำไม ... แต่ระบบตอบสนองมากขึ้นเมื่อปิดไฮเปอร์เธรด (บนโน้ตบุ๊ก i5 ของฉันและเซิร์ฟเวอร์ Xeon ขนาดใหญ่ที่มี 60+ คอร์) ฉันเดาว่าเกี่ยวข้องกับแคชต่อซีพียูการจัดสรรหน่วยความจำต่อซีพียูการจัดสรรตัวกำหนดตารางเวลา cpu และลำดับความสำคัญของการประมวลผลซ้ำซ้อน ฉันคิดว่าประโยชน์ของการทำไฮเปอร์เธรดนั้นมีน้ำหนักน้อยกว่าเนื่องจากความซับซ้อนในการสร้างซีพียูตัวกำหนดเวลาที่รู้วิธีใช้งาน
สำหรับฉันปัญหาของการทำไฮเปอร์เธรดคือ: ถ้าฉันเริ่มหัวข้อ cpu-เร่งรัดมากเท่าที่ฉันมีลอจิคัลคอร์ฉันจะมีการสลับบริบทอย่างรวดเร็วสำหรับงานที่เน้นหนักของ cpu แต่งานที่มีราคาแพงสำหรับงานพื้นหลังนับตั้งแต่ ซีพียูทำงานหนัก ในทางกลับกันถ้าฉันเริ่มหัวข้อ cpu-เร่งรัดมากเท่าที่ฉันมีแกนทางกายภาพฉันจะไม่มีบริบทสลับไปยังงานเหล่านั้นและสลับบริบทอย่างรวดเร็วสำหรับงานพื้นหลัง ดูเหมือนจะดี แต่งานเบื้องหลังจะพบกับตัวประมวลผลเชิงตรรกะฟรีและจะทำงานเกือบจะไม่ถูกประมวลผล มันเหมือนว่าพวกเขาแสดงตามเวลาจริง (ดี -20)
ในสถานการณ์แรกการทำไฮเปอร์เธรดคือ uselles งานเบื้องหลังจะใช้การสลับบริบทที่มีราคาแพงเพราะฉันทำไฮเปอร์เธรดสูงสุดด้วยการประมวลผลปกติ อย่างที่สองไม่สามารถยอมรับได้เพราะมากถึง 50% ของพลังซีพียูของฉันได้รับการจัดลำดับความสำคัญให้กับงานเบื้องหลัง
งาน "cpu-เร่งรัด" ที่ฉันกำลังพูดถึงคือการขุดดาต้าและปัญญาประดิษฐ์ (เซิร์ฟเวอร์ของฉัน) การปั่นการแสดงผลในคอมพิวเตอร์ราคาถูกและกลุ่ม (เพื่อร่างบ้านในอนาคตของฉัน)
นอกจากนี้ยังเป็นการคาดเดา
ฉันมีความประทับใจที่ดีกว่า แต่อาจไม่
sysbench --num-threads=1 --test=cpu run
กับ NUM เธรดที่แตกต่างกันและการเปิดและปิด HT บอกว่าการปิดการใช้งาน HT จะลดกลิ่นหอมเมื่อมีหลายเธรดและแม้ว่าจะมีเพียงเธรดเดียวก็ไม่มีประโยชน์จากการปิด HT ดังนั้นฉันขอแนะนำให้ทิ้งไว้อย่างที่มันเป็น: มันเหมาะสมที่สุด