Skip to content

Commit

Permalink
enhancements to memory menue
Browse files Browse the repository at this point in the history
git-svn-id: https://svn.berlios.de/svnroot/repos/yacy/trunk@762 6c8d7289-2bf4-0310-a012-ef5d649a1542
  • Loading branch information
orbiter committed Sep 21, 2005
1 parent 150bd33 commit 2f732e3
Show file tree
Hide file tree
Showing 4 changed files with 107 additions and 84 deletions.
93 changes: 55 additions & 38 deletions htroot/PerformanceMemory_p.html
Expand Up @@ -12,32 +12,44 @@ <h2>Performance Settings for Memory</h2>


<p>
<div class=small><b>Available Memory:</b></div>
<div class=small><b>Memory Usage:</b></div>
<table border="0" cellpadding="2" cellspacing="1">
<tr class="TableHeader" valign="bottom">
<td class="small">Type</td>
<td class="small">After Startup</td>
<td class="small">After Initializations</td>
<td class="small">Now</td>
<td class="small">&nbsp;<br>Type</td>
<td class="small">After Startup<br>&nbsp;</td>
<td class="small">After Initializations<br>before GC</td>
<td class="small">After Initializations<br>after GC</td>
<td class="small">Now<br>&nbsp;</td>
<td class="small">Description<br>&nbsp;</td>
</tr>

<tr class="TableCellDark">
<td class="TableHeader" align="left">Free</td>
<td class="small" align="right">#[memoryFreeAfterStartup]# bytes</td>
<td class="small" align="right">#[memoryFreeAfterInit]# bytes</td>
<td class="small" align="right">#[memoryFreeNow]# bytes</td>
<td class="TableHeader" align="left">Max</td>
<td class="small" align="center" colspan="4">#[memoryMax]# MByte</td>
<td class="small" align="left">maximum memory that the JVM will attempt to use</td>
</tr>
<tr class="TableCellDark">
<td class="TableHeader" align="left">Total</td>
<td class="small" align="right">#[memoryTotalAfterStartup]# bytes</td>
<td class="small" align="right">#[memoryTotalAfterInit]# bytes</td>
<td class="small" align="right">#[memoryTotalNow]# bytes</td>
<td class="small" align="right">#[memoryTotalAfterStartup]# KByte</td>
<td class="small" align="right">#[memoryTotalAfterInitBGC]# KByte</td>
<td class="small" align="right">#[memoryTotalAfterInitAGC]# KByte</td>
<td class="small" align="right">#[memoryTotalNow]# MByte</td>
<td class="small" align="left">total memory taken from the OS</td>
</tr>
<tr class="TableCellDark">
<td class="TableHeader" align="left">Max</td>
<td class="small" align="right">#[memoryMaxAfterStartup]# bytes</td>
<td class="small" align="right">#[memoryMaxAfterInit]# bytes</td>
<td class="small" align="right">#[memoryMaxNow]# bytes</td>
<td class="TableHeader" align="left">Free</td>
<td class="small" align="right">#[memoryFreeAfterStartup]# KByte</td>
<td class="small" align="right">#[memoryFreeAfterInitBGC]# KByte</td>
<td class="small" align="right">#[memoryFreeAfterInitAGC]# KByte</td>
<td class="small" align="right">#[memoryFreeNow]# MByte</td>
<td class="small" align="left">free memory in the JVM within total amount</td>
</tr>
<tr class="TableCellDark">
<td class="TableHeader" align="left">Used</td>
<td class="small" align="right">#[memoryUsedAfterStartup]# KByte</td>
<td class="small" align="right">#[memoryUsedAfterInitBGC]# KByte</td>
<td class="small" align="right">#[memoryUsedAfterInitAGC]# KByte</td>
<td class="small" align="right">#[memoryUsedNow]# MByte</td>
<td class="small" align="left">used memory in the JVM within total amount</td>
</tr>
</table>
</p>
Expand All @@ -47,18 +59,23 @@ <h2>Performance Settings for Memory</h2>
<table border="0" cellpadding="2" cellspacing="1">
<form action="PerformanceMemory_p.html" method="post" enctype="multipart/form-data">
<tr class="TableHeader" valign="bottom">
<td class="small">Database<br></td>
<td class="small">Chunk Size<br>(bytes)</td>
<td class="small">#Needed Slots<br>(=&nbsp;DB&nbsp;Size)</td>
<td class="small">#Empty Slots<br>&nbsp;</td>
<td class="small">#Used Slots<br>High Priority</td>
<td class="small">#Used Slots<br>Medium Priority</td>
<td class="small">#Used Slots<br>Low Priority</td>
<td class="small">Used<br>Size</td>
<td class="small">Assigned<br>Max-Size</td>
<td class="small">Recommended<br>Max-Size</td>
<td class="small">Optimum<br>Max-Size</td>
<td class="small">Description<br>&nbsp;</td>
<td class="small" rowspan="2">Database<br>&nbsp;</td>
<td class="small" rowspan="2">Chunk Size<br>(bytes)</td>
<td class="small" colspan="5">#Slots</td>
<td class="small" colspan="4">Memory Occupation (KBytes)</td>
<td class="small" rowspan="2">Description<br>&nbsp;</td>
</tr>

