Systemd

如何使用 systemd-run 限制 CPU 使用率

  • May 26, 2020

我有一個錯誤的程序,即使它處於空閒狀態,它也會使用 100% 的 CPU。由於目前修復它不實用,我只想限制它使用不超過 10% 的 CPU。但是,無論我做什麼,該程序總是會佔用 100% 的 CPU。

我在Arch Wiki上找到了告訴我創建一個包含以下內容的文件的說明:

# cpulimit.slice
[Slice]
CPUQuota=10%

顯然,我可以使用這些限制啟動一個 shell,如下所示:

systemd-run --slice=cpulimit.slice --uid=myuser --shell

這似乎可行,在輸入我的 sudo 密碼後,我得到了一個 shell,所以我執行了一個簡單的測試,它將使用 100% CPU,我可以用 Ctrl+C 停止:

while true; do true; done

我希望它使用不超過 10% 的 CPU,因為它在切片內執行,但它總是使用 100% 的 CPU!

我究竟做錯了什麼?

才發現問題。該.slice文件必須放入/etc/systemd/system/並且您必須先執行systemctl daemon-reload。然後一切正常。

不幸的是,systemd-run如果您使用無效參數,該命令不會給您任何錯誤消息--slice,它只是創建一個沒有其他限制的新切片,稱為您提供的任何名稱。

引用自:https://unix.stackexchange.com/questions/589042