Generation Memory Strategy fine tuning

add some log-output in termlist_p

git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@7904 6c8d7289-2bf4-0310-a012-ef5d649a1542
pull/1/head
sixcooler 14 years ago
parent 839f407fe4
commit d40a177c05

@ -29,6 +29,7 @@ import net.yacy.cora.document.ASCII;
import net.yacy.cora.protocol.RequestHeader; import net.yacy.cora.protocol.RequestHeader;
import net.yacy.cora.ranking.Rating; import net.yacy.cora.ranking.Rating;
import net.yacy.kelondro.index.Row; import net.yacy.kelondro.index.Row;
import net.yacy.kelondro.logging.Log;
import de.anomic.search.Segment; import de.anomic.search.Segment;
import de.anomic.search.Segments; import de.anomic.search.Segments;
import de.anomic.search.Switchboard; import de.anomic.search.Switchboard;
@ -39,6 +40,7 @@ public class termlist_p {
public static serverObjects respond(final RequestHeader header, final serverObjects post, final serverSwitch env) { public static serverObjects respond(final RequestHeader header, final serverObjects post, final serverSwitch env) {
final Log log = new Log("TERMLIST");
final serverObjects prop = new serverObjects(); final serverObjects prop = new serverObjects();
final Switchboard sb = (Switchboard) env; final Switchboard sb = (Switchboard) env;
Segment segment = null; Segment segment = null;
@ -50,10 +52,10 @@ public class termlist_p {
if (segment == null) segment = sb.indexSegments.segment(Segments.Process.PUBLIC); if (segment == null) segment = sb.indexSegments.segment(Segments.Process.PUBLIC);
final Iterator<Rating<byte[]>> i = segment.termIndex().referenceCountIterator(null, false); final Iterator<Rating<byte[]>> i = segment.termIndex().referenceCountIterator(null, false);
Rating<byte[]> e; Rating<byte[]> e;
int c = 0; int c = 0, termnumber = 0;
byte[] termhash, maxterm = null; byte[] termhash, maxterm = null;
long count, maxcount = 0, totalmemory = 0; long count, mem, maxcount = 0, totalmemory = 0;
int termnumber = 0; String hstring;
final Row referenceRow = segment.termIndex().referenceRow(); final Row referenceRow = segment.termIndex().referenceRow();
final int rowsize = referenceRow.objectsize; final int rowsize = referenceRow.objectsize;
final ArrayList<byte[]> deleteterms = new ArrayList<byte[]>(); final ArrayList<byte[]> deleteterms = new ArrayList<byte[]>();
@ -68,17 +70,21 @@ public class termlist_p {
if (count < mincount) continue; if (count < mincount) continue;
termhash = e.getObject(); termhash = e.getObject();
if (delete) deleteterms.add(termhash); if (delete) deleteterms.add(termhash);
prop.put("terms_" + c + "_termhash", ASCII.String(termhash)); hstring = ASCII.String(termhash);
mem = 20 + count * rowsize;
prop.put("terms_" + c + "_termhash", hstring);
prop.put("terms_" + c + "_count", count); prop.put("terms_" + c + "_count", count);
prop.put("terms_" + c + "_memory", 20 + count * rowsize); prop.put("terms_" + c + "_memory", mem);
log.logWarning("termhash: " + hstring + " | count: " + count + " | memory: " + mem);
c++; c++;
totalmemory += 20 + count * rowsize; totalmemory += mem;
} }
if (delete) { if (delete) {
for (final byte[] t: deleteterms) { for (final byte[] t: deleteterms) {
try { try {
segment.termIndex().delete(t); segment.termIndex().delete(t);
} catch (final IOException e1) { } catch (final IOException e1) {
log.logWarning("Error deleting " + ASCII.String(t), e1);
e1.printStackTrace(); e1.printStackTrace();
} }
} }
@ -89,6 +95,11 @@ public class termlist_p {
prop.put("termnumber", termnumber); prop.put("termnumber", termnumber);
prop.put("totalmemory", totalmemory); prop.put("totalmemory", totalmemory);
log.logWarning("finished termlist_p -> terms: " + c);
log.logWarning("maxterm: "+ (maxterm == null ? "" : ASCII.String(maxterm)));
log.logWarning("maxcount: " + maxcount);
log.logWarning("termnumber: " + termnumber);
log.logWarning("totalmemory: " + totalmemory);
// return rewrite properties // return rewrite properties
return prop; return prop;
} }

@ -115,14 +115,16 @@ public class GenerationMemoryStrategy extends MemoryStrategy {
* @return bytes available to allocate in Eden Space (Young Generation) * @return bytes available to allocate in Eden Space (Young Generation)
*/ */
private final long youngAvailable() { private final long youngAvailable() {
return youngUsage(true).getCommitted() - youngUsage(true).getUsed(); final MemoryUsage usage = youngUsage(true);
return usage.getCommitted() - usage.getUsed();
} }
/** /**
* @return bytes available to allocate in Tenured Space (Old Generation) * @return bytes available to allocate in Tenured Space (Old Generation)
*/ */
private final long oldAvailable() { private final long oldAvailable() {
return oldUsage(true).getCommitted() - oldUsage(true).getUsed(); final MemoryUsage usage = oldUsage(true);
return usage.getCommitted() - usage.getUsed();
} }
/** /**

Loading…
Cancel
Save