2017年4月1日 星期六

使用 linux cgroup 來限制 firefox, chrome 所使用的資源

firefox, chrome 是不是常常把 linux 系統的資源耗盡, 讓你的桌面環境很頓。用 cgroup 來對付這兩個吃資源的程式。

一開始找到這篇《Running Firefox in a cgroup (using systemd)》, 不過他不重要了, 不需要看, 因為要使用 systemd 搭配一堆我看不懂的指令, 都不知道自己在打什麼。

以下介紹的方式是直接操作 cgroup 這個虛擬的檔案系統來設定 cgroup。

mount -t cgroup -o memory memcg /media/cgroup
cd /media/cgroup
mkdir browser
cd browser
echo 1536M > memory.limit_in_bytes # 設定這個 group 只能使用 1536M 的記憶體
echo 19654 > tasks # 設定某個終端機 shell 的 pid
echo $$ 可以得知目前終端機 shell 的 pid, 把那個值 echo 到 task

從那個終端機 shell 執行的程式都會被限制在 1536M 的記憶體, 我從這個終端機執行 firefox, google-chrome 就會受限在 1536M 的記憶體。

mount -t cgroup -o blkio cgroup /media/block/
cd /media/block
mkdir compiler
cd compiler
echo 250 > blkio.weight # 設定這個 group IO 的 schedule 參數值, 這個值越小, 越不容易被 IO schedule 選到執行
echo 19654 > tasks # 設定某個終端機 shell 的 pid

這樣整個 linux 桌面就不會被這 2 個瀏覽器卡住了, 不過有時候會換成這 2 個瀏覽器卡卡的, 請自行調整這些設定值。

ref:
linux kernel hacks (繁體中文版) chapter 2

沒有留言:

張貼留言

使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。

我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。