
我正在使用全新安裝的 OpenBSD (5.6 amd64)。我正在嘗試建立 Boost 庫,但相當多的編譯因 cc1plus 記憶體不足錯誤而失敗。
我在其他地方讀到增加交換可以解決這個問題。然而,對我來說這不起作用。目前我已經設定了 4 GB 交換。然而,這些都沒有被使用。 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
。
如果達到這些限制,即使整個作業系統仍然有足夠的剩餘空間,您也會收到記憶體不足的錯誤。大多數情況下,這很好,因為一個惡意進程無法耗盡所有記憶體並使系統崩潰。然而,有時它會成為障礙。幸運的是你可以改變它。
答案2
staff
透過將自己添加到該組中,您也可能會獲得一些關注。該群組的記憶體限制似乎比其他類別的使用者設定得更寬鬆。