
私は 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
。そのグループのメモリ制限は、他のユーザー クラスよりも寛大に設定されているようです。