วิธี จำกัด การใช้ทรัพยากรสำหรับกระบวนการที่กำหนด?


11

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

ดังนั้นฉันสงสัยว่ามีวิธี จำกัด การใช้งาน IO, RAM และ CPU สำหรับกระบวนการที่กำหนดหรือไม่? และกระบวนการย่อยของมันแน่นอน

นี่คือระบบ Ubuntu 18.04 LTS ของฉัน


2
@GreatUncleBulgaria ไม่จริงเว้นแต่คุณต้องการที่จะมีส่วนร่วมกับคะแนนชื่อเสียง คำตอบง่ายๆกับสิ่งที่คุณขอเป็นเพียงการรวมสิ่งที่คนอื่นแนะนำ - ionice, renice- และบางทีulimit -sคำสั่งและที่มัน
Sergiy Kolodyazhnyy

@GreatUncleBulgaria ไม่คุ้นเคยกับcgroups-ioเพื่อให้มีความคิด :)
Sergiy Kolodyazhnyy

คำถามที่เกี่ยวข้องที่อาจเกิดขึ้น: askubuntu.com/q/538992/295286คำตอบที่กล่าวถึงกลุ่มcgแต่ไม่มากเลย . . อาจจะ ?
Sergiy Kolodyazhnyy

1
@SergiyKolodyazhnyy: ดูเหมือนว่ามีคนทำความสะอาดความคิดเห็น!

คำตอบ:


8

คุณควรใช้การรวมกันของทุกคนcgexec, cpulimitและionice:

  1. จำกัด RAM และ SWAP:

    sudo cgcreate -g memory:/szMyGroup
    echo $(( 512 * 1024 * 1024 )) | sudo tee /sys/fs/cgroup/memory/szMyGroup/memory.limit_in_bytes
    echo $(( 1024 * 1024 * 1024 ))  | sudo tee /sys/fs/cgroup/memory/szMyGroup/memory.memsw.limit_in_bytes

    คำสั่งข้างต้นสร้างกลุ่มควบคุมชื่อszMyGroup(เช่นในกรณีของคุณgroup-great-uncle) ตั้งค่าสูงสุดเป็นกระบวนการที่ทำงานภายใต้szMyGroupหน่วยความจำกายภาพสูงสุด 512 MB และสลับสูงสุดได้ถึง 1024 MB แล้ว:

    sudo cgexec -g memory:szMyGroup szMyProgram

    ซึ่งจะเรียกใช้โปรแกรมของคุณภายใต้szMyGroupกลุ่มควบคุมจึงมั่นใจได้ว่าพวกเขาปฏิบัติตามข้อ จำกัด

  2. จำกัด ดิสก์ IO:

    sudo ionice --class 3 --pid $(pgrep -f szMyProgram)

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

  3. จำกัด CPU:

    sudo cpulimit --limit=25 --pid=!#:4

    CPU ของโปรแกรมนั้นถูก จำกัด ไว้ที่ 25% ของสูงสุด

หากโปรแกรมไม่ได้ใช้ CPU เป็นจำนวนมากเริ่มต้นด้วยลดค่า cpulimit ให้เหลือครึ่งหนึ่งหรือน้อยกว่าที่ใช้อยู่ในปัจจุบัน

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