ความต้องการพลังงานมัลติคอร์ของ CPU และการทำโหลดบาลานซ์


10

ฉันสนใจในการปรับสมดุลโหลดสำหรับระบบ CPU แบบมัลติคอร์ หากคุณใช้ 1 CPU ที่มีหลายคอร์จะมีประสิทธิภาพในการใช้พลังงานมากขึ้นในการรักษาสมดุลของโหลดในหลายคอร์หรือลองเติมแกนเดี่ยวจนเต็มและปล่อยให้แกนอื่นไม่ทำงาน
สมมติฐานพื้นฐานคือปริมาณงานที่ทำในทั้งสองกรณีเท่ากันในเวลาเดียวกัน ดังนั้นจะมีประสิทธิภาพมากกว่าหรือไม่หากใช้ 4 คอร์ใน CPU เดียวกันที่มีโหลด 25% ต่อ 1 คอร์หรือ 1 คอร์ที่มีโหลด 100%
ฉันคิดว่า 1 คอร์ที่มีการโหลด 100% ควรมีประสิทธิภาพมากกว่า แต่เนื่องจากฉันอาจผิดฉันกำลังมองหาคำตอบที่จริงจังเกี่ยวกับปัญหานี้ (ไม่ต้องเดา)


+1 คำถามที่น่าสนใจจริงๆ! นี่คือลิงค์บางส่วนที่tomshardware.com/reviews/truth-pc-power-consumption,1707.html tomshardware.com/reviews/intel-cpu-power-consumption,1750.htmlแต่พวกเขาไม่ได้ตอบคำถามของคุณจริงๆ ฉันมี C2D T8100 และวันหนึ่งฉันจะทำการทดสอบเพื่อดูว่าโหลดชนิดใดที่ทำให้เกิดความร้อนมากขึ้น
AndrejaKo

4 คอร์ที่ 25% แน่นอนจะกระจายความร้อนได้ดีกว่า 1 คอร์ที่ 100%
Brian Knoblauch

หากปริมาณงานคงที่ตลอดทั้งกรณีการใช้งานการรวบรวมโหลดทั้งหมดบนแกนเดียวกันจะทำให้ประสิทธิภาพลดลงโดยใช้เวลาและความตื่นเต้นมากขึ้น คุณอาจสูญเสียการประหยัดพลังงานทันทีเมื่องานเดียวกันต้องใช้เวลานานกว่าจะเสร็จสมบูรณ์ (+1 คำถามกระตุ้นความคิด)
nik

@Brian ตกลงว่าการใช้แกนเพิ่มเติมกระจายความร้อนออกไป แต่มันสร้างความร้อนในปริมาณเท่ากันหรือไม่?
Kevin Panko

เอเอ็มดีได้ประกาศซีพียูที่จะสามารถปิดคอร์ที่ไม่ได้ใช้ซึ่งอนุญาตให้รันคอร์แอคทีฟที่ความเร็วสัญญาณนาฬิกาที่สูงขึ้น
b0fh

คำตอบ:


6

IMO คำถามนี้ไม่สามารถตอบได้ในกรณีทั่วไป

บนโต๊ะของฉันฉันมีหนึ่งในโปรเซสเซอร์ Core i7-980x 6-core TurboBoost ที่เปิดใช้งานซึ่งได้รับการออกแบบใหม่ หากคุณโหลดคอร์หนึ่งแกนบนเครื่องนี้มันจะเพิ่มความเร็วสัญญาณนาฬิกาของคอร์นั้นซึ่งจะเป็นการเพิ่มการใช้พลังงานของ CPU ดังนั้นมันจะสร้างความแตกต่างอย่างมาก ซีพียูนี้รวมถึงซีพียูอื่น ๆ ที่ทันสมัยกว่านั้นบางส่วนสามารถลดแกนพลังงานที่ไม่ได้ใช้งานบางส่วนซึ่งเป็นการเพิ่มการประหยัดพลังงาน นั่นไม่จริงสำหรับซีพียูรุ่นเก่า

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

