forked from I2P_Developers/i2p.i2p
Sybil: Thread analyzer at reduced priority
Don't do pair distance check unless enough memory
This commit is contained in:
@@ -40,6 +40,7 @@ import net.i2p.stat.Rate;
|
||||
import net.i2p.stat.RateAverages;
|
||||
import net.i2p.stat.RateStat;
|
||||
import net.i2p.util.Addresses;
|
||||
import net.i2p.util.I2PAppThread;
|
||||
import net.i2p.util.Log;
|
||||
import net.i2p.util.ObjectCounterUnsafe;
|
||||
import net.i2p.util.SystemVersion;
|
||||
@@ -50,7 +51,7 @@ import net.i2p.util.Translate;
|
||||
* @since 0.9.38 split out from SybilRenderer
|
||||
*
|
||||
*/
|
||||
public class Analysis extends JobImpl implements RouterApp {
|
||||
public class Analysis extends JobImpl implements RouterApp, Runnable {
|
||||
|
||||
private final RouterContext _context;
|
||||
private final Log _log;
|
||||
@@ -181,6 +182,16 @@ public class Analysis extends JobImpl implements RouterApp {
|
||||
/////// begin Job methods
|
||||
|
||||
public void runJob() {
|
||||
Thread t = new I2PAppThread(this, getDisplayName());
|
||||
t.setPriority(Thread.MIN_PRIORITY);
|
||||
t.start();
|
||||
schedule();
|
||||
}
|
||||
|
||||
/**
|
||||
* @since 0.9.58
|
||||
*/
|
||||
public void run() {
|
||||
long now = _context.clock().now();
|
||||
_log.info("Running analysis");
|
||||
Map<Hash, Points> points = backgroundAnalysis(_context.getBooleanProperty(PROP_NONFF));
|
||||
@@ -194,7 +205,6 @@ public class Analysis extends JobImpl implements RouterApp {
|
||||
_log.error("Failed to store analysis", ioe);
|
||||
}
|
||||
}
|
||||
schedule();
|
||||
}
|
||||
|
||||
/////// end Job methods
|
||||
@@ -391,8 +401,12 @@ public class Analysis extends JobImpl implements RouterApp {
|
||||
calculateIPGroups48(ris, points);
|
||||
|
||||
// Pairwise distance analysis
|
||||
List<Pair> pairs = new ArrayList<Pair>(PAIRMAX);
|
||||
calculatePairDistance(ris, points, pairs);
|
||||
// O(n**2)
|
||||
long sz = ris.size();
|
||||
if (sz * sz < SystemVersion.getMaxMemory() / 10) {
|
||||
List<Pair> pairs = new ArrayList<Pair>(PAIRMAX);
|
||||
calculatePairDistance(ris, points, pairs);
|
||||
}
|
||||
|
||||
// Distance to our router analysis
|
||||
// closest to our routing key today
|
||||
|
Reference in New Issue
Block a user