Linux: การปิดระบบคอร์ของ CPU แทนสถานะสลีป


10

ใน Linux คุณสามารถปิด CPU cores (หรือ CPU จริง) ด้วย echo 0> / sys / อุปกรณ์ / system / cpu / cpu1 / online สมมติว่าฮาร์ดแวร์ปิด CPU อย่างสมบูรณ์และตัดการใช้พลังงานมันจะไม่เป็นการดีกว่าถ้าปิดการใช้งาน แกนประมวลผลทั้งหมดแทนที่จะใช้สถานะสลีปต่างๆของโปรเซสเซอร์หรือไม่

เพื่อแสดงให้เห็นถึงหลักการฉันกำลังคิดอะไรบางอย่างตามบรรทัดเหล่านี้ (pseudocode) สำหรับระบบที่มี CPU สี่ตัว:

if(loadavg > 3.00) echo 1 > /sys/devices/system/cpu/cpu3/online
if(loadavg < 3.00) echo 0 > /sys/devices/system/cpu/cpu3/online

if(loadavg > 2.00) echo 1 > /sys/devices/system/cpu/cpu2/online
if(loadavg < 2.00) echo 0 > /sys/devices/system/cpu/cpu2/online

if(loadavg > 1.00) echo 1 > /sys/devices/system/cpu/cpu1/online
if(loadavg < 1.00) echo 0 > /sys/devices/system/cpu/cpu1/online

คำตอบ:


6

การตั้งค่าสถานะออนไลน์ของ CPU core เพียงบอกตัวกำหนดตารางกระบวนการไม่ใช้แกนนั้นสำหรับกระบวนการใด ๆ ในระดับฮาร์ดแวร์แกนกลางเพียงแค่นั่งว่าง (ทำNOP) แต่ยังคงขับเคลื่อน ขณะนี้จะประหยัดพลังงานจะไม่ประหยัดพลังงานได้มากเท่ากับการทำให้คอมพิวเตอร์เข้าสู่โหมดสลีป ทำไม?

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

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


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

ใช้งานได้เนื่องจากต่อไปนี้เป็นสมการทั่วไปสำหรับการใช้พลังงานของวงจร CMOS:

P = CV 2 f โดยที่ C = ความจุ (ถือว่าคงที่), V = แรงดันไฟฟ้าและ f = ความถี่

ดังนั้นการหารความถี่ด้วย 2 จะทำให้สิ้นเปลืองพลังงานครึ่งหนึ่ง การหารแรงดันไฟฟ้าด้วย 2 จะลดการใช้พลังงานเหลือ 1/4 ของเดิม


อย่างน้อยในโปรเซสเซอร์ที่รองรับ x86 / amd64 ฉันคิดว่าถ้าเป็นไปได้คำสั่ง HLT จะง่ายกว่าใน CPU มากกว่า NOP ฉันหมายถึงสถานะสลีปต่างๆ (หรือสถานะโปรเซสเซอร์ที่ถูกต้อง C0-C3 (ACPI)) นอกจากนี้ฉันยังคิดเกี่ยวกับระบบที่ทำงานอยู่ตลอดเวลาซึ่งทั้งระบบไม่สามารถหลับได้ ในกรณีนี้ฉันอยากรู้ว่าฮาร์ดแวร์จะตัดกระแสไฟฟ้าให้กับซีพียูหรือไม่และหากมีการใช้งานจริงในการกำหนดค่าบางอย่าง ขอบคุณสำหรับคำตอบของคุณ แต่ฉันจะปล่อยให้คำถามยังคงเปิดอยู่อีกสักหน่อย
Waxhead

@Waxhead เมื่อคุณตัดการใช้พลังงานให้กับ CPU คอมพิวเตอร์ทั้งหมดจะปิด "ตรรกะ" (และสามารถเปิดได้อีกครั้งผ่านการขัดจังหวะภายนอก) แม้ว่าฮาร์ดแวร์อื่น ๆ จะยังคงทำงานอยู่ก็ตาม นอกจากนี้คุณอาจถูกต้องเกี่ยวกับการใช้HLTแทนNOPแต่สิ่งนั้นเชื่อมโยงกับการใช้งานอินเตอร์รัปต์ (ซึ่งเป็นวิธีการนำโปรเซสเซอร์ออกจากสถานะหยุดทำงาน) แทนที่จะใช้พลังงานตัดตัวประมวลผลส่วนใหญ่จะเปลี่ยนความเร็วสัญญาณนาฬิกาและแรงดันไฟฟ้าแบบไดนามิก (เพิ่มสมการให้กับคำตอบของฉัน)
พัฒนา

ฉันทำวิจัยเพิ่มเติมเกี่ยวกับเรื่องนี้ ปรากฎว่า Linux รองรับ hotplug ของ CPU อย่างแท้จริง ในกรณีนั้นถ้า BIOS / มาเธอร์บอร์ดรองรับคุณสามารถปิดซีพียูและแทนที่ได้เช่นฉีกซีพียูออกจากซ็อกเก็ตในขณะที่ระบบกำลังทำงานและแทนที่ Ref: cyberciti.biz/faq/debian-rhel-centos-redhat-suse-hotplug-cpuถ้าฉันไม่เข้าใจผิดนี่จะเป็นการตัดไฟให้ซีพียูถ้า BIOS / เมนบอร์ดสนับสนุน
Waxhead

@Breakthrough ขอบคุณสำหรับการโพสต์ที่ดีของคุณ คุณสามารถให้เอกสารอ้างอิงบางส่วนเกี่ยวกับรายละเอียดของวิธีที่เราสามารถวาง cpu ในสถานะพลังงานต่ำ (โดยไม่มีระบบการบูตเครื่องใหม่) และสามารถรับมันกลับมาได้ตามต้องการ
iDebD_gh

@Breakthrough "แกนเป็นเพียงนั่งว่าง (ทำ NOPs)," เมื่อเราทำแบบออฟไลน์บน cpu core เฉพาะมันจะหายไปจาก "/ proc / ขัดจังหวะ" คุณจะบอกได้อย่างไรว่า Core กำลังประมวลผลการทำงานของ NOP
iDebD_gh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.