web-dev-qa-db-ja.com

Linuxで特定のユーザーにRAM制限を設定するにはどうすればよいですか?

特定のユーザーにRAM制限を設定するにはどうすればよいですか?/etc/security/limits.confファイルを編集しようとしましたが、そこでRAM制限がありますが、設定された制限を超えるユーザープロセスが引き続き表示されます。

制限がKBで指定されていることを知っているので、間違った数値を使用していません。

たとえば、ユーザーが2,048mb(または2,097,152kb)を超えるメモリを使用できないように設定しようとしていますが、プログラムは2500mbのように使用します。

仮想マシンなしでこれを実現する方法はありますか?また、オプションとして仮想マシンを実行しないようにしています。

これが私の /etc/sysconfig/limits.conf です。

また、私が実行しているカーネルバージョンは2.6.18であるため、RSS制限は無視されます。

3
Trey G.

メモリに関連する制御は、プロセスごとのリソース制限を介して実施されます。 Linuxでは、メモリに関連するプロセス制限が長い間部分的に破られてきました。例:

$ (ulimit -m 1; emacs)

Emacsが起動した場合、明らかにRSSリソースの制限は適用されていません。私が見た制限は、データセグメントとスタックの制限です。

$ (ulimit -d 1; emacs)
emacs: Memory exhausted--use M-x save-some-buffers RET
$ (ulimit -s 1; emacs)
$

したがって、「データ」と「スタック」のメモリ制限のみを使用してください。これらは強制されているようです。

1
Kyle Jones