web-dev-qa-db-ja.com

「ulimit-l」とはどういう意味ですか?

マンページによると、ulimitの「-l」は「メモリにロックできる最大サイズ」を意味します。この文は正確にはどういう意味ですか?実行中のプログラムにどのように影響しますか?

22
Eric Yung

ロックされているメモリはページアウトされない場合があります。これにより、他のプロセスで使用できるメモリの量が減少します。この設定は、ロックできるメモリの量を制限します。

18

これにより、 mlock でスワップ不可にできるメモリの量が制限されます。

setrlimit のマンページには次のように書かれています。

RAMにロックできるメモリの最大バイト数。実際には、この制限はシステムページサイズの最も近い倍数に切り捨てられます。この制限は、mlock(2)とmlockall(2)、およびmmap(2)のMAP_LOCKED操作に影響します。 Linux 2.6.9以降、shmctl(2)SHM_LOCK操作にも影響します。この操作では、呼び出しプロセスの実際のユーザーIDによってロックされる可能性のある共有メモリセグメント(shmget(2)を参照)の合計バイト数に最大値が設定されます。 shmctl(2)SHM_LOCKロックは、mlock(2)、mlockall(2)、およびmmap(2)MAP_LOCKEDによって確立されたプロセスごとのメモリロックとは別に考慮されます。プロセスは、これら2つのカテゴリのそれぞれで、この制限までバイトをロックできます。 2.6.9より前のLinuxカーネルでは、この制限により、特権プロセスによってロックされる可能性のあるメモリの量が制御されていました。 Linux 2.6.9以降、特権プロセスがロックできるメモリの量に制限はありません。代わりに、この制限によって、非特権プロセスがロックできるメモリの量が決まります。

8
brian-brazil