อย่างไรก็ตามปัญหามีตัวแปรมากเกินกว่าที่จะตอบได้ หนึ่งสามารถไปและเกี่ยวกับประเภทที่แตกต่างกันของการโหลดและทุกคนที่พยายามมาตรฐานเพื่อรับคำตอบจะสิ้นสุด (อาจตั้งใจ) ทำการเปรียบเทียบแอปเปิ้ลเพื่อส้มที่ไม่ได้ใช้ในกรณีการใช้งานอื่น ๆ

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


ฮ่า ๆ คุณบอกได้ยังไง? วิศวกรรม Hokie ที่รัก!
David Markle

ใช้เวลาหนึ่งรู้ ไป Mizzou
hotei

โอ้เดี๋ยวก่อน ฉันผิดไป. มีชายคนหนึ่งที่สามารถใช้มาตรฐานและให้คำตอบในกรณีทั่วไปคือ: gizmodo.com/5598885//
David Markle

4

ฉันทำการทดสอบบางอย่างในวันนี้โดยใช้คอมพิวเตอร์เครื่องนี้ (Intel C2D T8100) และใช้แอปพลิเคชั่น SETI @ Home ที่ได้รับการปรับปรุงจาก lunatics installer 0.36 ฉันใช้M $ Joulmeterเพื่อคำนวณการใช้พลังงาน ฉันวัดต้นไม้การบริโภคครั้ง ครั้งแรกฉันให้ BOINC ใช้แกนประมวลผล 100% และเวลา CPU 100% และปล่อยให้ทำงานเป็นเวลาหนึ่งชั่วโมง หน่วยประมวลผลใช้เวลา 20W และกราฟเวลาของ CPU จากตัวจัดการงานแบนที่ 100% การใช้พลังงานเฉลี่ยของคอมพิวเตอร์ของฉันคือ 45.05W และเพิ่มขึ้นและในขณะที่ฉันหยุดการทดสอบการใช้พลังงานคือ 46.18W

ในการทดสอบครั้งที่สองฉันตั้ง BOINC ให้ใช้ 50% ของคอร์ที่มีอยู่และ 100% ของเวลา CPU และปล่อยให้มันรันเป็นเวลาหนึ่งชั่วโมง การใช้พลังงาน CPU แตกต่างกันระหว่าง 12W ถึง 13W การบริโภคเฉลี่ยอยู่ที่ 42.72W และเพิ่มขึ้น ในขณะที่ฉันหยุดการทดสอบการบริโภคอยู่ที่ 44W เพื่อที่จะทำให้กราฟเวลาของ CPU สำหรับคอร์เป้าหมายเป็นแบบแบนฉันตั้งค่าความสัมพันธ์ของโปรแกรมเป็นหนึ่งคอร์และลำดับความสำคัญเป็นสูง กราฟสำหรับคอร์อื่นแสดงให้เห็นว่าค่อนข้างสูงกว่าการใช้เวลา CPU ปกติ

สำหรับการทดสอบครั้งที่สามฉันตั้งค่า BOINC ให้ใช้แกนประมวลผลที่มีอยู่ 100% และเวลา CPU 50% การใช้พลังงานแตกต่างกันไปในการกระโดดครั้งใหญ่ระหว่าง 5W ถึง 17W การใช้พลังงานเฉลี่ยหลังจากการทดสอบหนึ่งชั่วโมงคือ 39.96W และลดลง กราฟเวลา CPU looled /\/\/\/\/\/\/\/\/\/\/\/\/\เช่น ได้รับการคาดหวังอย่างมากเนื่องจากขนาดของหน่วยเวลาที่ใช้โดย BOINC

