...
위 에서 설명한 바와 같이 처리 속도를 추정하기 위해 I/O 서브시스템과 네트워크 대역폭에 대해 고려하여 추정합니다.
이론적으로는 두 요소의 요소 각각의 최대값 중에서 최소값을 작은값을 최대 처리 속도로 추정할 수 있으며, 이 값에 오버헤드를 약 3% 정도로 가정해서 추산합니다.
...
처리량 최적화 튜닝
bsr의 성능에 영향을 줄 수 있는 몇 가지 구성 옵션 들 중 몇 가지 권장할 만한 사항들을 소개합니다. 하지만 성능은 하드웨어에 크게 좌우되기 때문에 여기서 설명한 옵션들을 조정한 효과는 시스템마다 다를 수 있습니다. 따라서 이러한 권장사항들이 모든 성능 병목을 해결해주는 절대적인 요소는 아닙니다.
max-req-
...
write-
...
count
Primary 노드의 I/O request 버퍼 큐(req-buf)의 최대 크기를 지정합니다. 이 버퍼는 로컬 디스크로 I/O 가 발생되면 해당 I/O 를 1차적으로 큐잉하기 위한 장소로서 TCP 송신버퍼로 I/O Request 가 넘겨지기 이전 시점에 1차 버퍼링을 위한 용도로 사용됩니다.
...
I/O 서브시스템의 수행 시간은 주로 디스크의 회전속도(RPM)에 의해 정해집니다. 따라서 RPM이 더 빠른 디스크를 사용하는 것이 수행 시간을 개선할 수 있는 올바른 접근 방법입니다.요즘은 SSD 저장장치를 많이 사용하므로 fixed 타입의 하드디스크의 사용은 많이 줄어 들었지만 RPM 이 높은 디스크를 사용해야 하는 것은 좋은 성능을 위한 필수 조건 입니다. 마찬가지로 배터리 장착 쓰기 캐시(battery-backed write cache-BBWC)를 사용하는 경우도 쓰기시간을 줄일 수 있습니다. 최근 대부분의 스토리지 장비에서는 이런 캐시가 장착되어 있고 읽기 쓰기 캐시 비율을 관리자가 설정할 수 있습니다. 쓰기 I/O의 성능을 높이려면 읽기 캐시를 없애고 쓰기 캐시에 모두 사용할 것을 권장합니다.
...
특히 Windows 에서 TCP의 기본 속성인 지연 응답(Delayed ACK)은 전송 최적화에는 도움이 되지만 지연시간에는 지연시간에 나쁜 영향을 주기 때문에 수동으로 비활성화해 주어야 합니다. bsr 이 최초 설치될 때에는 이것을 설치과정 중에 자동 스크립트로 수행해 주지만 이후 랜카드 교체가 있을 경우에는 다시 이 작업을 수동으로 직접 수행해 주어야 해야 합니다.
다음은 네트워크 인터페이스에서 이 옵션을 비활성화하는 명령이며 리소스 단위로 제어할 수 있습니다인터페이스의 Delayed Ack를 비활성화하는 명령입니다. ip 주소나 guid 로 인터페이스를 지정합니다.
|
이 명령은 윈도우즈 전용명령이며 윈도우즈 레지스트리에 TCP 옵션값을 설정하고 네트워크 인터페이스에 해당 내용을 적용합니다. 이 옵션이 잘 적용되어 있는지 확인하려면 아래 경로의 레지스트리 내용을 확인하면 됩니다.
...
TcpAckFrequency(REG_DWORD) = 1
Info |
---|
리눅스의 Delayed Ack 비활성화는 bsr 엔진의 코드 수준에서 구현합니다TCP 지연ACK 속성은 OS 기본값을 사용합니다. |
가속 버퍼
bsr 은 비동기 복제에서 로컬 I/O 의 완료를 빠르게 처리하기 위해 로컬 I/O 와 송신버퍼 사이에서 가속버퍼를 가속버퍼(accelbuf)를 통한 2중 버퍼링을 구현합니다.(1.7 이상) 이 가속버퍼는 로컬 I/O의 지연을 최소화 하고 특히 4KB 이하의 I/O 에 대한 지연을 최적화 합니다. 4KB 이하의 로컬 I/O 가 빈번하게 발생하는 환경일 경우 가속버퍼를 통해 I/O 지연을 최적화할 수 있습니다통한 최적화 구성을 권장합니다.
가속버퍼의 크기는 기본 10MB 이며 최대 2GB 까지 지정할 수 있습니다.
...