Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • 시스템은 커널 설정에 따라 다르지만 통상 메모리 사용량이 70% 를 넘을 때 가상메모리 페이징을 시작하며 페이징 동작은 시작합니다. 페이징이 동작하면 시스템 I/O 성능의 저하를 가져옵니다. 성능이 저하된 시스템에서 복제가 동작하는 것을 방지하기 위해선 저하가 발생하므로 상시 30% 이상의 물리메모리 여유 공간을 확보하여 페이징 발생이 억제되도록 구성하는 게 복제에 유리합니다.

  • BSR 에서 사용하는 메모리는 주로 버퍼링 용도로 비페이징 되는 물리메모리를 기본으로 하며 Windows의 경우 필요하고, BSR 설정의 최대 쓰기 요청값(max-req-write-count)과 송신버퍼의 크기에 따라 최대 메모리 사용량을 결정합니다결정됩니다. 아래는 Windows 환경의 예시입니다.

    • 송신버퍼 없는 동기방식의 경우는

      • 쓰기 요청 기본 설정(1만)에서 1리소스 당 최대 1.5GB를 사용합니다.

      • 쓰기 요청 최대 설정(10만)에서 1리소스 당 최대 3GB를 사용합니다.

    • 송신버퍼 1GB 설정에서 비동기 방식의 경우는

      • 쓰기 요청 기본 설정에서 1리소스 당 최대 2.5GB를 사용합니다.

      • 쓰기 요청 최대 설정에서 1리소스 당 최대 4GB를 사용합니다.

예를 들어, 64GB의 물리메모리를 가진 서버의 경우 약 20GB(30%)의 메모리 여유공간이 필요하며 사용된 메모리 공간 중 비동기방식 기본설정에서 1 리소스당 최대 2.5GB의 메모리 공간을 요구합니다공간이 요구됩니다.

  • 만약 30% 수준의 메모리 여유공간 확보가 불가한 상황이라면 페이징 발생에 따른 기본적인 I/O의 성능저하는 감수해야 합니다.

...

  • 복제에서 필요로 하는 1 리소스 당 3~4GB NP 메모리 사용량은 여유공간으로 유지시켜 주어야 합니다. 그렇지 않을 경우

...

  • 메모리가 부족해져서 장애로 이어질 수 있습니다.

송신버퍼 크기

로컬의 송신(TX) 버퍼의 크기는 (시간 당 전송대역의 최대 크기 * 전송 타임아웃) 의 공식으로 구합니다. 1Gbps 대역의 경우 (약 100MB/s * 5s) = 500MB 가 되므로 여유 있게 500MB ~ 1GB 정도로 설정하면 됩니다.

Info
  • 페이징이 발생하는 시점은 시스템의 메모리 용량, 플랫폼, OS 버전에 따라 달라질 수 있습니다. 위에서 설명한 70%는 통상의 수치이므로 환경에 맞게 이해할 필요가 있습니다.

  • 리눅스에서의 BSR 메모리 사용량은 윈도우즈에 비해 비슷하거나 덜 사용합니다. 복제 아키텍처에서 다소 차이가 있어서 윈도우즈에서 메모리를 좀 더 사용합니다.

Info

최근 가상화 환경에서 VM 을 통한 복제 구성이 보편화 되어 가고 있습니다. 이런 환경의 특징은 개별 VM에 할당된 CPU 나 메모리 자원이 충분하게 할당 되지는 않는 다는 점 입니다. 예를 들어 개별 VM이 2core, 2~4GB 메모리로 구성될 경우 bsr 의 최소 구성사양에 충족되지 못할 수 있습니다. 이렇게 저사양의 VM 으로 복제 환경이 구성될 경우 bsr 엔진 내부의 성능 지연과 노드 간의 네트워크 통신(keep alive) 지연이 빈번하게 발생될 가능성이 높아집니다. 기본적인 동작에는 문제가 없지만 I/O 부하가 커지거나 시스템의 HW 계층의 인터럽트 발생빈도가 높아지게 되면 VM 전반의 성능이 하락되고 그에 따라 bsr 도 동작에 영향을 받게 됩니다. 결론적으로 저 사양의 VM 에서 복제 환경을 구축하는 것에는 제약이 따른다는 것 입니다.

이 문제에 대응할 방법은 시스템 구성 자원을 넉넉하게 확보하는 방법 이외에는 별다른 해결책이 없습니다.

디스크

기본 설치 공간

bsr 의 바이너리 실행 모듈들을 모두 설치하는데 약 200MB 정도가 필요하고 bsr의 로그를 저장하기 위해 1GB 가 요구되어 약 2GB 의 디스크 설치 공간을 필요로 합니다.

...