ดังนั้นฉันเชื่อว่ามันมีประสิทธิภาพมากกว่าในการใช้สองคอร์ที่รันที่โหลดครึ่งมากกว่าที่จะรันหนึ่งคอร์ที่โหลดเต็ม

และใช่ฉันรู้ว่าสำหรับการศึกษาที่เหมาะสมมีความต้องการตัวอย่างจำนวนมาก แต่ในเวลานั้นฉันไม่มีคอมพิวเตอร์หรือเวลาเพียงพอที่จะทำสถิติที่เหมาะสม


1
ตอนนี้มันจะเป็นการดีที่จะหาเทียบเท่ากับ Joulemeter สำหรับระบบปฏิบัติการอื่น ๆ จากนั้นฉันสามารถทดสอบอุปกรณ์บางอย่างที่ฉันได้รับ ...
private_meta

นี่คือบางสิ่งสำหรับแล็ปท็อป GNU / Linux thinkwiki.org/wiki/How_to_measure_power_consumption
AndrejaKo

นี่คือลิงค์ที่น่าสนใจอื่น: www.lesswatts.org/ และอีกหนึ่งsusegeek.com/general/ …และอีกหนึ่งpublib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/ …เห็นได้ชัดว่าผู้คนไม่เชื่อการอ่าน ACPI และเชื่อมั่น จำเป็นต้องใช้มาตรวัดภายนอกดังนั้นลิงก์จำนวนน้อยจึงกล่าวถึงวิธีการใช้ตัววัดภายนอก ฉันไม่ได้ 1,337 เพียงพอกับระบบปฏิบัติการอื่นที่จะสามารถให้ความช่วยเหลือใด ๆ
AndrejaKo

ขอบคุณ ปัญหากับตัววัดภายนอกคือพวกมันทำการวัดการใช้พลังงานทั้งหมดไม่เพียง แต่ประมวลผลกำลัง ในขณะที่การใช้พลังงานทั้งหมดก็มีความสำคัญเช่นกัน (เช่นอัลกอริธึมใช้ฮาร์ดไดรฟ์อย่างกว้างขวาง) หากการอ่าน ACPI ไม่น่าเชื่อถือคุณต้องใช้การอ่านภายนอกสำหรับคอมพิวเตอร์ Windows และต้องสามารถเปรียบเทียบได้: - /
private_meta

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

0

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


1
แต่ถ้าคุณมีรหัสที่ไม่สามารถเทียบกันได้คุณจะทำงานในแกนมากกว่าหนึ่งแกนได้อย่างไร
AndrejaKo

ในความคิดของคุณ 4 แกนใช้พลังงานถึง 25% ร่วมกันสร้างความร้อนน้อยลง (และก่อให้เกิดการสูญเสียพลังงานมากกว่า) 1 แกนผลักไปที่ 100%
private_meta

@AndrejaKo หากมีหลายโพรเซสหรือหลายเธรดมันง่ายที่จะกระจายไปทั่วทั้งคอร์
emish

0

คำถามของคุณตามที่ถามมีสิ่งแปลกปลอมมากเกินไป คุณกำลังถามเกี่ยวกับประสิทธิภาพของเวลาหรือประสิทธิภาพของพลังงานหรือไม่? ไม่ใช่รหัสขนานหรือรหัสขนาน? งานเดียวหรือหลายเดสก์ทอปแบบมัลติทาสกิ้ง? หากคุณมีค่าพลังงานมากกว่า $ 1,000 / เดือนสำหรับคอมพิวเตอร์ของคุณอาจเป็นเรื่องที่น่ากังวลหรือสองอย่าง มิฉะนั้นคุณไม่สามารถประหยัดได้มากพอที่จะทำให้ปัญหาคุ้มค่าในการแก้ไข สนุกที่จะพูดคุยเกี่ยวกับ - แต่ถ้าคุณมีปัญหาร้ายแรงคำตอบที่ดีที่สุดคือลองทำสิ่งที่แตกต่างและดูว่าอะไรดี

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