Score:1

จำกัด ผลรวมของการใช้ซีพียู 2 กระบวนการหรือไม่

ธง br

2 กระบวนการ เรียกว่า A และ B
A มีลำดับความสำคัญสูง ¼B มีลำดับความสำคัญต่ำ
ฉันต้องการจำกัดการใช้ cpu ทั้งหมดของ 2 กระบวนการนี้ให้ต่ำกว่า 80%

บางครั้ง A ไม่มีอะไรทำ การใช้ cpu เป็น 0% ในเวลานี้ ฉันหวังว่า B จะดำเนินการและใช้ cpu 80%
บางครั้ง A ใช้งานได้ ใช้งาน cpu 80% ในเวลานี้ ฉันหวังว่า B จะไม่ทำอะไรเลยและไม่ใช้ cpu (หรือใช้เพียงเล็กน้อย 1%)
บางครั้ง A ใช้ซีพียู 30% ในเวลานี้ B ควรใช้ซีพียู 50%

ฉันใช้ Ubuntu 20.04 มีวิธีใดบ้างในการดำเนินการนี้

Score:1
ธง jp

เพื่อให้ได้ผลลัพธ์ที่แน่นอน คุณอาจต้องใช้ กลุ่ม.

นี่คือตัวอย่างรวดเร็วที่ฉันทดสอบบน Ubuntu 20.04 เพื่อความง่าย นี่คือ Cpu VM เดียวและคำสั่งทั้งหมดถูกรันในฐานะรูท

  • ติดตั้งเครื่องมือ
apt-get install cgroup-tools ความเครียด
  • สร้างลำดับชั้นของกลุ่ม cpu ที่จะจำกัดซีพียู พ่อแม่ชื่อ สูงสุด 80 และก็มี และ อยู่ข้างใต้
cgcreate -g ซีพียู:สูงสุด 80/A -g ซีพียู:สูงสุด 80/B
  • จำกัด cgroup หลัก สูงสุด 80 ถึง 80% ของซีพียู
เสียงสะท้อน 1000000 > /sys/fs/cgroup/cpu/max80/cpu.cfs_period_us
เสียงสะท้อน 800000 > /sys/fs/cgroup/cpu/max80/cpu.cfs_quota_us
  • จำกัด กลุ่มย่อย มีหุ้น 10% คุณกล่าวถึง 1% ในโพสต์ของคุณ แต่แสดง 10% ได้ง่ายกว่า จะใช้ CPU ที่มีอยู่ทั้งหมด แต่ถ้ามีข้อโต้แย้งกับโปรเซสใน จากนั้นจะถูกจำกัดไว้ที่ 10%
เสียงสะท้อน $((1024 * 10 / 100 )) > /sys/fs/cgroup/cpu/max80/B/cpu.shares

ในการดำเนินการ

  • วิ่ง ความเครียด กระบวนการเพียง . การใช้งาน CPU จะเป็น 80% สำหรับ ความเครียด กระบวนการทำงาน
root@ubuntu:~# cgexec -g cpu:max80/A stress --cpu 1 &
[1] 2040
ความเครียด: ข้อมูล: [2040] การจ่ายหมู: 1 ซีพียู, 0 io, 0 vm, 0 hdd
root@ubuntu:~# ps -o pid,%cpu,cmd --sort -%cpu -p $(pidof ความเครียด)
    PID %ซีพียู CMD
   2041 80.4 ความเครียด --cpu 1
   2040 0.0 ความเครียด --cpu 1
root@ubuntu:~# ฆ่าความเครียดทั้งหมด
  • วิ่ง ความเครียด กระบวนการเพียง . การใช้งาน CPU จะเป็น 80%
root@ubuntu:~# cgexec -g cpu:max80/B stress --cpu 1 &
[1] 2065
ความเครียด: ข้อมูล: [2065] การจ่ายหมู: 1 ซีพียู, 0 io, 0 vm, 0 hdd
root@ubuntu:~# ps -o pid,%cpu,cmd --sort -%cpu -p $(pidof ความเครียด)
    PID %ซีพียู CMD
   2066 80.6 ความเครียด --cpu 1
   2065 0.0 ความเครียด --cpu 1
root@ubuntu:~# ฆ่าความเครียดทั้งหมด
  • วิ่ง ความเครียด กระบวนการใน และ . การใช้งาน CPU จะถูกแบ่ง 90%/10%
root@ubuntu:~# cgexec -g cpu:max80/A stress --cpu 1 &
[1] 2078
ความเครียด: ข้อมูล: [2078] การจ่ายหมู: 1 ซีพียู, 0 io, 0 vm, 0 hdd
root@ubuntu:~# cgexec -g cpu:max80/B stress --cpu 1 &
[2] 2080
ความเครียด: ข้อมูล: [2080] การจ่ายหมู: 1 ซีพียู, 0 io, 0 vm, 0 hdd
root@ubuntu:~# ps -o pid,%cpu,cmd --sort -%cpu -p $(pidof ความเครียด)
    PID %ซีพียู CMD
   2079 71.9 ความเครียด --cpu 1
   2081 7.2 ความเครียด --cpu 1
   2078 0.0 ความเครียด --cpu 1
   2080 0.0 ความเครียด --cpu 1
root@ubuntu:~# ฆ่าความเครียดทั้งหมด

ลิงค์

br flag
ขอบคุณ รายละเอียดมาก! ฉันลองแล้ว มันจำกัดการใช้ cpu ไว้ต่ำกว่า 80% แต่สำหรับ 1 cpu พีซีของฉันมี 8 cpu ดังนั้นมันกินพื้นที่ 80% ของ 800% จริง ๆ แล้วเหลือ 7 cpus ที่ไม่ได้ใช้งาน ฉันหวังว่ามันจะสามารถใช้ 80% ของซีพียูทั้งหมด ดังนั้น 800% * 80% = 640% มีวิธีใดบ้างในการทำเช่นนี้?
Andrew Lowther avatar
jp flag
ฉันเชื่อว่าคุณจะต้องคูณโควต้าด้วยจำนวนคอร์ `เสียงสะท้อน $((8 * 800000)) > /sys/fs/cgroup/cpu/max80/cpu.cfs_quota_us` หากคุณใช้ `ความเครียด` เพื่อทดสอบ คุณต้องเพิ่มจำนวนพนักงาน `ความเครียด --cpu 8`
Score:0
ธง cn

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

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา