초메모리 메모리 환경에서 하스켈 스택 빌드용 스왑 공간 늘리기

2908 단어 하스켈

문제



GCE(Google Compute Engine)의 f1-micro(vCPU x 1, 메모리 0.6GB) 무료 인스턴스로 메모리가 부족해, Hello World조차 stack build 할 수 없다.

Haskell은 빌드하는 것만으로도 메모리가 4GB 필요하다.

솔루션 A


  • 메모리를 16GB 정도로 한다

  • 솔루션 B


  • 스왑 영역 만들기
  • swap을 ON으로 한다
  • 빌드
  • 굉장히 오랜 시간 빌드가 끝날 때까지 기다린다
  • 빌드가 끝나면 OFF로 설정

  • 스왑 영역용 파일 만들기



    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
    

    스왑 확인



    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

    좋은 웹페이지 즐겨찾기