在Ubuntu系統中,可以使用cgroups
(control groups)來限制進程的資源使用。cgroups
是Linux內核的一個功能,可以限制、記錄和隔離進程組的資源使用(如CPU、內存、磁盤I/O等)。以下是如何使用cgroups
來限制進程資源使用的步驟:
cgroup-tools
軟件包:sudo apt-get update
sudo apt-get install cgroup-tools
sudo cgcreate -g cpu,memory:/my_cgroup
這將創建一個名為my_cgroup
的新cgroup,限制CPU和內存資源。
echo 50000 | sudo tee /sys/fs/cgroup/cpu/my_cgroup/cpu.cfs_quota_us
這將限制my_cgroup
中的進程最多使用50%的CPU時間。
echo 100M | sudo tee /sys/fs/cgroup/memory/my_cgroup/memory.limit_in_bytes
這將限制my_cgroup
中的進程最多使用100MB的內存。
首先,找到要限制的進程的PID:
ps aux | grep your_process_name
然后,將進程添加到my_cgroup
:
sudo cgclassify -g cpu,memory:my_cgroup <PID>
將<PID>
替換為實際進程ID。
現在,my_cgroup
中的進程將受到之前設置的CPU和內存限制。
sudo cgdestroy -g cpu,memory:/my_cgroup
這將刪除名為my_cgroup
的cgroup及其資源限制。
注意:在某些Ubuntu版本中,可能需要先啟用cgroup v2。要啟用cgroup v2,請按照以下步驟操作:
/etc/default/grub
文件:sudo nano /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT
行中添加systemd.unified_cgroup_hierarchy=1
參數:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash systemd.unified_cgroup_hierarchy=1"
保存文件并退出編輯器。
更新GRUB配置:
sudo update-grub
sudo reboot
現在,您的Ubuntu系統將使用cgroup v2。請注意,cgroup v2的命令和路徑與cgroup v1略有不同。在上面的示例中,我們使用了適用于cgroup v2的路徑(例如/sys/fs/cgroup/cpu/my_cgroup
)。