問題
GCE(Google Compute Engine)の f1-micro(vCPU x 1、メモリ 0.6 GB)無料インスタンスでメモリが足りず、Hello World
すらstack build
できない。
Haskell は、ビルドするだけでもメモリが4GB必要らしい。
解決策 A
- メモリを16GBくらいにする
解決策 B
- swap領域を作る
- swapをONにする
- ビルドする
- すごくすごく長い時間ビルドが終わるのを待つ
- ビルドが終わったら、OFFにする
swap領域用のファイルを作る
bash
sudo mkdir -v /var/cache/swap
cd /var/cache/swap
# このddコマンドは、すごく時間がかかる
sudo dd if=/dev/zero of=swapfile bs=1K count=4M
sudo chmod 600 swapfile
sudo mkswap swapfile
swapをONにする
bash
sudo swapon swapfile
swapの確認
bash
swapon -s
swapをOFFにする
bash
sudo swapoff swapfile
パクリスペクト元
- Building Haskell (specifically “lens” library) in a low memory environment
- Build Cabal with "stack build", out of memory in Ubuntu with 1G RAM host.
- How do I add swap after system installation?
おまけ
ddコマンドのオプション
オプション | 意味 |
---|---|
if=/dev/zero |
入力ファイルを /dev/zero にする |
of=swapfile |
出力ファイルを swapfile に指定する |
bs=1K |
ブロックサイズを 1KB にする |
count=4M |
回数を 4M回(400万回) にする |
\0
で埋めた4GB(1KB * 4M)のファイルを作っているみたい。
その他
再起動後もswap領域を有効にしたい場合、 /etc/fstab
をどうにかするらしい。