การตั้งค่าระดับที่ดีขึ้นสำหรับกระบวนการเป็นวิธีที่มีประสิทธิภาพในการลดผลกระทบต่อเวลาในการโหลดระบบ / CPU หรือไม่?


10

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


สำหรับ rsync จะมีประสิทธิภาพมากกว่าในการใช้สวิตช์เพื่อลดการบีบอัดหรือ จำกัด การใช้แบนด์วิดท์
Nemo

คำตอบ:


9

มันจะไม่ลดภาระของคุณ

มันจะช่วยให้กระบวนการอื่นใช้เวลา CPU บ่อยขึ้นหากมีการแย่งชิงทรัพยากรที่เป็นไปได้


9

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

จากhttp://linux.101hacks.com/monitoring-performance/hack-100-nice-command-examples/

เคอร์เนลจะตัดสินใจว่าต้องใช้เวลาประมวลผลเท่าใดสำหรับกระบวนการตามค่า nice ช่วงของค่าที่ดีที่เป็นไปได้คือ: -20 ถึง 20 กระบวนการที่มีค่าที่ดีของ -20 นั้นมีความสำคัญสูงมาก กระบวนการที่มีค่าที่ดีคือ 20 มีลำดับความสำคัญต่ำมาก

ใช่คุณต้องการรันงาน cron ในระดับที่สูงกว่ากระบวนการอื่นถ้าคุณต้องการให้แน่ใจว่ากระบวนการอื่นได้รับความสำคัญ

เมื่อต้องการทำสิ่งนี้คุณต้องการให้สคริปต์ cron ของคุณทำงานดังนี้:

/bin/nice -n 10 /path/to/cron-script

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

ดูเพิ่มเติมการทำงานดีอย่างไร และhttp://www.cyberciti.biz/faq/change-the-nice-value-of-a-process/สำหรับรายละเอียดเพิ่มเติม


5

การเปลี่ยนระดับที่ดีของกระบวนการไม่น่าจะส่งผลกระทบต่อค่าโหลดระบบ ค่าโหลดระบบคือความยาวเฉลี่ยของคิวการเรียกใช้ซึ่งโดยทั่วไปเป็นจำนวนกระบวนการที่ต้องการใช้ CPU

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


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

3

คุณอาจพิจารณา 3 วิธีในการลดผลกระทบของกระบวนการในการโหลดระบบ / เวลา CPU:

  • ใช้niceคำสั่งเพื่อลดลำดับความสำคัญของงานด้วยตนเอง
  • ใช้cpulimitคำสั่งเพื่อหยุดกระบวนการชั่วคราวซ้ำ ๆ เพื่อไม่ให้เกินขีด จำกัด ที่แน่นอน
  • ใช้ Linux built-in control groupsซึ่งเป็นกลไกที่บอกตัวกำหนดตารางเวลาเพื่อ จำกัด ปริมาณทรัพยากรที่มีอยู่สำหรับกระบวนการ

ทรัพยากร

http://blog.scoutapp.com/articles/2014/11/04/restricting-process-cpu-usage-using-nice-cpulimit-and-cgroups


แน่นอนคุณต้องการใช้กลุ่ม cg เพื่อความสมดุลของทรัพยากรระบบ ที่ช่วยให้การแบ่งทรัพยากรตามที่คุณต้องการ (CPU, หน่วยความจำ, ดิสก์ IO, แบนด์วิดท์ดิสก์) และในสถานการณ์โหลดต่ำแม้กระบวนการ "ลำดับความสำคัญต่ำ" จะได้รับประสิทธิภาพสูงสุดซึ่งแตกต่างจากเทคนิคโหมดผู้ใช้ที่มักจะช้าลง
Mikko Rantalainen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.