[
https://issues.apache.org/jira/browse/HBASE-17331?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15763462#comment-15763462
]
ChiaPing Tsai commented on HBASE-17331:
---------------------------------------
bq. If no threshold,
ThrottledInputStream isn't used by ExportSnapshot if no threshold. (config it
by snapshot.export.map.bandwidth.mb)
bq. won't we burn more CPU w/ this patch (timeout is 0), at least more than we
used to?
For each read(), old ThrottledInputStream sleeps/wakes/checks for many times
for controlling the throughput. After this patch, ThrottledInputStream
sleeps/wakes/checks only once. So we can reduce CPU usage.
> Avoid busy waiting in ThrottledInputStream
> ------------------------------------------
>
> Key: HBASE-17331
> URL: https://issues.apache.org/jira/browse/HBASE-17331
> Project: HBase
> Issue Type: Improvement
> Affects Versions: 2.0.0
> Reporter: ChiaPing Tsai
> Assignee: ChiaPing Tsai
> Priority: Minor
> Fix For: 2.0.0
>
> Attachments: HBASE-17331.addendum.patch, HBASE-17331.v0.patch,
> HBASE-17331.v1.patch, HBASE-17331.v2.patch, HBASE-17331.v2.patch
>
>
> {code:title=ThrottledInputStream.java|borderStyle=solid}
> // We can calculate the precise sleep time instead of busy waiting
> private void throttle() throws IOException {
> while (getBytesPerSec() > maxBytesPerSec) {
> try {
> Thread.sleep(SLEEP_DURATION_MS);
> totalSleepTime += SLEEP_DURATION_MS;
> } catch (InterruptedException e) {
> throw new IOException("Thread aborted", e);
> }
> }
> }
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)