[ 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)