ソースの表示以前のリビジョンバックリンク全て展開する/折り畳む文書の先頭へ Share via Share via... Twitter LinkedIn Facebook Pinterest Telegram WhatsApp Yammer Reddit Teams最近の変更Send via e-Mail印刷パーマリンク × 目次 FreeBSDのrctlコマンドでプロセスのCPU利用率を制限する 試した環境 手順 準備 プロセスのCPU利用率を制限する 参考サイト FreeBSDのrctlコマンドでプロセスのCPU利用率を制限する FreeBSD 9.0で登場したrctlコマンドを使うと、システムの種々の資源を様々な粒度で制限することが出来る。 ここではプロセスのCPU利用率を制御してみる。 試した環境 FreeBSD 11.1-RELEASE-p4 手順 準備 rctlを使うにはカーネルのRACCT機能を有効にする必要がある。(RACCTって何の略なんだろう…リソースなんちゃらだとは思うけど。) /boot/loader.confに次の一文を追加し、システムを再起動する。 # echo 'kern.racct.enable="1"' >> /boot/loader.conf # reboot 再起動後、とりあえずrctlコマンドを叩いて以下のように言われればRACCTが機能している。 $ rctl rctl: failed to show rules for '::': Operation not permitted プロセスのCPU利用率を制限する rctlによるリソース制御は、ipfwのようにシステムにルールを追加/削除する形で行う。 プロセスのCPU利用率制限ルールは次のようになる。 rctl -a process:プロセスID:pcpu:deny=CPUを利用させない割合 pcpu(割合によるCPU資源の割り当て)はFreeBSD 10から使える機能のようだ。 実際に指定してみた例。ありったけのCPUリソースを持っていくプログラムminerdを、左が制限なし、右がrctlでdeny=50とした時のtopの図。 rctlでCPUリソースが制限されている様子が分かる。 挙動を見る限り、ある程度のスパンの平均を指定値に近づける戦略が取られているようだ。スクショではminerdへのCPU割り当てが0%と100%を行ったり来たりの極端な挙動となっているが、継続的に30~70%を割り当てて平均50%とする制御方法も確認した。どうのような条件で、制御方法に差が生じるのかは不明。 また、システム全体が高負荷となっている場合の挙動も未確認なので、利用する際は各自テストされたし。 参考サイト rctl(8) Hierarchical_Resource_Limits - FreeBSD Wiki SummerOfCode2012/CPULimits - FreeBSD Wiki FreeBSDのコレ知ってる?(1):自由な設定が可能な最新リソース制御機能 (1/2) - @IT freebsd/limit_cpu_usage_of_process_by_rctl.txt 最終更新: 2017-11-20 19:55by Decomo