<tr class="TableHeader" valign="bottom">
<td class="small">Needed<br>(=&nbsp;DB&nbsp;Size)</td>
<td class="small">Empty<br>&nbsp;</td>
<td class="small">Used<br>High Prio</td>
<td class="small">Used<br>Medium Prio</td>
<td class="small">Used<br>Low Prio</td>
<td class="small">Used Now</td>
<td class="small">Assigned Max</td>
<td class="small">Good Max</td>
<td class="small">Best Max</td>
</tr>

<tr class="TableCellDark">
Expand All @@ -70,7 +87,7 @@ <h2>Performance Settings for Memory</h2>
<td class="small" align="right">#[slmedRWI]#</td>
<td class="small" align="right">#[sllowRWI]#</td>
<td class="small" align="right">#[usedRWI]#</td>
<td class="small" align="right"><input name="ramCacheRWI" type="text" align="right" size="8" maxlength="9" value="#[ramCacheRWI]#"> bytes</td>
<td class="small" align="right"><input name="ramCacheRWI" type="text" align="right" size="5" maxlength="6" value="#[ramCacheRWI]#"></td>
<td class="small" align="right">#[goodRWI]#</td>
<td class="small" align="right">#[bestRWI]#</td>
<td class="small" align="left">The Assortment Cluster stores most of the page indexes.
Expand All @@ -87,7 +104,7 @@ <h2>Performance Settings for Memory</h2>
<td class="small" align="right">#[slmedHTTP]#</td>
<td class="small" align="right">#[sllowHTTP]#</td>
<td class="small" align="right">#[usedHTTP]#</td>
<td class="small" align="right"><input name="ramCacheHTTP" type="text" align="right" size="8" maxlength="9" value="#[ramCacheHTTP]#"> bytes</td>
<td class="small" align="right"><input name="ramCacheHTTP" type="text" align="right" size="5" maxlength="6" value="#[ramCacheHTTP]#"></td>
<td class="small" align="right">#[goodHTTP]#</td>
<td class="small" align="right">#[bestHTTP]#</td>
<td class="small" align="left">The Response Header database stores the HTTP heades that other servers send when YaCy retrieves web pages
Expand All @@ -104,7 +121,7 @@ <h2>Performance Settings for Memory</h2>
<td class="small" align="right">#[slmedLURL]#</td>
<td class="small" align="right">#[sllowLURL]#</td>
<td class="small" align="right">#[usedLURL]#</td>
<td class="small" align="right"><input name="ramCacheLURL" type="text" align="right" size="8" maxlength="9" value="#[ramCacheLURL]#"> bytes</td>
<td class="small" align="right"><input name="ramCacheLURL" type="text" align="right" size="5" maxlength="6" value="#[ramCacheLURL]#"></td>
<td class="small" align="right">#[goodLURL]#</td>
<td class="small" align="right">#[bestLURL]#</td>
<td class="small" align="left">This is the database that holds the hash/url - relation and properties regarding the url like load date and server date.
Expand All @@ -120,7 +137,7 @@ <h2>Performance Settings for Memory</h2>
<td class="small" align="right">#[slmedNURL]#</td>
<td class="small" align="right">#[sllowNURL]#</td>
<td class="small" align="right">#[usedNURL]#</td>
<td class="small" align="right"><input name="ramCacheNURL" type="text" align="right" size="8" maxlength="9" value="#[ramCacheNURL]#"> bytes</td>
<td class="small" align="right"><input name="ramCacheNURL" type="text" align="right" size="5" maxlength="6" value="#[ramCacheNURL]#"></td>
<td class="small" align="right">#[goodNURL]#</td>
<td class="small" align="right">#[bestNURL]#</td>
<td class="small" align="left">A noticed URL is one that was discovered during crawling but was not loaded yet.
Expand All @@ -136,7 +153,7 @@ <h2>Performance Settings for Memory</h2>
<td class="small" align="right">#[slmedEURL]#</td>
<td class="small" align="right">#[sllowEURL]#</td>
<td class="small" align="right">#[usedEURL]#</td>
<td class="small" align="right"><input name="ramCacheEURL" type="text" align="right" size="8" maxlength="9" value="#[ramCacheEURL]#"> bytes</td>
<td class="small" align="right"><input name="ramCacheEURL" type="text" align="right" size="5" maxlength="6" value="#[ramCacheEURL]#"></td>
<td class="small" align="right">#[goodEURL]#</td>
<td class="small" align="right">#[bestEURL]#</td>
<td class="small" align="left">URLs that cannot be loaded are stored in this database. It is also used for double-checked during crawling.
Expand All @@ -152,7 +169,7 @@ <h2>Performance Settings for Memory</h2>
<td class="small" align="right">#[slmedDHT]#</td>
<td class="small" align="right">#[sllowDHT]#</td>
<td class="small" align="right">#[usedDHT]#</td>
<td class="small" align="right"><input name="ramCacheDHT" type="text" align="right" size="8" maxlength="9" value="#[ramCacheDHT]#"> bytes</td>
<td class="small" align="right"><input name="ramCacheDHT" type="text" align="right" size="5" maxlength="6" value="#[ramCacheDHT]#"></td>
<td class="small" align="right">#[goodDHT]#</td>
<td class="small" align="right">#[bestDHT]#</td>
<td class="small" align="left">This is simply the cache for the seed-dbs (active, passive, potential).
Expand All @@ -169,7 +186,7 @@ <h2>Performance Settings for Memory</h2>
<td class="small" align="right">#[slmedMessage]#</td>
<td class="small" align="right">#[sllowMessage]#</td>
<td class="small" align="right">#[usedMessage]#</td>
<td class="small" align="right"><input name="ramCacheMessage" type="text" align="right" size="8" maxlength="9" value="#[ramCacheMessage]#"> bytes</td>
<td class="small" align="right"><input name="ramCacheMessage" type="text" align="right" size="5" maxlength="6" value="#[ramCacheMessage]#"></td>
<td class="small" align="right">#[goodMessage]#</td>
<td class="small" align="right">#[bestMessage]#</td>
<td class="small" align="left">The Message cache for peer-to-peer messages. Less important.</td>
Expand All @@ -184,7 +201,7 @@ <h2>Performance Settings for Memory</h2>
<td class="small" align="right">#[slmedWiki]#</td>
<td class="small" align="right">#[sllowWiki]#</td>
<td class="small" align="right">#[usedWiki]#</td>
<td class="small" align="right"><input name="ramCacheWiki" type="text" align="right" size="8" maxlength="9" value="#[ramCacheWiki]#"> bytes</td>
<td class="small" align="right"><input name="ramCacheWiki" type="text" align="right" size="5" maxlength="6" value="#[ramCacheWiki]#"></td>
<td class="small" align="right">#[goodWiki]#</td>
<td class="small" align="right">#[bestWiki]#</td>
<td class="small" align="left">The YaCy-Wiki uses a database to store its pages.
Expand All @@ -201,7 +218,7 @@ <h2>Performance Settings for Memory</h2>
<td class="small" align="right">#[slmedNews]#</td>
<td class="small" align="right">#[sllowNews]#</td>
<td class="small" align="right">#[usedNews]#</td>
<td class="small" align="right"><input name="ramCacheNews" type="text" align="right" size="8" maxlength="9" value="#[ramCacheNews]#"> bytes</td>
<td class="small" align="right"><input name="ramCacheNews" type="text" align="right" size="5" maxlength="6" value="#[ramCacheNews]#"></td>
<td class="small" align="right">#[goodNews]#</td>
<td class="small" align="right">#[bestNews]#</td>
<td class="small" align="left">The News-DB stores property-lists for news that are included in seeds.
Expand Down
78 changes: 42 additions & 36 deletions htroot/PerformanceMemory_p.java
Expand Up @@ -59,6 +59,9 @@

