Package net.i2p.router.transport
Class FIFOBandwidthRefiller
java.lang.Object
net.i2p.router.transport.FIFOBandwidthRefiller
- All Implemented Interfaces:
Runnable
public class FIFOBandwidthRefiller extends Object implements Runnable
Thread that runs several times a second to "give" bandwidth to
FIFOBandwidthLimiter.
Instantiated by FIFOBandwidthLimiter.
As of 0.8.12, this also contains a counter for outbound participating bandwidth.
This was a good place for it since we needed a thread for it.
Public only for the properties and defaults.
-
Field Summary
Fields Modifier and Type Field Description static intDEFAULT_BURST_SECONDSstatic intDEFAULT_INBOUND_BANDWIDTHstatic intDEFAULT_INBOUND_BURST_BANDWIDTHstatic intDEFAULT_OUTBOUND_BANDWIDTHCaution, do not make DEFAULT_OUTBOUND_BANDWIDTH * DEFAULT_SHARE_PCT > 32 without thinking about the implications (default connection limits, for example) of moving the default bandwidth class from L to M, or maybe adjusting bandwidth class boundaries.static intDEFAULT_OUTBOUND_BURST_BANDWIDTHstatic intMAX_OUTBOUND_BANDWIDTHMax for reasonable Bloom filter false positive rate.static intMIN_INBOUND_BANDWIDTHFor now, until there is some tuning and safe throttling, we set the floor at this inbound (KBps)static intMIN_INBOUND_BANDWIDTH_PEAKFor now, until there is some tuning and safe throttling, we set the floor at this during burst (KBps)static intMIN_OUTBOUND_BANDWIDTHFor now, until there is some tuning and safe throttling, we set the floor at this outbound (KBps)static intMIN_OUTBOUND_BANDWIDTH_PEAKFor now, until there is some tuning and safe throttling, we set the floor at this during burst (KBps)static StringPROP_INBOUND_BANDWIDTHstatic StringPROP_INBOUND_BANDWIDTH_PEAKstatic StringPROP_INBOUND_BURST_BANDWIDTHstatic StringPROP_OUTBOUND_BANDWIDTHstatic StringPROP_OUTBOUND_BANDWIDTH_PEAKstatic StringPROP_OUTBOUND_BURST_BANDWIDTH -
Constructor Summary
Constructors Constructor Description FIFOBandwidthRefiller(RouterContext context, FIFOBandwidthLimiter limiter) -
Method Summary
Modifier and Type Method Description (package private) intgetCurrentParticipatingBandwidth()Out bandwidth.(package private) intgetInboundBurstKBytesPerSecond()(package private) intgetInboundKBytesPerSecond()(package private) intgetOutboundBurstKBytesPerSecond()(package private) intgetOutboundKBytesPerSecond()(package private) booleanincrementParticipatingMessageBytes(int size, float factor)We intend to send traffic for a participating tunnel with the given size and adjustment factor.(package private) voidreinitialize()voidrun()(package private) voidshutdown()
-
Field Details
-
PROP_INBOUND_BANDWIDTH
- See Also:
- Constant Field Values
-
PROP_OUTBOUND_BANDWIDTH
- See Also:
- Constant Field Values
-
PROP_INBOUND_BURST_BANDWIDTH
- See Also:
- Constant Field Values
-
PROP_OUTBOUND_BURST_BANDWIDTH
- See Also:
- Constant Field Values
-
PROP_INBOUND_BANDWIDTH_PEAK
- See Also:
- Constant Field Values
-
PROP_OUTBOUND_BANDWIDTH_PEAK
- See Also:
- Constant Field Values
-
DEFAULT_INBOUND_BANDWIDTH
public static final int DEFAULT_INBOUND_BANDWIDTH- See Also:
- Constant Field Values
-
DEFAULT_OUTBOUND_BANDWIDTH
public static final int DEFAULT_OUTBOUND_BANDWIDTHCaution, do not make DEFAULT_OUTBOUND_BANDWIDTH * DEFAULT_SHARE_PCT > 32 without thinking about the implications (default connection limits, for example) of moving the default bandwidth class from L to M, or maybe adjusting bandwidth class boundaries.- See Also:
- Constant Field Values
-
DEFAULT_INBOUND_BURST_BANDWIDTH
public static final int DEFAULT_INBOUND_BURST_BANDWIDTH- See Also:
- Constant Field Values
-
DEFAULT_OUTBOUND_BURST_BANDWIDTH
public static final int DEFAULT_OUTBOUND_BURST_BANDWIDTH- See Also:
- Constant Field Values
-
DEFAULT_BURST_SECONDS
public static final int DEFAULT_BURST_SECONDS- See Also:
- Constant Field Values
-
MIN_INBOUND_BANDWIDTH
public static final int MIN_INBOUND_BANDWIDTHFor now, until there is some tuning and safe throttling, we set the floor at this inbound (KBps)- See Also:
- Constant Field Values
-
MIN_OUTBOUND_BANDWIDTH
public static final int MIN_OUTBOUND_BANDWIDTHFor now, until there is some tuning and safe throttling, we set the floor at this outbound (KBps)- See Also:
- Constant Field Values
-
MIN_INBOUND_BANDWIDTH_PEAK
public static final int MIN_INBOUND_BANDWIDTH_PEAKFor now, until there is some tuning and safe throttling, we set the floor at this during burst (KBps)- See Also:
- Constant Field Values
-
MIN_OUTBOUND_BANDWIDTH_PEAK
public static final int MIN_OUTBOUND_BANDWIDTH_PEAKFor now, until there is some tuning and safe throttling, we set the floor at this during burst (KBps)- See Also:
- Constant Field Values
-
MAX_OUTBOUND_BANDWIDTH
public static final int MAX_OUTBOUND_BANDWIDTHMax for reasonable Bloom filter false positive rate. Do not increase without adding a new Bloom filter size! See util/DecayingBloomFilter and tunnel/BloomFilterIVValidator.- See Also:
- Constant Field Values
-
-
Constructor Details
-
FIFOBandwidthRefiller
FIFOBandwidthRefiller(RouterContext context, FIFOBandwidthLimiter limiter)
-
-
Method Details
-
shutdown
void shutdown()- Since:
- 0.8.8
-
run
public void run() -
reinitialize
void reinitialize() -
getOutboundKBytesPerSecond
int getOutboundKBytesPerSecond() -
getInboundKBytesPerSecond
int getInboundKBytesPerSecond() -
getOutboundBurstKBytesPerSecond
int getOutboundBurstKBytesPerSecond() -
getInboundBurstKBytesPerSecond
int getInboundBurstKBytesPerSecond() -
incrementParticipatingMessageBytes
boolean incrementParticipatingMessageBytes(int size, float factor)We intend to send traffic for a participating tunnel with the given size and adjustment factor. Returns true if the message can be sent within the current share bandwidth limits, or false if it should be dropped.- Parameters:
size- bytesfactor- multiplier of size for the drop calculation, 1 for no adjustment- Returns:
- true for accepted, false for drop
- Since:
- 0.8.12
-
getCurrentParticipatingBandwidth
int getCurrentParticipatingBandwidth()Out bandwidth. Actual bandwidth, not smoothed, not bucketed.- Returns:
- Bps in recent period (a few seconds)
- Since:
- 0.8.12
-