[
https://issues.apache.org/jira/browse/HBASE-12609?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14233004#comment-14233004
]
cuijianwei commented on HBASE-12609:
------------------------------------
[~lhofhansl], the replication will wait the current ship returned to do next
ship, which might consume hundreds of milliseconds, or even several seconds
between two data centers, does this tend to make the available bandwidth
couldn't be used fully?
> Consider bandwidth throttling in
> ReplicationSource.readAllEntriesToReplicateOrNextFile
> --------------------------------------------------------------------------------------
>
> Key: HBASE-12609
> URL: https://issues.apache.org/jira/browse/HBASE-12609
> Project: HBase
> Issue Type: Improvement
> Components: Replication
> Affects Versions: 0.98.8
> Reporter: cuijianwei
> Priority: Minor
>
> The push size in ReplicationSource.shipEdits is controlled by
> 'replicationQueueSizeCapacity' and 'replicationQueueNbCapacity'. When the
> push size is much bigger than throttler's bandwidth(replication throttler is
> enabled), ReplicationSource will have a outgoing bandwidth peak followed by a
> period of sleep controlled by the throttler. How about considering bandwidth
> throttling in ReplicationSource.readAllEntriesToReplicateOrNextFile? such as
> the following code:
> {code}
> // Stop if too many entries or too big
> long bandwidth =
> this.conf.getLong("replication.source.per.peer.node.bandwidth", 0);
> if ((bandwidth > 0 && currentSize > bandwidth) || // ==> also consider
> bandwidth throttling
> currentSize >= this.replicationQueueSizeCapacity ||
> entries.size() >= this.replicationQueueNbCapacity) {
> break;
> }
> {code}
> Then, ReplicationSource will have more steady outgoing bandwidth.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)