public class PerformanceMemory_p {

private static final int KB = 1024;
private static final int MB = 1024 * KB;

private static int[] slt;
private static int req,chk,usd,bst,god;

Expand All @@ -70,91 +73,94 @@ public static serverObjects respond(httpHeader header, serverObjects post, serve
Map defaultSettings = ((post == null) || (!(post.containsKey("submitdefault")))) ? null : serverFileUtils.loadHashMap(defaultSettingsFile);

if ((post != null) && (post.containsKey("submitcache"))) {
sb.setConfig("ramCacheRWI", post.get("ramCacheRWI", "0"));
sb.setConfig("ramCacheHTTP", post.get("ramCacheHTTP", "0"));
sb.setConfig("ramCacheLURL", post.get("ramCacheLURL", "0"));
sb.setConfig("ramCacheNURL", post.get("ramCacheNURL", "0"));
sb.setConfig("ramCacheEURL", post.get("ramCacheEURL", "0"));
sb.setConfig("ramCacheDHT", post.get("ramCacheDHT", "0"));
sb.setConfig("ramCacheMessage", post.get("ramCacheMessage", "0"));
sb.setConfig("ramCacheWiki", post.get("ramCacheWiki", "0"));
sb.setConfig("ramCacheNews", post.get("ramCacheNews", "0"));
sb.setConfig("ramCacheRWI", Long.parseLong(post.get("ramCacheRWI", "0")) * KB);
sb.setConfig("ramCacheHTTP", Long.parseLong(post.get("ramCacheHTTP", "0")) * KB);
sb.setConfig("ramCacheLURL", Long.parseLong(post.get("ramCacheLURL", "0")) * KB);
sb.setConfig("ramCacheNURL", Long.parseLong(post.get("ramCacheNURL", "0")) * KB);
sb.setConfig("ramCacheEURL", Long.parseLong(post.get("ramCacheEURL", "0")) * KB);
sb.setConfig("ramCacheDHT", Long.parseLong(post.get("ramCacheDHT", "0")) * KB);
sb.setConfig("ramCacheMessage", Long.parseLong(post.get("ramCacheMessage", "0")) * KB);
sb.setConfig("ramCacheWiki", Long.parseLong(post.get("ramCacheWiki", "0")) * KB);
sb.setConfig("ramCacheNews", Long.parseLong(post.get("ramCacheNews", "0")) * KB);
}

System.gc();
long memoryFreeNow = Runtime.getRuntime().freeMemory();
long memoryFreeAfterInit = Long.parseLong(sb.getConfig("memoryFreeAfterInit", "0"));
long memoryFreeAfterInitBGC = Long.parseLong(sb.getConfig("memoryFreeAfterInitBGC", "0"));
long memoryFreeAfterInitAGC = Long.parseLong(sb.getConfig("memoryFreeAfterInitAGC", "0"));
long memoryFreeAfterStartup = Long.parseLong(sb.getConfig("memoryFreeAfterStartup", "0"));
long memoryTotalNow = Runtime.getRuntime().totalMemory();
long memoryTotalAfterInit = Long.parseLong(sb.getConfig("memoryTotalAfterInit", "0"));
long memoryTotalAfterInitBGC = Long.parseLong(sb.getConfig("memoryTotalAfterInitBGC", "0"));
long memoryTotalAfterInitAGC = Long.parseLong(sb.getConfig("memoryTotalAfterInitAGC", "0"));
long memoryTotalAfterStartup = Long.parseLong(sb.getConfig("memoryTotalAfterStartup", "0"));
long memoryMaxNow = Runtime.getRuntime().maxMemory();
long memoryMaxAfterInit = Long.parseLong(sb.getConfig("memoryMaxAfterInit", "0"));
long memoryMaxAfterStartup = Long.parseLong(sb.getConfig("memoryMaxAfterStartup", "0"));
long memoryMax = Runtime.getRuntime().maxMemory();

prop.put("memoryFreeNow", memoryFreeNow);
prop.put("memoryFreeAfterInit", memoryFreeAfterInit);
prop.put("memoryFreeAfterStartup", memoryFreeAfterStartup);
prop.put("memoryTotalNow", memoryTotalNow);
prop.put("memoryTotalAfterInit", memoryTotalAfterInit);
prop.put("memoryTotalAfterStartup", memoryTotalAfterStartup);
prop.put("memoryMaxNow", memoryMaxNow);
prop.put("memoryMaxAfterInit", memoryMaxAfterInit);
prop.put("memoryMaxAfterStartup", memoryMaxAfterStartup);
prop.put("memoryUsedAfterStartup", (memoryTotalAfterStartup - memoryFreeAfterStartup) / KB);
prop.put("memoryUsedAfterInitBGC", (memoryTotalAfterInitBGC - memoryFreeAfterInitBGC) / KB);
prop.put("memoryUsedAfterInitAGC", (memoryTotalAfterInitAGC - memoryFreeAfterInitAGC) / KB);
prop.put("memoryUsedNow", (memoryTotalNow - memoryFreeNow) / MB);
prop.put("memoryFreeAfterStartup", memoryFreeAfterStartup / KB);
prop.put("memoryFreeAfterInitBGC", memoryFreeAfterInitBGC / KB);
prop.put("memoryFreeAfterInitAGC", memoryFreeAfterInitAGC / KB);
prop.put("memoryFreeNow", memoryFreeNow / MB);
prop.put("memoryTotalAfterStartup", memoryTotalAfterStartup / KB);
prop.put("memoryTotalAfterInitBGC", memoryTotalAfterInitBGC / KB);
prop.put("memoryTotalAfterInitAGC", memoryTotalAfterInitAGC / KB);
prop.put("memoryTotalNow", memoryTotalNow / MB);
prop.put("memoryMax", memoryMax / MB);

req = switchboard.wordIndex.size();
chk = switchboard.wordIndex.assortmentsCacheChunkSizeAvg();
slt = switchboard.wordIndex.assortmentsCacheFillStatusCml();
calc(); putprop(prop, "RWI");
prop.put("ramCacheRWI", sb.getConfig("ramCacheRWI", "0"));
prop.put("ramCacheRWI", Long.parseLong(sb.getConfig("ramCacheRWI", "0")) / KB);

req = switchboard.cacheManager.dbSize();
chk = switchboard.cacheManager.dbCacheChunkSize();
slt = switchboard.cacheManager.dbCacheFillStatus();
calc(); putprop(prop, "HTTP");
prop.put("ramCacheHTTP", sb.getConfig("ramCacheHTTP", "0"));
prop.put("ramCacheHTTP", Long.parseLong(sb.getConfig("ramCacheHTTP", "0")) / KB);

req = switchboard.urlPool.loadedURL.urlHashCache.size();
chk = switchboard.urlPool.loadedURL.urlHashCache.cacheChunkSize();
slt = switchboard.urlPool.loadedURL.urlHashCache.cacheFillStatus();
calc(); putprop(prop, "LURL");
prop.put("ramCacheLURL", sb.getConfig("ramCacheLURL", "0"));
prop.put("ramCacheLURL", Long.parseLong(sb.getConfig("ramCacheLURL", "0")) / KB);

req = switchboard.urlPool.noticeURL.urlHashCache.size();
chk = switchboard.urlPool.noticeURL.urlHashCache.cacheChunkSize();
slt = switchboard.urlPool.noticeURL.urlHashCache.cacheFillStatus();
calc(); putprop(prop, "NURL");
prop.put("ramCacheNURL", sb.getConfig("ramCacheNURL", "0"));
prop.put("ramCacheNURL", Long.parseLong(sb.getConfig("ramCacheNURL", "0")) / KB);

req = switchboard.urlPool.errorURL.urlHashCache.size();
chk = switchboard.urlPool.errorURL.urlHashCache.cacheChunkSize();
slt = switchboard.urlPool.errorURL.urlHashCache.cacheFillStatus();
calc(); putprop(prop, "EURL");
prop.put("ramCacheEURL", sb.getConfig("ramCacheEURL", "0"));
prop.put("ramCacheEURL", Long.parseLong(sb.getConfig("ramCacheEURL", "0")) / KB);

req = yacyCore.seedDB.sizeConnected() + yacyCore.seedDB.sizeDisconnected() + yacyCore.seedDB.sizePotential();
chk = yacyCore.seedDB.dbCacheChunkSize();
slt = yacyCore.seedDB.dbCacheFillStatus();
calc(); putprop(prop, "DHT");
prop.put("ramCacheDHT", sb.getConfig("ramCacheDHT", "0"));
prop.put("ramCacheDHT", Long.parseLong(sb.getConfig("ramCacheDHT", "0")) / KB);

req = switchboard.messageDB.size();
chk = switchboard.messageDB.dbCacheChunkSize();
slt = switchboard.messageDB.dbCacheFillStatus();
calc(); putprop(prop, "Message");
prop.put("ramCacheMessage", sb.getConfig("ramCacheMessage", "0"));
prop.put("ramCacheMessage", Long.parseLong(sb.getConfig("ramCacheMessage", "0")) / KB);

req = switchboard.wikiDB.sizeOfTwo();
chk = switchboard.wikiDB.dbCacheChunkSize();
slt = switchboard.wikiDB.dbCacheFillStatus();
calc(); putprop(prop, "Wiki");
prop.put("ramCacheWiki", sb.getConfig("ramCacheWiki", "0"));
prop.put("ramCacheWiki", Long.parseLong(sb.getConfig("ramCacheWiki", "0")) / KB);

req = yacyCore.newsPool.dbSize();
chk = yacyCore.newsPool.dbCacheChunkSize();
slt = yacyCore.newsPool.dbCacheFillStatus();
calc(); putprop(prop, "News");
prop.put("ramCacheNews", sb.getConfig("ramCacheNews", "0"));
prop.put("ramCacheNews", Long.parseLong(sb.getConfig("ramCacheNews", "0")) / KB);

// return rewrite values for templates
return prop;
Expand All @@ -173,8 +179,8 @@ private static void putprop(serverObjects prop, String db) {
prop.put("slhig" + db, slt[1]);
prop.put("slmed" + db, slt[2]);
prop.put("sllow" + db, slt[3]);
prop.put("used" + db, usd);
prop.put("good" + db, god);
prop.put("best" + db, bst);
prop.put("used" + db, usd / KB);
prop.put("good" + db, god / KB);
prop.put("best" + db, bst / KB);
}
}

0 comments on commit 2f732e3

Please sign in to comment.