Openbsd
OpenBSD 記憶體不足,但未使用交換空間
我正在使用全新安裝的 OpenBSD (5.6 amd64)。我正在嘗試建構 Boost 庫,並且由於 cc1plus 記憶體不足錯誤,很多編譯都失敗了。
我在其他地方讀到增加交換可以解決這個問題。但是,對我來說這行不通。目前我有 4 gig 的交換設置。然而,它甚至都沒有被使用。Swapctl 總是顯示
total: 8390592 512-blocks allocated, 0 used, 8390592 available
即使編譯失敗,這仍然是一樣的。
我應該提到我的安裝有一些不尋常的地方。它安裝在 U 盤上,我通過 softraid0 方法使用了全盤加密。所以我的 /dev/sd1b 是我的 4g 交換,/dev/sd1a 是raid,/dev/sd2(加密的raid)由安裝程序正常分區,除了那裡沒有交換。
我的問題是為什麼我的交換空間根本沒有被使用,即使編譯器記憶體不足?
預設情況下,OpenBSD 不允許程序使用無限記憶體。這些限制在 中定義
/etc/login.conf
。如果你達到了這些限制,即使整個作業系統仍然有足夠的餘量,你也會得到記憶體不足的錯誤。大多數時候這很好,因為一個流氓程序將無法吸收所有記憶體並使系統陷入癱瘓。但是,有時它會妨礙您。幸運的是你可以改變它。
您也可以通過將自己添加到
staff
群組中來獲得一些吸引力。該組的記憶體限制似乎比其他類別的使用者設置得更慷慨。