私はこの問題についての質問を2時間読んでいましたが、それでも誤解があります。
私はこのプロセスを持っています:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1452 0.4 1.8 1397012 19308 ? Sl 04:23 3:48 ./transaction_server
これは19.3Mb
、システムメモリ1.8%
全体のシステム常駐メモリ(私はスワップファイルがない)の使用を示してい1GB
ます。仮想サイズは1.39GB
?!?です。私はそれulimit -m
が機能しないことを読んだ。人々は、ulimit -v
例えばプロセスに仮想メモリを設定することを使用します。この仮想メモリはVSZがリストされているものps
ですか?このプロセスが100MB
システムメモリを最大で使用するように制限する場合に設定する必要がある値。私はドキュメントを読みましたがsetrlimit
、これは合法のようです:
RLIMIT_AS
This is the maximum size of a process' total available memory,
in bytes. If this limit is exceeded, the malloc() and mmap()
functions shall fail with errno set to [ENOMEM]. In addition,
the automatic stack growth fails with the effects outlined above.
ただし、ドキュメントの他のバージョンでは、このRLIMIT_AS
パラメーターは仮想メモリサイズを設定します。真実は何?