จำกัดการใช้งาน 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/ระบบ
- ค้นหากระบวนการทำงานอันดับต้นๆ ตามหน่วยความจำและการใช้งาน CPU สูงสุดใน Linux
- Cpustat – ตรวจสอบการใช้งาน CPU โดยการรันกระบวนการใน Linux
- CoreFreq – เครื่องมือตรวจสอบ CPU อันทรงพลังสำหรับระบบ Linux
- ค้นหากระบวนการทำงานอันดับต้นๆ ตามหน่วยความจำและการใช้งาน CPU สูงสุดใน Linux
- 20 เครื่องมือบรรทัดคำสั่งเพื่อตรวจสอบประสิทธิภาพของ Linux
- 13 เครื่องมือตรวจสอบประสิทธิภาพ Linux – ตอนที่ 2
ในการเปรียบเทียบ หลังจากทดสอบ CPUTool และ CPULimit เราสังเกตเห็นว่าแบบแรกมีฟังก์ชัน "การจำกัดการใช้งาน CPU ของกระบวนการ" ที่มีประสิทธิภาพและเชื่อถือได้มากกว่า
ซึ่งเป็นไปตามช่วงเปอร์เซ็นต์ของการใช้งาน CPU ที่สังเกตได้หลังจากใช้เครื่องมือทั้งสองกับกระบวนการที่กำหนด ลองใช้เครื่องมือทั้งสองและเพิ่มความคิดเห็นของคุณลงในบทความนี้โดยใช้แบบฟอร์มคำติชมด้านล่าง