คำสั่ง Unix ที่ดีที่สุดคืออะไร


9

สำหรับการทดสอบการเปรียบเทียบอย่างรวดเร็วจะสามารถรวม niceice และ ionice เข้ากับเอฟเฟกต์สูงสุดได้อย่างไรเช่นคำสั่งให้ใช้ทรัพยากรน้อยที่สุดเท่าที่จะเป็นไปได้

(ฉันคิดว่ามันคล้ายกับ `nice -n 19 ionice -c 2 [command] แต่ไม่แน่ใจเกี่ยวกับ ionice's" -n "(classdata param) หน้า man นั้นเป็นความลับเกี่ยวกับความเกี่ยวข้อง)


3
บวก 1 สำหรับชื่อคำถามที่ฉลาด แต่ก็เป็นคำถามที่ดีโดยทั่วไป
Lizardx

คำตอบ:


10

คำสั่งทั้งหมดที่คุณต้องการคือ:

chrt -b 0 nice -n 19 ionice -c 2 -n 7 [command]

chrtคำสั่งที่จุดเริ่มต้นที่จะเปลี่ยนสิ่งที่ชั้นการตั้งเวลาชุดซึ่งเทียบเท่ากับการเพิ่ม 0.5 ถึงมูลค่าที่ดี ตัวเลือก -n สำหรับ ionice เป็นลำดับความสำคัญง่าย ๆ สำหรับตัวเลือกเรียลไทม์ ( -c 1) และ best-พยายาม ( -c 2) โดยที่ค่าที่ต่ำกว่าจะมีลำดับความสำคัญสูงกว่าเช่นเดียวกับค่าที่ดี (แต่อยู่ในช่วง 0-7) อย่างไรก็ตามคำสั่ง ionice ที่ไม่จำเป็นอย่างเคร่งครัดตั้งแต่ I / O ระดับตั้งเวลาและลำดับความสำคัญโดยเริ่มต้นมาจากพารามิเตอร์การตั้งเวลาของ CPU และหมายถึงnice -n 19ionice -c 2 -n 7

อย่างไรก็ตามคุณสามารถได้รับการใช้ทรัพยากรน้อยที่สุดโดยการตั้งค่าคลาส CPU และ I / O ให้ว่าง ในทั้งสองกรณีตัวจับเวลา 'ไม่ได้ใช้งาน' ไม่ใช่ตัวกำหนดเวลาที่ไม่ได้ใช้งานจริงและคุณจะยังสามารถใช้ทรัพยากรได้ แต่ทุกอย่างจะมีความสำคัญสูงกว่า

สำหรับคลาสการกำหนดเวลา CPU สิ่งนี้จะใช้chrtคำสั่งแม้ว่าจะไม่จำเป็นต้องมีnice(ลำดับความสำคัญต้องถูกตั้งค่าเป็น0ในคลาสการกำหนดตารางเวลาว่าง) และมีลักษณะดังนี้:

chrt -i 0 {command or PID}

niceคำสั่งบนลินุกซ์กระจกรุ่น SVR4 ซึ่งหมายความว่ามันไม่สามารถเปลี่ยนระดับการตั้งเวลาเพียงค่าที่ดี (ซึ่งยังทำงานแตกต่างกันบน Linux กว่าคลาสสิก UNIX, แต่ที่ OT บิต) ในฐานะที่เป็นต้นฉบับการเรียนการตั้งเวลาทางเลือกที่เป็นเรียลไทม์ POSIX.1E SCHED_RRและคำสั่งในการเรียนการตั้งเวลาชุดจบลงด้วยการถูกเรียกว่าSCHED_FIFO ตัวเลือกระบุจะใช้ระดับการตั้งเวลาchrt-iSCHED_IDLE

สำหรับการเรียนการจัดตาราง I / O ioniceที่คุณใช้ คำสั่งที่แน่นอนมีลักษณะเช่นนี้:

ionice -c 3 {command or PID}

-cตัวเลือกที่ระบุว่าระดับการตั้งเวลาในการใช้งานและ 3 เป็นจำนวนสำหรับการเรียนไม่ได้ใช้งาน โปรดทราบว่าการใช้ตัวกำหนดตารางเวลาบล็อก I / O นั้นอาจไม่ส่งผลกระทบอะไรเลย โดยเฉพาะอย่างยิ่งตัวnoopกำหนดตารางเวลา I / O ไม่สนับสนุนลำดับความสำคัญหรือคลาสการกำหนดเวลาเลยและฉันค่อนข้างมั่นใจว่าตัวdeadlineจัดตารางเวลา (ทั้งที่เป็นแบบดั้งเดิมและแบบ blk-mq) ไม่เหมือนกัน

หากคุณต้องการทำสิ่งนี้โดยทางโปรแกรมไม่ว่าจะเป็นโปรแกรมของคุณเองหรือเพื่อปรับเปลี่ยนกระบวนการอื่น ๆ ให้ตรวจสอบ man pages สำหรับsched_setschedulerและการioprio_setเรียกของระบบ (แม้ว่าทั้งคู่จะคุ้มค่ากับการอ่าน


0

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

nice -n19 [command]

ในฐานะที่เป็นioniceจะถูกตั้งค่าตามสัดส่วนบนเคอร์เนล Linux ที่ทันสมัย

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

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