CPU ที่ใช้งานหลายเธรดช่วยควบคุมความเร็วของซีพียูก่อนที่อุณหภูมิจะ จำกัด


21

ฉันได้เขียนงาน threaded ที่ใช้ CPU มากซึ่งทำงานได้อย่างที่คาดไว้ใน MacBook Core Quad Core 2012 ของฉัน ฉันทำให้หลวมด้วย 20 กระทู้และอุณหภูมิสูงถึงประมาณ 100 ° C ตามที่วัดด้วย Intel Power Gadget ด้วยการควบคุมปริมาณที่น้อยที่สุด

ใช้โปรแกรมและไฟล์ข้อมูลเดียวกันกับที่บ้านในปี 2559 13 "MacBook Pro ของฉันด้วยเครื่องดูอัลคอร์และเริ่มทำงานฉันคาดหวังว่ามันจะยังคงรักษา 3.3-3.4 GHz จนกว่าอุณหภูมิจะอยู่ใกล้เครื่องหมาย 100 ° C คำสั่งด้านบนแสดงงานที่ 350% (2 คอร์แต่ละเธรดคู่) แต่ความถี่ของ CPU จะถูกตัดเป็น 1.6-1-8 GHz ที่อุณหภูมิเท่านั้นที่ 60 ° C หรือมากกว่านั้นเมื่อแฟน ๆ เงียบลงถ้าเริ่มแยก 4 งาน CPU แบบเธรดเดียวเครื่องทำงานตามที่คาดไว้โดยรักษาความเร็ว 3.3-3.4 GHz จนกว่าจะถึง 100 ° C และแฟน ๆ จะได้ cranking คำถามคือทำไม CPU ของฉันถูก throttled?

ทั้งสองเครื่องเป็นรุ่นล่าสุดและใช้งาน gcc รุ่นเดียวกัน ถ้าฉันใช้เลขฐานสองจากเครื่องที่ทำงานและวางไว้บน Mac 2016 มันมีปัญหาเดียวกัน

ถ้าฉันรัน CPU เดี่ยว ๆ 3 หรือ 4 เธรดดังนั้นเครื่องจะเต็มไปด้วยความเร็วแล้วเริ่มโปรแกรมเธรดมันจะลดความถี่ลงเช่นกัน

เครื่องทั้งสองมี RAM ขนาด 16 GB

แก้ไข

หลังจากเล่นด้วยรหัสฉันสงสัยว่ามันจะได้รับการควบคุมปริมาณเมื่องานสร้างหัวข้อมากเกินไป ในโปรแกรมนี้ฉันใช้แต่ละระเบียนที่ฉันอ่านและสร้างเธรด ฉันปล่อยให้ 20 เธรดเท่านั้นในแต่ละครั้งดังนั้นในเวลาไม่นานจะมีมากกว่า 21 เธรด แต่มีเร็กคอร์ด 14,400,000 เร็กคอร์ดที่จะถูกประมวลผลใน 30 นาทีหรือมากกว่านั้นแต่ละเร็กคอร์ดเหล่านั้นจะถูกประมวลผลโดยเธรดแยกต่างหาก

ฉันสร้างโปรแกรม pthread เล็ก ๆ น้อย ๆ ที่ดูดเวลา CPU และตั้งค่า 10 โปรแกรมให้ทำงาน แล็ปท็อปปัญหานั้นใช้งานได้และให้ความร้อนสูงถึง 95C โดยไม่มีปัญหา

ฉันเดาว่าฉันจะเขียนโค้ดของฉันใหม่เพื่อใช้เธรดเดียวกันซ้ำแทนที่จะทำลายมันและเริ่มต้นใหม่อีกครั้ง

อัปเดต 5/13/17

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


1
ฉันรักคำถามนี้! วิธีการเกี่ยวกับการใช้งานมัลติเธรดที่แตกต่างกันเฉพาะ ฉันขอแนะนำให้ใช้งานบางอย่างเช่นงาน ffmpeg (ในวิดีโอ 1080p หรือ 4K เพื่อให้แน่ใจว่ามันใช้ทรัพยากร CPU ที่มีอยู่ทั้งหมด) และดูว่ามันกระตุกหรือไม่ สิ่งนี้อาจทำให้ปัญหาแคบลงเป็น: โปรแกรมของคุณในเครื่องนั้นหรือโปรแกรมแบบมัลติเธรดทั้งหมดในเครื่องนั้น
NoahL

