同じサーバーでプロセスのリソース(CPU、メモリ、およびネットワーク帯域幅)の消費を制限したいです。プロセスをあるサーバーから別のサーバーに移行できることをお勧めします。
軽い仮想化を探していると思います。私はLXCが良い選択だと思いました。ただし、2.6.18カーネルはLXCをサポートしていません。共有クラスタなので、カーネルをアップグレードできません。そして、「setrlimit」システムコールは、仮想マシンのようにリソース消費を制限するのではなく、予算に達したときだけプロセスに信号を送るようです(間違っている場合は訂正してください)。このタスクに関する提案はありますか?
ありがとうございます!
答え1
これらのリソースの一部は pam_limits モジュールによって制限される場合があります。これに関する主な文書は以下にあります。
man limits.conf
すべてのRed Hatタイプシステムの設定ファイルは/etc/security/limits.confです。
おそらく最初に理解する必要があるのは、ハード制限とソフト制限の関係です。また、見なければならないいくつかのディレクティブは次のとおりです。
- CPU
- メモリロック
- 核兵器
マニュアルページの下部にいくつかの例があります。
ネットワーク帯域幅に関して、これは実行するのがより困難です(しかし不可能ではありません)。基本的なアイデアは、iptablesを介してUIDに基づいてアクセスを制限し、トラフィック制御(tc)を介してトラフィックを実行することです。
man tc