ทำไมรหัสของคุณไม่ควรใช้ CPU 100% [ปิด]


42

ฉันกำลังพูดโดยเฉพาะเกี่ยวกับโปรแกรม C # .NET 4 ที่ทำงานบน Windows XP หรือสูงกว่า แต่คำตอบทั่วไปก็ยอมรับได้เช่นกัน

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

เพื่อนร่วมงานวันนี้แนะนำว่าฉันไม่ควรตั้งเป้าการใช้งาน CPU 100% ในกระบวนการโหลดข้อมูลเพราะ "ซีพียูสมัยใหม่ราคาถูกและจะลดลงอย่างรวดเร็วที่ 100% ซีพียู"

มันเป็นเรื่องจริงเหรอ? และถ้าเป็นเช่นนั้นทำไม ก่อนหน้านี้ฉันรู้สึกว่าการใช้ CPU 100% นั้นดีกว่าสำหรับการใช้งานที่หนักหน่วงหรือยาวนานและฉันก็ไม่สามารถหาแหล่งที่มาที่น่านับถือในเรื่องนี้ได้


6
สมมติว่าแอปพลิเคชันของคุณเป็นสิ่งเดียวที่ทำงานบนกล่องจากนั้นพูดอย่างเคร่งครัดการใช้งาน CPU 100% ไม่ได้เลวร้ายนัก แต่มันอาจบ่งบอกว่ามีบางสิ่งที่คุณสามารถทำได้ดีกว่า ฉันไม่ได้ทำงานกับแอพเดสก์ท็อปมากนัก แต่สำหรับเว็บแอปฉันไม่เคยเห็นแอปพลิเคชั่นที่โหลดซีพียูออกมาสูงสุดและรหัสที่ใช้รอบนั้นเหมาะสมที่สุดอย่างแท้จริง มีบางอย่างผิดปกติอยู่เสมอ อย่างไรก็ตามนั่นเป็นเพราะบนเว็บเรามักจะถูกผูกไว้กับ I / O ดังนั้นปัญหา CPU ดูเหมือนจะไม่เหมาะสม ฉันแน่ใจว่าแอปของคุณแตกต่าง
Brandon

7
นอกจากนี้ระบบปฏิบัติการที่แตกต่างกันจัดการกรณีนี้แตกต่างกัน ตัวอย่างเช่นกล่อง Windows ของฉันจะทำงานได้ดีมากหากใช้ CPU 100% ในทางกลับกันฉันได้เห็นเซิร์ฟเวอร์ Linux ทำงานที่ CPU 100% ติดต่อกันหลายวันและมันก็ใช้ได้ (แม้ว่าเราจะเผยแพร่การแก้ไขไม่กี่วันต่อมา)
Brandon

17
คุณต้องการทำงานให้เร็วที่สุดเท่าที่จะทำได้โดยไม่สิ้นเปลืองมากเกินไป ถ้าคุณใช้ CPU 100% ในการคำนวณที่มีประโยชน์มันก็ดี หากคุณใช้ CPU 100% ในลูปที่ไร้ประโยชน์มันจะเสียเปล่า
nwp

10
คุณจ่ายให้ทั้งหมด ใช้ทั้งหมดของมัน
Brian Hooper

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

คำตอบ:


59

หากการระบายความร้อนไม่เพียงพอ CPU อาจร้อนเกินไป แต่พวกเขาทั้งหมด (อย่างน้อยที่สุดก็พีซีซีพียูสมัยใหม่ทุกรุ่น) มีกลไกการป้องกันความร้อนหลายอย่างซึ่งจะเร่งความเร็วสัญญาณนาฬิกาหรือเป็นทางเลือกสุดท้ายที่จะปิดตัวลง

ใช่แล้วบนแล็ปท็อปที่เต็มไปด้วยฝุ่นโหลด CPU 100% อาจทำให้เกิดปัญหาชั่วคราว แต่ไม่มีอะไรจะทำลายหรือ "ลดลง"

สำหรับปัญหาเกี่ยวกับ CPU ภาระของ CPU 100% เป็นวิธีที่ถูกต้อง

สำหรับการตอบสนองของแอปพลิเคชัน (UI) นั่นเป็นแนวคิดแยกจากการใช้งาน CPU เป็นไปได้ทั้งหมดที่จะมีแอปพลิเคชันที่ไม่ตอบสนองซึ่งใช้ CPU 1% หรือแอปพลิเคชันตอบสนองที่ใช้ CPU 100% การตอบสนองของ UI ช่วยลดจำนวนงานที่ต้องทำในเธรด UI และลำดับความสำคัญของเธรด UI และเธรดอื่น ๆ


3
และระบบปฏิบัติการอาจบังคับใช้ชิ้นส่วนที่เย็นลงสำหรับคอร์
ratchet freak

8
ฉันคิดว่าคำตอบที่แท้จริงคือกระบวนการส่วนใหญ่ไม่ได้เชื่อมโยงกับ CPU แต่แทนที่จะเป็น I / O ที่ถูกผูกไว้โดยทั่วไปแล้วทำไมเราถึงอยู่ในโลกที่การใช้งาน CPU 100% ผิดปกติอย่างน้อยสำหรับการคำนวณ "ทั่วไป / ทั่วไป"
windfinder

4
@windfinder ฉันจะบอกว่าสำหรับ "การคำนวณ" การบรรลุ 100% ค่อนข้างเป็นมาตรฐาน แต่ตราบใดที่ "การคำนวณ" ต้องทำอะไรกับคณิตศาสตร์ :) เช่นการประมวลผลการสืบค้น MySQL จะไม่คำนวณให้ฉัน;)
yo '

@tohecz - ในแง่ที่ฉันใช้การคำนวณนั้นหมายถึงเวลาของ CPU เราแค่ทะเลาะกับคำศัพท์ที่นี่สำหรับฉันทุกอย่างที่ CPU ทำคือการคำนวณ (มัน "คำนวณ") ในฐานะนักวิทยาศาสตร์ด้านข้อมูลฉันจะบอกว่าคณิตศาสตร์ส่วนใหญ่ก็เป็น I / O ที่ถูกผูกไว้ (นอกเหนือจากคณิตศาสตร์ที่น่ารำคาญที่สุด) เวลาส่วนใหญ่ของคุณในโลกคณิตศาสตร์กำลังหาวิธีบีบอัด / สตรีมข้อมูลไปยังโปรเซสเซอร์ของคุณอย่างมีประสิทธิภาพเพื่อให้การใช้งาน CPU นั้นสูงที่สุดเท่าที่จะเป็นไปได้
windfinder

4
เรื่องย่อ "แล็ปท็อปที่เต็มไปด้วยฝุ่น": สำหรับการทดลองทำวิทยานิพนธ์ระดับปริญญาโทของฉันฉันได้ใช้แล็ปท็อปอายุ 4 ปีในฐานะนักวิ่ง การใช้งาน CPU 24/7 100% ประมาณ 3 เดือน หลังจากนั้นแล็ปท็อปกล่าวว่าได้ลดบทบาทเซิร์ฟเวอร์ไปอีก 4 ปีก่อนที่จะยอมแพ้ในที่สุด (อาจเป็นเพราะปัญหากราฟิกที่เสียหายไปแล้ว)
mikołak

15

โปรแกรม Windows (winforms / WPF) ควรตอบสนองอยู่ตลอดเวลา ด้วยการใช้กระบวนการที่ใช้ทรัพยากรซีพียูอย่างไร้เดียงสา 100% ทั้งหมดนี้ง่ายเกินไปที่จะทำให้โปรแกรมของคุณหรือแม้แต่ระบบของคุณดูเฉื่อยและหยุดชะงัก

ด้วยการใช้งานที่ดี (ตัวอย่างเช่น: ใช้เธรดแยกต่างหากที่มีลำดับความสำคัญต่ำกว่า) จึงไม่น่าจะมีปัญหา

คุณไม่ควรกังวลว่าซีพียูจะแตกเร็วขึ้น


3
แน่นอนว่าโปรแกรมที่ใช้การคำนวณระยะยาวไม่น่าจะเป็นแอปพลิเคชั่น winforms / wpf แต่แทนที่จะเป็นงานแบ็ตช์ที่ไม่มี UI ทำให้พวกเขาง่ายขึ้นโดยไม่ต้องสนใจว่าจะมีเธรด UI ที่ตอบสนองได้และอนุญาตให้เปิดใช้งานได้ผ่านตัวกำหนดเวลางานและอื่น ๆ หากจำเป็นต้องใช้ UI ฉันจะยังคงแนะนำแอปพลิเคชั่นตัวเรียกใช้งานในกระบวนการที่แยกจากกันอย่างสมบูรณ์ (ซึ่งสามารถตอบสนองได้ค่อนข้างง่ายเพียงพอที่จะหลีกเลี่ยงการปิดกั้นการรอข้อความสถานะจากงานแบทช์)
Jan Hudec