1
ถ้าฉันเรียกใช้เกณฑ์มาตรฐาน Cinebench R15 มันใช้งานเธรดและทำงานตามที่คาดไว้อุณหภูมิจะสูงขึ้นประมาณ 100 องศาเซลเซียสและพัดลมจะเกิดขึ้น Intel Power Gadget แสดงความถี่ของ CPU ที่ยังคงอยู่ใกล้กับ 3.3Ghz ดังนั้นจึงไม่ดูเหมือนปัญหาฮาร์ดแวร์ รหัสทั้งหมดเป็นเพียงรหัส C ที่ไม่มีอะไรแปลกใหม่ที่จะใช้ p_threads และการล็อค Mutex ที่น้อยที่สุด โปรแกรมส่วนใหญ่เป็นการประมวลผลลำดับดีเอ็นเอด้วยการดึงเธรดหนึ่งอันในรูปแบบของข้อมูล 16 กิ๊กและส่งไปยังเธรดแต่ละเธรดสำหรับการบีบอัดจำนวนมาก
markatlnk

1
ดูเหมือนว่าโปรแกรมอื่น ๆ จะสามารถเข้าถึงเป้าหมายที่คุณต้องการได้ใช่หรือไม่ หากปัญหาเกิดจากรหัสพิเศษของคุณเพียงอย่างเดียวเราอาจต้องการข้อมูลเพิ่มเติมเกี่ยวกับรหัสนั้น ถึงแม้ว่าข้อมูลของคุณจะถูกประมวลผลที่ไหน? ภายนอก? kernel_task รายงานเท่าไหร่ เซ็นเซอร์อุณหภูมิอื่น ๆ
LаngLаngС

1
CPU ของคุณมีโลจิคัล 8 คอร์ไม่ใช่ 4 ดังนั้น 4 เธรดจะแสดงเป็นการใช้งาน CPU ทั้งหมด 50% ฉันสงสัยว่าสิ่งนั้นมีผลกับการประเมินโหลดระบบของคุณหรือไม่
sudo

ฉันไม่ทราบว่าคุณต้องการแก้ไขปัญหาหรือไม่ แต่คุณสามารถลองแก้ไขข้อบกพร่องในระดับเคอร์เนลด้วยเคอร์เนลดีบักแทน คุณสามารถรับมันได้หากคุณคลิกดาวน์โหลดเพิ่มเติมในเว็บไซต์ dev dev
user3052786

คำตอบ:


1

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

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

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


0

ส่วนขยายเคอร์เนล /System/Library/Extensions/AppleACPIPlatform.kext ควบคุมอุณหภูมิและการป้องกัน CPU จำนวนมาก เห็นได้ชัดว่ารวบรวมไว้แล้วในระบบของคุณ แต่อาจมีอยู่ในhttps://opensource.apple.com (ฉันหามันไม่พบ แต่ฉันมองอย่างรวดเร็ว) ไม่แปลกใจเลยถ้า Apple มีการตั้งค่าความสามารถของ CPU ค่อนข้างอนุรักษ์


3
AFAIK kexts ของ Apple ไม่ใช่โอเพ่นซอร์ส (แปลก?) แหล่งข้อมูลที่ดีที่สุดสำหรับข้อมูลเกี่ยวกับเรื่องนี้คือชุมชน Hackintoshing เนื่องจากจำเป็นต้องฉีดไดรเวอร์
JMY1000

ไม่แปลกเลย! คนจรจัดให้คำแนะนำที่ดีที่สุดเพราะพวกเขารู้มากกว่าที่ควรจะเป็นมือแรก สำหรับการตั้งค่า CPU ที่อนุรักษ์ไว้โปรดจำไว้ว่า MBP นั้นมีฮีทซิงค์ที่ยอดเยี่ยมสำหรับการถ่ายภาพต่อเนื่องที่ยอดเยี่ยม แต่ไม่เหมาะสำหรับรอบการทำงานต่อเนื่อง อาจเป็นไปได้ว่าปัญหานี้เกิดขึ้นกับ Apple ที่ต้องการป้องกันไม่ให้ขาของคุณสุก ฉันได้ยินเกี่ยวกับการฟ้องร้องสองสามครั้งที่มีใน 2012MBP
user1901982

0

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


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