ค้นหาเว็บไซต์

จำกัดการใช้งาน CPU ของกระบวนการใน Linux ด้วยเครื่องมือ CPULimit


ในโพสต์ก่อนหน้านี้ เราได้อธิบาย CPUTool สำหรับการจำกัดและควบคุมการใช้งาน CPU ของกระบวนการใดๆ ใน Linux ช่วยให้ผู้ดูแลระบบสามารถขัดจังหวะการดำเนินการของกระบวนการ (หรือกลุ่มกระบวนการ) หากโหลด CPU/ระบบเกินขีดจำกัดที่กำหนดไว้ ที่นี่ เราจะเรียนรู้วิธีใช้เครื่องมือที่คล้ายกันที่เรียกว่า cpulimit

Cpulimit ใช้เพื่อจำกัดการใช้งาน CPU ของกระบวนการในลักษณะเดียวกับ CPUTool อย่างไรก็ตาม ให้ตัวเลือกการใช้งานมากกว่าเมื่อเปรียบเทียบกับกระบวนการที่เหมือนกัน ข้อแตกต่างที่สำคัญประการหนึ่งคือ cpulimit ไม่ได้จัดการโหลดของระบบซึ่งต่างจาก cputool

แนะนำให้อ่าน: 9 คำสั่งที่เป็นประโยชน์ในการรับข้อมูล CPU บน Linux

ติดตั้ง CPULimit เพื่อจำกัดการใช้งาน CPU ของกระบวนการใน Linux

CPULimit สามารถติดตั้งได้จากคลังซอฟต์แวร์เริ่มต้นของ Debian/Ubuntu และอนุพันธ์ของมันโดยใช้เครื่องมือการจัดการแพ็คเกจ

sudo apt install cpulimit

ใน RHEL/CentOS และ Fedora คุณต้องเปิดใช้งานพื้นที่เก็บข้อมูล EPEL ก่อน จากนั้นจึงติดตั้ง cpulimit ตามที่แสดง

# yum ติดตั้ง epel-release
# ยำติดตั้ง cpulimit

การจำกัดการใช้งาน CPU ของกระบวนการด้วย CUPLimit

ในส่วนย่อยนี้ เราจะอธิบายวิธีการทำงานของ cpulimit ขั้นแรก เรามารันคำสั่งกัน (คำสั่ง dd เดียวกับที่เราดูในขณะที่ครอบคลุม cputool) ซึ่งจะส่งผลให้มีเปอร์เซ็นต์ CPU สูงในเบื้องหลัง (โปรดทราบว่ากระบวนการ PID จะถูกพิมพ์ออกมาหลังจากรันคำสั่ง) .

dd if=/dev/zero of=/dev/null &

[1] 17918

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

top

เมื่อดูผลลัพธ์ด้านบน เราจะเห็นว่ากระบวนการ dd ใช้เวลา CPU เป็นเปอร์เซ็นต์สูงสุด 100.0%

แต่เราสามารถจำกัดสิ่งนี้ได้โดยใช้ cputlimit ดังนี้ ตัวเลือก --pid หรือ -p ใช้เพื่อระบุ PID และ --limit หรือ -l คือ ใช้เพื่อกำหนดเปอร์เซ็นต์การใช้งานสำหรับกระบวนการ

คำสั่งด้านล่างจะจำกัด คำสั่ง dd (PID 17918) ให้ใช้ 50% ของ CPU หนึ่งคอร์

sudo cpulimit --pid 17918 --limit 50  

Process 17918 detected

เมื่อเราเรียกใช้ cpulimit เราจะสามารถดูการใช้งาน CPU ปัจจุบันสำหรับ คำสั่ง dd ได้ด้วยการมองด้านบนหรือมองดู จากเอาต์พุต ค่าจะอยู่ในช่วง (51.5%-55.0% หรือเกินกว่านั้นเล็กน้อย)

เราสามารถเค้นการใช้งาน CPU ของมันได้เป็นครั้งที่สองดังนี้ คราวนี้ลดเปอร์เซ็นต์ลงอีกดังนี้:

sudo cpulimit --pid 17918 --limit 20 

Process 17918 detected

อย่างที่เราเคยทำมาก่อน เราสามารถเรียกใช้ด้านบนหรือเหลือบมองเพื่อดูการใช้งาน CPU ใหม่สำหรับกระบวนการ ซึ่งจะอยู่ในช่วง 20%-25.0% หรือเกินกว่านี้เล็กน้อย

top

หมายเหตุ: เชลล์จะไม่ทำงานแบบโต้ตอบ – ไม่คาดหวังว่าผู้ใช้จะป้อนข้อมูลใดๆ เมื่อ cpulimit กำลังทำงาน หากต้องการฆ่ามัน (ซึ่งควรหยุดการดำเนินการจำกัดการใช้งาน CPU) ให้กด [Ctrl + C]

หากต้องการรัน cpulimit เป็นกระบวนการเบื้องหลัง ให้ใช้สวิตช์ --พื้นหลัง หรือ -b เพื่อทำให้เทอร์มินัลว่าง

sudo cpulimit --pid 17918 --limit 20 --background

หากต้องการระบุจำนวนแกน CPU ที่มีอยู่ในระบบ ให้ใช้แฟล็ก --cpu หรือ -c (โดยปกติแล้วจะตรวจพบโดยอัตโนมัติ)

sudo cpulimit --pid 17918 --limit 20 --cpu 4

แทนที่จะจำกัดการใช้งาน CPU ของกระบวนการ เราสามารถฆ่ามันได้ด้วยตัวเลือก --kill หรือ -k ค่าเริ่มต้นคือสัญญาณที่ส่งไปยังกระบวนการคือ SIGCONT แต่หากต้องการส่งสัญญาณอื่น ให้ใช้แฟล็ก --signal หรือ -s

sudo cpulimit --pid 17918 --limit 20 --kill 

หากต้องการออกหากไม่มีกระบวนการเป้าหมายที่เหมาะสม หรือในกรณีที่กระบวนการนั้นไม่ทำงาน ให้ใส่ -z หรือ --lazy เช่นนี้

sudo cpulimit --pid 17918 --limit 20 --kill --lazy

สำหรับข้อมูลเพิ่มเติมและตัวเลือกการใช้งาน โปรดดูหน้าคู่มือ cpulimit

man cpulimit

โปรดดูคำแนะนำที่เป็นประโยชน์ต่อไปนี้เพื่อค้นหาข้อมูล CPU และการตรวจสอบประสิทธิภาพของ CPU/ระบบ

  1. ค้นหากระบวนการทำงานอันดับต้นๆ ตามหน่วยความจำและการใช้งาน CPU สูงสุดใน Linux
  2. Cpustat – ตรวจสอบการใช้งาน CPU โดยการรันกระบวนการใน Linux
  3. CoreFreq – เครื่องมือตรวจสอบ CPU อันทรงพลังสำหรับระบบ Linux
  4. ค้นหากระบวนการทำงานอันดับต้นๆ ตามหน่วยความจำและการใช้งาน CPU สูงสุดใน Linux
  5. 20 เครื่องมือบรรทัดคำสั่งเพื่อตรวจสอบประสิทธิภาพของ Linux
  6. 13 เครื่องมือตรวจสอบประสิทธิภาพ Linux – ตอนที่ 2

ในการเปรียบเทียบ หลังจากทดสอบ CPUTool และ CPULimit เราสังเกตเห็นว่าแบบแรกมีฟังก์ชัน "การจำกัดการใช้งาน CPU ของกระบวนการ" ที่มีประสิทธิภาพและเชื่อถือได้มากกว่า

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