15

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

สถานการณ์ที่ใหญ่ที่สุดที่ไม่ดีที่จะใช้ CPU 100% คือเมื่อใด:

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

  • แอปพลิเคชั่นกำลังวาดการแสดงผลบ่อยเกินไป คำจำกัดความของ "บ่อยเกินไป" จะขึ้นอยู่กับการวัดในบางลักษณะของอุปกรณ์แสดงผลและเนื้อหาที่แสดง หากฮาร์ดแวร์จอแสดงผลสามารถแสดง 120fps อาจมีบางกรณีที่ภาพเคลื่อนไหวสามารถแสดงที่ 120fps โดยไม่เพิ่มการเคลื่อนไหวเบลอ แต่ไม่สามารถแสดงได้อย่างชัดเจนในอัตราเฟรมที่ต่ำกว่าโดยไม่ต้องเพิ่ม หากการเรนเดอร์เฟรมที่มีการเคลื่อนไหวเบลอจะใช้เวลานานกว่าการเรนเดอร์โดยไม่มีการเรนเดอร์ที่ 120fps บนฮาร์ดแวร์ที่รองรับจริง ๆ แล้วไม่ต้องเสียค่าใช้จ่ายมากไปกว่าการเรนเดอร์ [สถานการณ์ง่าย ๆ : วงล้อที่มี 29 ซี่หมุนได้รอบหนึ่งรอบต่อวินาที ที่ 120fps ล้อจะหมุนด้วยความเร็วและทิศทางที่เหมาะสม ที่ 60fps

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


10

"CPU สมัยใหม่นั้นราคาถูกและจะลดลงอย่างรวดเร็วที่ CPU 100%"

ฉันไม่คิดว่าทุกคนจะพูดถึงส่วน "ลดระดับ" ของคำถามนี้ ไอซีจะลดลงเมื่ออุณหภูมิตายเกินขีด จำกัด ของผู้ผลิต โดยปกติแล้วไอซีถูกออกแบบมาให้ทำงานได้ถึง 125C แม้ว่าทุก ๆ 10C จะเพิ่มอายุการใช้งานให้สั้นลง 50%

โปรเซสเซอร์ไม่ได้มีการควบคุมความร้อนเสมอไป จากนั้น AMD Durons บางคนประสบปัญหา (ถูกกล่าวหาว่าเป็นไปได้ที่จะทำลายอย่างใดอย่างหนึ่งหากทำงานโดยไม่ต้องฮีทซิงค์) ตอนนี้โปรเซสเซอร์พีซีทั้งหมดจะมีเซ็นเซอร์อุณหภูมิในตัวที่ป้อนกลับเข้าไปในนาฬิกาของ CPU และจะชะลอนาฬิกาเพื่อป้องกันความเสียหาย ดังนั้นคุณอาจพบว่าโปรแกรมของคุณใช้ CPU ที่มีอยู่ 100% แต่ CPU นั้นทำงานเพียง 75% ของความเร็วที่กำหนดเพราะการระบายความร้อนไม่เพียงพอ

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

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

มีบางกรณีที่อุปกรณ์มีการระบายความร้อนไม่เพียงพอ แต่ผลตอบแทนที่ท่วมท้นสอนให้ผู้ผลิตไม่ทำเช่นนั้น


วิดีโอของ AMD Duron ที่ระเบิดได้น่าจะเป็นของปลอม ข้อความของคุณเกี่ยวกับการควบคุมความร้อนยังคงใช้ได้
แซม

1
อืมฉันได้นำมันออกมาเพราะฉันเห็นว่ามีการอ้างสิทธิ์จำนวนมากบน Google ว่าเป็นของปลอม
pjc50

3
เป็นไปได้ที่จะร้อนเกินไป Intel Core CPU ที่ทันสมัยโดยการเขียนรหัสที่ผลักดันเครื่องยนต์ SSE และจงใจปิดการใช้งานการควบคุมปริมาณ CPU ในระบบปฏิบัติการ ดูเหมือนว่าผู้ผลิต (แม้กระทั่ง Intel เอง) จะออกแบบข้อกำหนดทางความร้อนตามสมมติฐานที่ว่าไม่ปกติ (เป็นไปได้หรือไม่) ในการบังคับให้ CPU คำนวณ 4 flops ที่อ้างสิทธิ์ต่อรอบสัญญาณนาฬิกาตลอดเวลา เมื่อใครบางคนจัดการเพื่อเขียนโค้ดที่เป็นซีพียูของเขาเริ่มร้อนเกินไป ดู: stackoverflow.com/questions/8389648/…
slebetman

^ "ถูกกล่าวหาว่าเป็นไปได้ที่จะทำลายอย่างใดอย่างหนึ่งหากทำงานโดยไม่ต้องฮีทซิงค์" - ฉัน "ได้รับการยืนยันเป็นการส่วนตัว" มันเป็นไปได้ที่จะทำลาย K7 รุ่นก่อนหน้าโดยไม่ต้องฮีทซิงค์ .. ; มันเหมือนกับเกือบ 2 ทศวรรษหลังเหรอ !!
2864740

3

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


ในกรณีนี้มันเป็นกระบวนการที่ซับซ้อนในชุดข้อมูลขนาดใหญ่ (ในหน่วยความจำ) ซึ่งใช้เวลาไม่กี่นาที แต่มันก็เป็นจุดที่ดีสำหรับผู้อ่านคนอื่น ๆ
Nick Udell

3

".. CPU ที่ทันสมัยมีราคาถูกและจะลดลงอย่างรวดเร็วที่ CPU 100%"

คุณไม่ต้องกังวลกับ "การลดลงของ CPU" เลย ซีพียูสมัยใหม่นั้นมีคุณภาพไม่น้อยไปกว่าในสมัยก่อน

มันแพงมาก (และแพงขึ้นเรื่อย ๆ ทุกสองสามปี) เพื่อสร้างซีพียูบางพันล้านเพื่อสร้าง fab ใหม่ไม่ใช่เรื่องแปลก (ดูลิงค์)

http://en.wikipedia.org/wiki/Semiconductor_fabrication_plant

ต้นทุนการผลิตของ CPU ขึ้นอยู่กับจำนวนมากที่สุด ของจำนวนหน่วยที่ผลิต นี่คือข้อเท็จจริงที่รู้จักกันดีในทางเศรษฐกิจ นั่นคือเหตุผลที่พวกเขาสามารถขายได้ (ค่อนข้าง) "ถูก" หลังจากทั้งหมด (ฉันคิดว่าไม่จำเป็นต้องมีลิงก์ในที่นี้)

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

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

(อีกทางหนึ่งแน่นอนว่ามีข้อผิดพลาดมากกว่าที่เป็นไปได้สำหรับโปรเซสเซอร์ที่มีมากกว่า 1.5 พันล้านทรานซิสเตอร์ตามปกติทุกวันนี้มากกว่าทรานซิสเตอร์หนึ่งพันของโพรเซสเซอร์ในยุคเจ็ดสิบ แต่นี่ไม่ได้ขัดแย้งกับคำตอบ IMO ของฉัน มักจะมีข้อผิดพลาดที่รู้จักจำนวนมากอย่างน้อยก็ในไมโครโค้ด แต่นี่ไม่ใช่หัวข้อที่นี่)

มีแม้กระทั่งมีมากขึ้นเหตุผลที่จะไม่ต้องกังวลเกี่ยวกับสลาย CPU สำหรับโปรแกรมของคุณ:

  • เหตุผลแรกคือ CPU ที่ทันสมัยลดความถี่หรือเค้นถ้าพวกเขาร้อนเกินไป

    มันควรจะชัดเจนว่าถ้าคุณใช้ CPU 100% 24/7 ตลอดทั้งปีมันจะตายเร็วกว่า CPU ที่ใช้ทุก ๆ สัปดาห์ที่สองหนึ่งชั่วโมงเท่านั้น แต่นั่นก็เป็นจริงสำหรับรถยนต์ด้วยเช่นกัน เฉพาะในกรณีเช่นนี้ฉันจะคิดถึงการใช้งาน CPU และศักยภาพในการนอนหลับ

  • เหตุผลที่สองคือมันยากมากที่จะเขียนโปรแกรมซึ่งใช้ CPU 100% จาก OS (เช่นใน Windows) นอกจากนี้ CPU ที่ทันสมัย ​​(ปกติ) มีอย่างน้อย 2-4 คอร์ ดังนั้นอัลกอริทึมแบบดั้งเดิมซึ่งมีแนวโน้มที่จะใช้ 100% ของซีพียูแกนเดี่ยวตอนนี้มีเพียง 50% สำหรับซีพียูดูอัลคอร์ (เรียบง่าย แต่เห็นในสถานการณ์จริง)

  • ยิ่งไปกว่านั้นระบบปฏิบัติการมีการควบคุม CPU และไม่ใช่โปรแกรมของคุณดังนั้นหากมีแอปพลิเคชันอื่นที่มีลำดับความสำคัญเท่ากันหรือสูงกว่า (ค่าเริ่มต้นคืออะไร) โปรแกรมของคุณจะได้รับ CPU มากเท่าที่เป็นไปได้ อดมื้อกินมื้อ (แน่นอนว่านี่เป็นเพียงทฤษฎีที่เรียบง่ายและแน่นอนว่าการทำงานหลายอย่างของ Windows, Linux และอื่น ๆ นั้นไม่สมบูรณ์แบบ แต่โดยรวมแล้วฉันคิดว่าเป็นเรื่องจริง)

"ก่อนหน้านี้ฉันรู้สึกว่าการใช้ CPU 100% นั้นดีกว่าสำหรับการใช้งานที่หนักหน่วงหรือยาวนาน .. "

ใช่อยู่กับสิ่งนี้ แต่ตัวอย่างเช่นถ้าคุณรอ & วนลูปสำหรับกระบวนการอื่นในคำอื่น ๆ ที่ทำอะไรมันจะไม่เลวร้ายเกินไปถ้าคุณ Thread.Sleep () มิลลิวินาทีบางอย่างในวงนั้นให้เวลาพิเศษแก่ผู้อื่น ในขณะที่มันไม่จำเป็นสำหรับระบบปฏิบัติการมัลติทาสก์ที่ดีฉันแก้ไขปัญหาบางอย่างเช่นนี้สำหรับ Windows 2000 (นั่นไม่ได้หมายความว่าแน่นอนว่าจะใช้ Sleep () ในการคำนวณเช่น ..


3
ในขณะที่คำตอบนี้เป็นจริงในวันนี้มีความกังวลสำหรับอนาคต มันเคยเป็นที่ "สถานะของแข็ง" หมายถึงความน่าเชื่อถือสูงสุด แต่ตอนนี้เรามีแฟลช MLC ที่ในบางกรณีจัดอันดับเพียง 1,000 รอบการลบต่อบล็อก นานแค่ไหนจนกระทั่งขนาดการหดตัวลดลงให้ปรากฏการณ์ที่คล้ายกันสำหรับ CPU ที่ต้องทำงานที่ 100% อย่างต่อเนื่อง
Michael

2
@Michael, ซีพียูไม่ได้กลายพันธุ์แม้ว่า, และพวกเขาเขียนไปยังหน่วยความจำที่เปลี่ยนแปลงได้ - แต่ฉันก็ยังเข้าใจในสิ่งที่คุณพยายามจะพูด
ปีเตอร์

3

การย่อยสลายดังกล่าวเป็นไปได้ในทางทฤษฎีและถูกเรียกว่า " electromigration " Electromigration ขึ้นกับอุณหภูมิเร่งขึ้นเมื่ออุณหภูมิสูงขึ้น ไม่ว่าจะเป็นปัญหาในทางปฏิบัติสำหรับซีพียูสมัยใหม่หรือไม่นั้นขึ้นอยู่กับการถกเถียงกัน แนวทางปฏิบัติด้านการออกแบบ VLSI สมัยใหม่ชดเชยการใช้ไฟฟ้าและชิปมีแนวโน้มที่จะล้มเหลวด้วยเหตุผลอื่น ๆ

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

อัตราการเกิดคลื่นแม่เหล็กไฟฟ้าขึ้นอยู่กับอุณหภูมิของชิปโดยอายุการใช้งานจะเพิ่มเป็นสองเท่าสำหรับทุกๆ (ประมาณมาก) 10 ° C ในความเป็นจริงนี่คือพื้นฐานของการทดสอบที่เรียกว่า "HTOL" (อายุการใช้งานที่อุณหภูมิสูง) ซึ่งจะวัดระยะเวลาที่ชิปใช้ในการตายที่ 125 ° C ชิปที่ทำงานที่ 125 ° C จะล้มเหลวเร็วกว่าชิปที่ทำงานที่ 55 °ประมาณ 100 เท่าดังนั้นหากออกแบบมาอย่างน้อย 10 ปีที่ 55 ° C ชิปอาจล้มเหลวภายใน 1 เดือนที่อุณหภูมิ 125 ° C หากทำงานที่บางสิ่งบางอย่างที่สมเหตุสมผลเช่น 85 ° C ชิปดังกล่าวจะยังคงล้มเหลวอย่างน้อย 5-10 เท่าเร็วกว่าที่ออกแบบไว้

แน่นอนว่าซีพียูมักได้รับการออกแบบโดยคำนึงถึงอุณหภูมิที่สูงกว่าดังนั้นจึงสามารถใช้งานได้นานเป็นปี ๆ ที่อุณหภูมิ 85 ° C 24/7 100% ดังนั้นฉันขอแนะนำให้คุณไม่ต้องกังวลกับ "หมดกำลัง" CPU และกังวลว่าการโหลด 100% นั้นเหมาะสมจากมุมมองของวิศวกรรมซอฟต์แวร์หรือไม่


การค้นหาคำนั้นนำไปสู่การค้นหาด้วยผลลัพธ์จำนวนมากที่อ่านได้ดีในเครือข่าย SE ... ซึ่งส่วนใหญ่อยู่ใน Electronics.SE และ SuperUser

1

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

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


6
Windowsทำงานด้วยวิธีนี้ ใน Linux และเธรดระบบอื่น ๆ ที่รออยู่บางอย่าง (อินพุตของผู้ใช้) จะได้รับความสำคัญเหนือเธรดโดยใช้เวลาที่จัดสรรไว้ดังนั้นโปรแกรมแบบโต้ตอบจะตอบสนองต่อแม้ว่าคุณจะไม่ได้เล่นตามลำดับความสำคัญ
Jan Hudec

2
@JanHudec Windows ทำเช่นนั้นจริงๆ superuser.com/questions/194223/…
NtscCobalt

@NtscCobalt: ใช่ สิ่งที่เห็นได้ชัดว่าไม่ใช่ Windows CE และ Windows มีปัญหาร้ายแรงเมื่อใดก็ตามที่กระบวนการหนักบนดิสก์ แต่เห็นได้ชัดว่ามีอะไรบางอย่างที่แตกต่างออกไป (การจัดการดิสก์ค่อนข้างแย่ใน Windows โดยทั่วไป)
Jan Hudec

1

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

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

Mac ทุกเครื่องที่ฉันเป็นเจ้าของมีรหัสชีวิตที่ใช้งาน CPU 100% ในแต่ละวัน ในกรณีหนึ่งฉันต้องปิดจอแสดงผลเพราะฉันไม่มีเครื่องชาร์จดั้งเดิมสำหรับแล็ปท็อปและมี 4 คอร์และไฮเปอร์เธรดที่ใช้พลังงานมากกว่าที่ชาร์จที่จัดมาให้ - ดังนั้นแบตเตอรี่จึงหยุดทำงานและเมื่อถึงมือ ร้อยละ 5 คอมพิวเตอร์ชะลอความเร็วสัญญาณนาฬิกาจนกว่าแบตเตอรี่จะสูงถึง 10%! (ขณะที่จอแสดงผลปิดอยู่ก็วิ่งเต็มความเร็วเป็นเวลาหลายวัน) ไม่ว่าในกรณีใด ๆ ผลร้ายใด ๆ

ดังนั้นด้วยคอมพิวเตอร์ที่ออกแบบมาอย่างดีคุณจะถูกต้อง ด้วยคอมพิวเตอร์ราคาถูกที่ออกแบบมาไม่ดีเพื่อนร่วมงานของคุณอาจถูกต้อง ในทางกลับกันคุณอาจพิจารณาค่าใช้จ่ายของเวลารอของคุณเทียบกับค่าใช้จ่ายในการซื้อคอมพิวเตอร์ทดแทน


0

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

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