Package org.apache.lucene.store
Class RateLimiter.SimpleRateLimiter
- java.lang.Object
-
- org.apache.lucene.store.RateLimiter
-
- org.apache.lucene.store.RateLimiter.SimpleRateLimiter
-
- Enclosing class:
- RateLimiter
public static class RateLimiter.SimpleRateLimiter extends RateLimiter
Simple class to rate limit IO.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.apache.lucene.store.RateLimiter
RateLimiter.SimpleRateLimiter
-
-
Constructor Summary
Constructors Constructor Description SimpleRateLimiter(double mbPerSec)mbPerSec is the MB/sec max IO rate
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description doublegetMbPerSec()The current mb per second rate limit.longpause(long bytes)Pauses, if necessary, to keep the instantaneous IO rate at or below the target.voidsetMbPerSec(double mbPerSec)Sets an updated mb per second rate limit.
-
-
-
Method Detail
-
setMbPerSec
public void setMbPerSec(double mbPerSec)
Sets an updated mb per second rate limit.- Specified by:
setMbPerSecin classRateLimiter
-
getMbPerSec
public double getMbPerSec()
The current mb per second rate limit.- Specified by:
getMbPerSecin classRateLimiter
-
pause
public long pause(long bytes)
Pauses, if necessary, to keep the instantaneous IO rate at or below the target. NOTE: multiple threads may safely use this, however the implementation is not perfectly thread safe but likely in practice this is harmless (just means in some rare cases the rate might exceed the target). It's best to call this with a biggish count, not one byte at a time.- Specified by:
pausein classRateLimiter- Returns:
- the pause time in nano seconds
-
-