ถูกเตือน: ที่นี่มีมังกร
เมื่อคุณเริ่มเข้าสู่เส้นทางของการควบคุมทรัพยากรของแอปพลิเคชัน / กระบวนการ / เธรดโดยเฉพาะในระดับนี้ คุณจะเริ่มเปิดกล่องปัญหาของ Pandora อย่างแท้จริง เมื่อถึงเวลาต้องดีบักปัญหาที่การจำกัดอัตราของคุณไม่ได้คำนึงถึง
ที่กล่าวว่า หากคุณเชื่อว่าคุณรู้ว่าคุณกำลังทำอะไรอยู่ มีสามทางเลือกให้คุณ: ดี
, ซีพียู
และกลุ่มควบคุม (Cgroups)
นี่คือ TL;DR สำหรับสามวิธีนี้:
ดี € ดี {กระบวนการ}
นี่เป็นวิธีง่ายๆ ในการจัดลำดับความสำคัญของงาน และค่อนข้างมีประสิทธิภาพสำหรับการใช้งานแบบ "ครั้งเดียว" เช่น การลดลำดับความสำคัญของงานที่ใช้เวลานานและมีค่าใช้จ่ายสูงในการคำนวณ ซึ่งควรใช้ CPU มากขึ้นเมื่อไม่ได้ใช้งานเครื่อง โดยงานอื่น (หรือคน)
ขีดจำกัดซีพียู € cpulimit -l 60 {กระบวนการ}
หากประสิทธิภาพเซิร์ฟเวอร์ของคุณแย่ลง (หรือที่เรียกว่าหยุดทำงาน) เมื่อการใช้งาน CPU เกินจำนวนที่กำหนด ซีพียู
สามารถช่วยลดแรงดันในระบบได้ทำสิ่งนี้ได้โดยการหยุดกระบวนการชั่วคราวในช่วงเวลาต่างๆ เพื่อให้อยู่ภายใต้เพดานที่กำหนดโดยการส่ง ซิกสต็อป
และ ซิกคอน
ส่งสัญญาณไปยังกระบวนการ ซีพียู
ไม่เปลี่ยน ดี
มูลค่าของกระบวนการ แทนที่จะตรวจสอบและควบคุมการใช้งาน CPU ในโลกแห่งความเป็นจริง
คุณจะพบว่า ซีพียู
มีประโยชน์เมื่อคุณต้องการให้แน่ใจว่ากระบวนการไม่ได้ใช้ CPU มากกว่าบางส่วน ซึ่งคำถามของคุณกล่าวถึง แต่ข้อเสียคือกระบวนการไม่สามารถใช้เวลา CPU ที่มีอยู่ทั้งหมดเมื่อระบบไม่ได้ใช้งาน ( ที่ ดี
อนุญาต)
ซีจีกรุ๊ป
sudo cgcreate -g cpu:/ยับยั้ง
sudo cgset -r cpu.shares=768 ยับยั้ง
sudo cgexec -g cpu: ยับยั้ง {กระบวนการ}
Cgroups â control group â เป็นคุณลักษณะที่สร้างขึ้นในเคอร์เนล Linux ที่ช่วยให้คุณควบคุมวิธีการจัดสรรทรัพยากร ด้วย Cgroups คุณสามารถระบุจำนวน CPU, หน่วยความจำ, แบนด์วิธ หรือการรวมกันของทรัพยากรเหล่านี้ สามารถใช้โดยกระบวนการที่กำหนดให้กับกลุ่ม
ข้อได้เปรียบที่สำคัญของ Cgroups มากกว่า ดี
หรือ ซีพียู
คือใช้ข้อจำกัดกับชุดของกระบวนการ ไม่ใช่แค่หนึ่ง ดี
และ ซีพียู
ยังถูกจำกัดให้จำกัดการใช้งาน CPU ของกระบวนการ ในขณะที่กลุ่ม C สามารถจำกัดทรัพยากรกระบวนการอื่นๆ
หากคุณลงเอยด้วยช่องโหว่ของ Cgroups คุณสามารถปรับแต่งระบบให้เหมาะกับชุดของงานที่เฉพาะเจาะจงได้