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.RateAverages;
|
||||||
import net.i2p.stat.RateStat;
|
import net.i2p.stat.RateStat;
|
||||||
import net.i2p.util.Addresses;
|
import net.i2p.util.Addresses;
|
||||||
|
import net.i2p.util.I2PAppThread;
|
||||||
import net.i2p.util.Log;
|
import net.i2p.util.Log;
|
||||||
import net.i2p.util.ObjectCounterUnsafe;
|
import net.i2p.util.ObjectCounterUnsafe;
|
||||||
import net.i2p.util.SystemVersion;
|
import net.i2p.util.SystemVersion;
|
||||||
@@ -50,7 +51,7 @@ import net.i2p.util.Translate;
|
|||||||
* @since 0.9.38 split out from SybilRenderer
|
* @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 RouterContext _context;
|
||||||
private final Log _log;
|
private final Log _log;
|
||||||
@@ -181,6 +182,16 @@ public class Analysis extends JobImpl implements RouterApp {
|
|||||||
/////// begin Job methods
|
/////// begin Job methods
|
||||||
|
|
||||||
public void runJob() {
|
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();
|
long now = _context.clock().now();
|
||||||
_log.info("Running analysis");
|
_log.info("Running analysis");
|
||||||
Map<Hash, Points> points = backgroundAnalysis(_context.getBooleanProperty(PROP_NONFF));
|
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);
|
_log.error("Failed to store analysis", ioe);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
schedule();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/////// end Job methods
|
/////// end Job methods
|
||||||
@@ -391,8 +401,12 @@ public class Analysis extends JobImpl implements RouterApp {
|
|||||||
calculateIPGroups48(ris, points);
|
calculateIPGroups48(ris, points);
|
||||||
|
|
||||||
// Pairwise distance analysis
|
// Pairwise distance analysis
|
||||||
List<Pair> pairs = new ArrayList<Pair>(PAIRMAX);
|
// O(n**2)
|
||||||
calculatePairDistance(ris, points, pairs);
|
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
|
// Distance to our router analysis
|
||||||
// closest to our routing key today
|
// closest to our routing key today
|
||||||
|
Reference in New Issue
Block a user