ฉันมีงาน rsync cron ซึ่งผลักภาระเซิร์ฟเวอร์และเรียกเตือนการตรวจสอบ หากฉันตั้งค่างานให้ทำงานในระดับดีมากจะช่วยลดผลกระทบที่มีต่อค่าโหลดระบบได้อย่างมีประสิทธิภาพหรือไม่
ฉันมีงาน rsync cron ซึ่งผลักภาระเซิร์ฟเวอร์และเรียกเตือนการตรวจสอบ หากฉันตั้งค่างานให้ทำงานในระดับดีมากจะช่วยลดผลกระทบที่มีต่อค่าโหลดระบบได้อย่างมีประสิทธิภาพหรือไม่
คำตอบ:
มันจะไม่ลดภาระของคุณ
มันจะช่วยให้กระบวนการอื่นใช้เวลา CPU บ่อยขึ้นหากมีการแย่งชิงทรัพยากรที่เป็นไปได้
การเปลี่ยนค่า 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/สำหรับรายละเอียดเพิ่มเติม
การเปลี่ยนระดับที่ดีของกระบวนการไม่น่าจะส่งผลกระทบต่อค่าโหลดระบบ ค่าโหลดระบบคือความยาวเฉลี่ยของคิวการเรียกใช้ซึ่งโดยทั่วไปเป็นจำนวนกระบวนการที่ต้องการใช้ CPU
หากคุณใช้กระบวนการที่เชื่อมโยงกับ CPU (ไม่ใช่เช่น rsync แต่เป็นเพียงตัวอย่าง) มันจะต้องการใช้เวลาของ CPU เสมอเมื่อใดก็ตามที่มีบางอย่างพร้อมใช้งาน เนื่องจากต้องการเรียกใช้เสมอจึงจะสนับสนุนค่าโหลด 1.0 ให้กับค่าโหลดระบบ ไม่สำคัญว่าระดับ nice ของกระบวนการจะเป็นอย่างไรเนื่องจากความยาวเฉลี่ยของคิวการรันไม่ได้รับผลกระทบจากลำดับของกระบวนการในคิวการรัน
คุณอาจพิจารณา 3 วิธีในการลดผลกระทบของกระบวนการในการโหลดระบบ / เวลา CPU:
nice
คำสั่งเพื่อลดลำดับความสำคัญของงานด้วยตนเองcpulimit
คำสั่งเพื่อหยุดกระบวนการชั่วคราวซ้ำ ๆ เพื่อไม่ให้เกินขีด จำกัด ที่แน่นอนbuilt-in control groups
ซึ่งเป็นกลไกที่บอกตัวกำหนดตารางเวลาเพื่อ จำกัด ปริมาณทรัพยากรที่มีอยู่สำหรับกระบวนการทรัพยากร