Versions Compared

Key

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

...

If your application using bsr is write-intensive and has frequent writes of small size, it is recommended to increase the activity log size. Otherwise, metadata updates will occur frequently and write performance may suffer. The default is 6001following is an example of expanding the AL size to 65001.

Code Block
>bsradm create-md --al-stripe-size-kB 288 r0
...
>bsradm dump-md r0
...
al-stripe-size-4k 72;
...

Specify al-extents and congestion-extents.

Code Block
resource <resource> {
  disk {
    al-extents 6001extents 65001;
    ...
  }
  ...
}
  net {
    congestion-extents     58501;  # 90% of the al-extents
  }
}

sndbuf-size

The transmission buffer implements the optimization of the transmission amount through buffering. Since TCP/IP transmission is an ACK-based protocol, the more the segment is transmitted, the greater the protocol overhead. Therefore, from a network transmission perspective, it is advantageous to collect and send as much data as possible when sending data. Since the transmit buffer implements this part, optimization can be achieved naturally. In particular, in a situation in which a small amount of data is continuously transmitted, the amount of data can be greatly improved by collecting and sending the data to the transmission buffer queue for a certain amount. You should consider optimizing with sndbuf-size in the following situations:

  • When replication target files are divided into small unit files, replication I/O itself occurs as a small unit I/O of 4KB to 8KB.

  • Online Verify in small test units

Latency

It covers latency optimization of bsr. To minimize latency, let's review it in terms of hardware and look at some setup options.

...

If the replication performance is unexpectedly low, you may need to disable these features if you are unable to solve the problem.

Disable TCP Delayed ACK

In particular, Delayed ACK, a basic property of TCP in Windows, helps to optimize transmission bandwidth but has a bad effect on delay time, so it should be disabled manually. When bsr is first installed, this is automatically performed by a script during the installation process, but if the LAN card is replaced later, this task must be performed manually again.

The following is a command to disable Delayed Ack for a network interface. Specify the interface by IP address or guid.

Code Block
bsrcon /nodelayedack <ip address|interface guid>

This command is for Windows only. It sets TCP option values in the Windows registry and applies the contents to the network interface. You can check the registry contents in the path below to see if this option has been applied properly.

HKLM\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\{Interface GUID}\ 

  • TcpAckFrequency(REG_DWORD) = 1

accelbuf-size

bsr implements double buffering in the phase between local I/O and transmission buffer to quickly complete local I/O, and this is called acceleration buffer.

The acceleration buffer was implemented to optimize the delay of local I/O, and especially optimizes the delay for I/O in small units of 4KB or less.

Code Block
resource <resource> {
  disk {
    accelbuf-size 10M;
    ...
  }
  ...
}