update for memory observer algorithm

disable dht if memory is less than treshold
after 4 times, maximum 11 minutes between each detection

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@6517 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
lotus 15 years ago
parent a44112b562
commit 713cb26a27

@ -3,5 +3,5 @@ echo This can cause high system load.
echo To abort press CTRL+C. echo To abort press CTRL+C.
echo *** echo ***
pause pause
java -cp lib net.yacy.kelondro.util.OS -m java -cp lib\yacycore.jar net.yacy.kelondro.util.OS -m
pause pause

@ -43,7 +43,9 @@ public class MemoryControl {
private static long lastGC = 0l; private static long lastGC = 0l;
private static long DHTkbytes = 0; private static long DHTkbytes = 0L;
private static long prevDHTtreshold = 0L;
private static int DHTtresholdCount = 0;
private static boolean allowDHT = true; private static boolean allowDHT = true;
/** /**
@ -178,12 +180,27 @@ public class MemoryControl {
return allowDHT; return allowDHT;
} }
public static void setDHTkbytes(long kbytes) { public static void setDHTallowed() {
allowDHT = true;
}
public static void setDHTkbytes(final long kbytes) {
DHTkbytes = kbytes; DHTkbytes = kbytes;
} }
private static void checkDHTrule(long available) { private static void checkDHTrule(final long available) {
if ((available >> 10) < DHTkbytes) allowDHT = false; // disable dht if memory is less than treshold - 4 times, maximum 11 minutes between each detection
if ((available >> 10) < DHTkbytes) {
final long t = System.currentTimeMillis();
if(prevDHTtreshold + 11L /* minutes */ * 60000L > t) {
DHTtresholdCount++;
if(DHTtresholdCount > 3 /* occurencies - 1 */) allowDHT = false;
}
else DHTtresholdCount = 1;
prevDHTtreshold = t;
}
//allowDHT = ((available >> 10) < DHTkbytes) ? false : true; // stupid
} }
/** /**

Loading…
Cancel
Save