Chrome

為什麼“cpulimit”不能限制鉻瀏覽器?

  • July 24, 2021

由於 CPU 使用率高,我想限制 Chromium 網路瀏覽器cpulimit並使用終端執行:

cpulimit -l 30 -- chromium --incognito

但它不會像預期的那樣限制 CPU 使用率(即最大到 30%)。它再次使用 100%。為什麼?我究竟做錯了什麼?

是的,當你停止它的一個執行緒時,鉻並不在乎。

cpulimit是,在 2021 年,真的不是你想要使用的那種工具,尤其是不使用互動式軟體:它通過信號停止和恢復程序來“限制”程序(或在你的情況下嘗試失敗)。嗯。這是一個可怕的 hack,它會導致您在現代瀏覽器中真正不想要的不可靠性,這些瀏覽器可能正在處理音頻和影片,或者試圖平滑滾動。

好消息是你真的不需要它。Linux 具有cgroups,這些可用於限制任何程序或程序組的資源消耗(例如,如果您不希望 chromium、skype 和 zoom 一起消耗超過 50% 的整體 CPU 容量) . 它們還可以用於限制其他事情,例如儲存訪問速度和網路傳輸。

對於您的瀏覽器,這可以歸結為(頭頂,未經測試):

# you might need to create the right mountpoints first
sudo mkdir /sys/fs/cgroup/cpu
sudo mount -t cgroup -o cpu cpu /sys/fs/cgroup/cpu

# Create a group that controls `cpu` allotment, called `/browser`
sudo cgcreate -g cpu:/browser
# Create a group that controls `cpu` allotment, called `/important`
sudo cgcreate -g cpu:/important

# allocate few shares to your `browser` group, and many shares of the CPU time to the `important` group.
sudo cgset -r cpu.shares=128 browser
sudo cgset -r cpu.shares=1024 important


cgexec -g cpu:browser chromium --incognitio
cgexec -g cpu:important make -j10 #or whatever

訣竅通常是為您的互動式會話(例如gnome-session)提供高份額,而其他事情則較低。

請注意,這保證了份額;除非必要,否則它不會*帶走。*即,如果您的 CPU 在那段時間內不能做任何其他事情(因為沒有其他東西在執行,或者因為具有更多共享的所有內容都被阻止,例如通過等待硬碟驅動器),它仍然會分配給瀏覽器程序。但這通常是你想要的:它沒有缺點(它不會讓系統的其餘部分執行得更慢,瀏覽器只是更快地“完成”了它必須做的事情,這可能甚至可以節省能源平均值:當多個 CPU 核心剛剛完成時,事情可以自動降頻/暫停)。

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