OpenBSD はスワップ領域を使用していないのにメモリ不足になる

OpenBSD はスワップ領域を使用していないのにメモリ不足になる

私は OpenBSD (5.6 amd64) の新規インストールで作業しています。Boost ライブラリをビルドしようとしているのですが、cc1plus のメモリ不足エラーが発生して、コンパイルが失敗することが多々あります。

スワップを増やすとこの問題が解決できるとどこかで読んだことがあります。しかし、私の場合はうまくいきませんでした。現在、4GBのスワップを設定していますが、どれも使われていません。Swapctlは常に次のように表示します。

total: 8390592 512-blocks allocated, 0 used, 8390592 available

コンパイルが失敗しても、状況は同じです。

私のインストールには、言及すべき珍しい点があります。USB スティックにインストールされており、softraid0 方式でディスク全体の暗号化を使用しています。そのため、/dev/sd1b は 4g のスワップ、/dev/sd1a は RAID、/dev/sd2 (暗号化された RAID) はインストーラーによって通常どおりにパーティション分割されていますが、スワップはありません。

私の質問は、コンパイラがメモリ不足になっても、スワップ領域がまったく使用されないのはなぜかということです。

答え1

デフォルトでは、OpenBSD はプロセスが無限のメモリを使用することを許可しません。これらの制限は で定義されています/etc/login.conf

これらの制限に達すると、OS 全体にはまだ十分なメモリが残っているにもかかわらず、メモリ不足エラーが発生します。ほとんどの場合、1 つの不正なプロセスがすべてのメモリを消費してシステムをダウンさせることはないことから、これは問題ありません。ただし、場合によっては、これが邪魔になることがあります。幸い、これを変更できます。

答え2

自分自身をグループに追加することで、ある程度の牽引力が得られるかもしれませんstaff。そのグループのメモリ制限は、他のユーザー クラスよりも寛大に設定されているようです。

関連情報